Skip to content

shanling2004/Akumuli

 
 

Repository files navigation

README Build Status Coverity Scan Build Status Join the chat at https://gitter.im/akumuli/Akumuli

Akumuli is a time-series database for modern hardware. 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".

Features

  • True column-oriented format (not PAX).
  • Based on novel LSM and B+tree hybrid datastructure with multiversion concurrency control (no concurrency bugs, parallel writes, optimized for SSD and NVMe).
  • Crash safety and recovery.
  • Fast aggregation without pre-configured rollups or materialized views.
  • Queries can be executed without decompressing the data.
  • Fast 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 and HTTP.
  • Fast range scans and joins, read speed doesn't depend on database cardinality.
  • 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 are streamed to client using the chunked transfer encoding of the HTTP protocol.
  • Decompression algorithm and input parsers were fuzz-tested.
  • Grafana datasource plugin.
  • Fast and compact inverted index for series lookup.
Storage engine features Current version Future versions
Inserts In order Out of order
Updates - +
Deletes - +
MVCC + +
Compression + +
Tags + +
High-throughput ingestion + +
High cardinality - +
Crash recovery + +
Incremental backup - +
Clustering - +
Replication - +
ARM support + +
Windows support - +
Query language features Current version Future versions
Range scans + +
Merge series + +
Aggregate series + +
Merge & aggregate + +
Group-aggregate + +
Group-aggregate & merge + +
Join + +
Join & merge - +
Join & group-aggregate - +
Join & group-aggregate & merge - +
Filter by value + +
Filter & group-aggregate + +
Filter & join + +

Gettings Started

Supported Platforms

Pre-built Debian/RPM packages for the following platforms are available via packagecloud:

  • Ubuntu 14.04
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Debian Jessie
  • Debian Stretch
  • CentOS 7

Docker image is availabe through Docker Hub.

Tools for monitoring

Akumuli supports OpenTSDB telnet-style API for writing. This means that many collectors works with it without any trouble, for instance netdata, collectd, and tcollector. Grafana datasource plugin is availabe as well. Akumuli can be used as a long-term storage for Prometheus using akumuli-prometheus-adapter.

Google group

Packages

No packages published

Languages

  • C++ 56.8%
  • C 34.8%
  • Python 5.2%
  • CMake 1.9%
  • Shell 1.3%