Akumuli is a numeric time-series database. It can be used to capture, store and process time-series data in real-time. The word "akumuli" can be translated from esperanto as "accumulate".
- Column-oriented time-series database.
- Log-structured append-only B+tree with multiversion concurrency control.
- Crash safety.
- Fast aggregation without pre-configured rollups or materialized views.
- Custom compression algorithm (dictionary + entropy) with small memory overhead (about 2.5 bytes per element on appropriate data).
- Compressed in-memory storage for recent data.
- Can be used as a server application or an embedded library.
- Simple query language based on JSON over HTTP.
- Fast data ingestion over the network:
- 4.5M data points per second on 8-core Intel Xeon E5-2670 v2 (m3.2xlarge EC2 instance).
- 16.1M data points per second on 32-core Intel Xeon E5-2680 v2 (c3.8xlarge EC2 instance).
- Query results returned using chunked transfer encoding at rate about 50MB/second (about 1M data points/second) per core.
You can install Akumuli on Ubuntu 14.04 using this deb repostory: https://packagecloud.io/Lazin/Akumuli or build it yourself. To create configuration file run
akumulid --init
The configuration file ~/.akumulid
will be created in your home directory. It will contain some default values that you can change. Most probably, you will need to change nvolumes
configuration parameter that contains the number of volumes that Akumuli should use to store data. Also, you may want to change path
parameter that contains path to database volumes.
After this you should run
akumulid --create
This step will create database files on disk. After this step you can run the database
akumuli
You should see this lines on the terminal:
OK HTTP server started, port: 8181
OK TCP server started, port: 8282
OK UDP server started, port: 8383
This means that database daemon have been started successfully.
- Run
prerequisites.sh
. It will try to do the best thing.
In case automatic script didn't work:
-
Boost:
sudo apt-get install libboost-all-dev
-
log4cxx:
sudo apt-get install log4cxx
-
jemalloc:
sudo apt-get install libjemalloc-dev
-
microhttpd:
sudo apt-get install libmicrohttpd-dev
-
APR:
sudo apt-get install libapr1-dev libaprutil1-dev libaprutil1-dbd-sqlite3
-
SQLite:
sudo apt-get install libsqlite3-dev
-
Cmake:
sudo apt-get install cmake
cmake .
make -j
- Run
prerequisites.sh
. It will try to do the best thing.
In case automatic script didn't work:
-
Boost:
sudo yum install boost boost-devel
-
log4cxx:
sudo yum install log4cxx log4cxx-devel
-
jemalloc:
sudo yum install jemalloc-devel
-
microhttpd:
sudo yum install libmicrohttpd-devel
-
APR:
sudo yum install apr-devel apr-util-devel apr-util-sqlite
-
SQLite
sudo yum install sqlite sqlite-devel
-
Cmake:
sudo yum install cmake
cmake .
make -j
make
- Same as for RHEL7, but we need to manually install log4cxx, as there isn't a package in the repos:
wget http://www.pirbot.com/mirrors/apache/logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz
tar -xzvf apache-log4cxx-0.10.0.tar.gz
cd apache-log4cxx-0.10.0
- Add
#include <cstring>
to:src/main/cpp/inputstreamreader.cpp
,src/main/cpp/socketoutputstream.cpp
andsrc/examples/cpp/console.cpp
- Add
#include <cstdio>
to:src/examples/cpp/console.cpp
./configure --prefix=/usr --libdir=/usr/lib64
make -j4
sudo make install
- Go on as for RHEL7