A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | read this blog before commenting | InfluxDB | VictoriaMetrics | TimescaleDB | Prometheus | Atlas | Riak TS | OpenTSDB | KairosDB | Elasticsearch | Druid | M3DB | Blueflood | Graphite (whisper) | Chronix Server | Hawkular | Warp 10 (distributed) | Heroic | Akumuli | BtrDB | MetricTank | Tgres | Gnocchi | DalmatinerDB | |||||||
2 | Website | https://influxdata.com/ | https://victoriametrics.com/ | https://www.timescale.com/ | https://prometheus.io/ | https://github.com/Netflix/atlas | http://basho.com/products/riak-ts/ | http://opentsdb.net/ | https://kairosdb.github.io/ | https://www.elastic.co/products/elasticsearch | http://druid.io/ | https://m3db.io/ | http://blueflood.io/ | https://graphiteapp.org/ | http://www.chronix.io/ | http://www.hawkular.org/ | http://www.warp10.io/ | https://spotify.github.io/heroic | http://akumuli.org/ | http://btrdb.io/ | https://github.com/raintank/metrictank | https://github.com/tgres/tgres | http://gnocchi.xyz | https://dalmatiner.io/ | |||||||
3 | Description | Performant and simple to use time series database | Open-source TSDB written in Go and based on ideas from Clickhouse DB, supporting an extended PromQL query language. Primarily designed for high-cardinality metrics and supporting long term Prometheus storage | Fast, flexible, and, reliable open-source time-series database powered by PostgreSQL. TimescaleDB natively supports full SQL and connects to the entire Postgres ecosystem of tools and connectors, including Kafka for real-time streaming, Prometheus for long-term metrics storage, and PostGIS for geo-temporal use cases. | An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. | In memory database built for an extreme volume of metrics with real time search over 2 - 3 weeks of historic data | Enterprise grade time series database engineered to be faster than Cassandra | Stores and serves massive amounts of time series data without losing granularity. | Fast Time Series Database on top of Cassandra. | Distributed, scalable, and highly available lucene based document store. Built for full text searches over event data. | High-performance, column-oriented, distributed data store. | M3DB, inspired by Gorilla and Cassandra, is a distributed time series database released as open source by Uber Technologies. It can be used for storing realtime metrics at long retention. | Multi-tenant distributed metric processing system. | Graphite is an enterprise-ready monitoring tool that runs equally well on cheap hardware or Cloud infrastructure. | Fast and efficient time series storage based on Apache Lucene and Apache Solr. | Hawkular Metrics is a scalable, asynchronous, multi tenant, long term metrics storage engine that uses Cassandra as the data store and REST as the primary interface. | The differentiating factor of Warp 10 is that both space (location) and time are considered first class citizens. | Large scale time series database written by Spotify | Fast, efficient, standalone time series database written in C++ | Very fast storage of scalar-valued timeseries data. | Cassandra-backed, metrics2.0 based, multi-tenant timeseries database for Graphite and friends | (Still under development) PostgreSQL-backend Golang implementation of most of Graphite API and Statsd. Internally borrows a lot from RRDTool. | Gnocchi is a multi-tenant timeseries, metrics and resources database | Fast distributed purpose built metric store | |||||||
4 | Category | Real-time Analytics | Real-time Analytics | Real-time Analytics | Monitoring System | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Search | Batch Analytics | Real-Time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Batch and Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | Real-time Analytics | |||||||
5 | Supported Measurements | metrics, events | metrics | metrics, events | metrics | metrics | metrics | metrics | metrics | metrics, events | metrics | metrics | metrics | metrics | metrics | metrics, events | metrics, events | metrics, events | metrics | metrics | metrics | metrics | metrics | ||||||||
6 | Consistency Model (CAP theorem) | - | AP | CP (Acid) | - | AP | AP | AP | AP | CP (weak consistency) | AP | AP | - | AP | AP | AP | AP | - | AP | AP | CP | AP (EC) | |||||||||
7 | Sharding and Replication | Manual | Automatic sharding, no replication | Replication (primary / multiple replicas) | Manual (supports federation) | Automatic | Automatic | Automatic | Automatic | Automatic | Automatic | Automatic | Manual | Automatic | Automatic | Automatic | Automatic | Manual | Automatic | Manual | Replication (master / slave) | Automatic | |||||||||
8 | High Availability (HA) | Double writing 2 servers | Clustering | Yes | Double writing 2 servers | Clustering | Clustering | Clustering | Clustering | Clustering | Clustering | Clustering | Manual | Clustering | Clustering (multi-dc) | Clustering | Clustering | Manual | Clustering | Manual | Failover | Clustering | |||||||||
9 | Underlying Technology | Golang | Golang | PostgreSQL | Golang | Scala, S3, EMR | Erlang, Riak KV | Java, Hadoop | Java, Cassandra | Java | Java, Zookeeper, Postgres/MySQL, HDFS/S3 | Java, Cassandra, Elasticsearch | Python | Java, Solr | Java, Cassandra | Java, Hbase, Kafka, Zookeeper | Java, Cassandra, Kafka, Zookeeper, Elasticsearch | C++ | Golang, MongoDB, Ceph (optional) | Golang, Cassandra, Elasticsearch (optional) | Golang, PostgreSQL | Python, Ceph | Erlang, Riak Core, ZFS, PostgreSQL | ||||||||
10 | Operational Complexity | Low (medium with HA) | Low (medium with HA) | Low (Medium with HA) | Low | High | Medium | High | Medium | Medium | High | High | Medium | High | Medium | High | High | Low | Medium | Medium | Medium | Medium | |||||||||
11 | Storage Backend | Custom | Custom | PostgreSQL | Custom | Custom | leveldb | Hadoop (Columnar) | Cassandra (Columnar) | Document | Columnar | Cassandra (Columnar) | Custom | Document | Cassandra (Columnar) | HBase (Columnar) | Cassandra (Columnar) | Custom | Custom | Cassandra (Columnar) | PostgreSQL arrays | File (default), Ceph, OpenStack Swift, S3 or Redis | Custom | ||||||||
12 | Supported Data Types | int64, float64, bool, and string | float64 | All PostreSQL Data Types | float64 | float64 | string, int64, double, bool, timestamp | int64, float32, float64 | string, float32, float64 | string, int32, int64, float32, float64, bool, null | int32, float64 | float64 | float64 | float64 | float32, float64, string | int64, float64, bool, string | float64, string | float64, string | float64 | float64 | float64 | float62, int56 | |||||||||
13 | Bytes per point after compression | 2.2 | 0.4-0.8 | Dependent on datatype and row size | 1.3 | 12 | 12 | 22 | 12 | 8 | 12 | 0.4 (with lossy compression) | 12 | 9 | 12 | 2.5 | 1.3 | 8 | 1 | ||||||||||||
14 | Metric Precision | nano second | milli second | nano second | milli second | milli second | milli second | milli second | milli second | milli second | milli second | milli second | second | milli second | milli second | nano second | milli second | nano second | nano second | second | millisecond | variable per bucket (milli second) | |||||||||
15 | Recording type | events | timestamped events | Fixed Interval or Events | fixed interval | events | fixed interval | fixed interval | events | fixed interval | fixed interval | fixed interval | events | fixed interval | fixed interval | ||||||||||||||||
16 | Write Performance - Single Node | 470k metrics / sec (custom HW) | 800k-19M metrics/sec | 800k metrics / sec | 32k metrics / sec (calculated 130/5/0.8) | 32k metrics / sec (calculated 16*2k) | 60k metrics / sec | 30k metrics / sec | 25k metrics / sec | 60k metrics / sec | 300k metrics / sec | 60k metrics / sec | 60k metrics / sec | 2 million metrics / sec | 60k metrics / sec | 2.5 - 3.5 million metrics / sec | |||||||||||||||
17 | Write Performance - 5 Node Cluster | - | - | - | N/A | 130k metrics / sec | 128k metrics / sec (calculated 1 server * 5 * 0.8) | 250k metrics / sec (calculated) | 120k metrics / sec (calculated) | 100k metrics / sec (calculated) | 250k metrics / sec (calculated) | - | 250k metrics / sec | 250k metrics /sec | - | 250k metrics /sec | 15 - 20 million metrics / sec (calculated based on past tests) | ||||||||||||||
18 | Query Performance | Medium to Fast | Extremely Fast | Moderate | Extemely Fast | Moderate | Moderate | Slow | Moderate | Moderate | Slow | Moderate | Slow | moderate | Fast | ||||||||||||||||
19 | Query Language | InfluxQL (SQL like) | PromQL with extensions | SQL | PromQL | stack language | SQL subset | lookup only | lookup only | Query DSL | lookup only | lookup only | lookup only | Solr query | lookup only | Warpscript | HQL | JSON based query DSL - select, aggregate, join, filter | lookup only | Graphite-like DSL | Graphite-like DSL, SQL | DQL (SQL like) | |||||||||
20 | Data Model | metric names, fields, labels | metric names, labels | Relational Tables | metric names, labels | metric names, labels | metric names, labels | metric names, labels | metric names, labels | metric names, labels | metric names, labels | metric names | metric names | metric names, labels | metric names, labels | metric names, labels, attributes | metric names, labels | metric names, labels | metric names, labels | metric names, labels | metric names | metric names, namespaced dimensions | |||||||||
21 | Ingress | InfluxDB (http), InfluxDB (udp), OpenTSDB (text), OpenTSDB (http), Graphite (text) and a few others | Prometheus remote_write API, Influx line protocol (http), Graphite plaintext protocol (tcp, udp), OpenTSDB put protocol (http, tcp, udp) | udp, tcp, http, jdbc/odbc, SQL, others that connect to Postgres | scraping (text, protobuff) | http | tcp (text, protobuff) | http, tcp(text) | tcp (text protocol), http | http | http | http, udp (text protocol) | udp (text protocol), tcp (text protocol, pickle), pickle | http | http | http | kafka, binary (collectd binary protocol) | tcp (redis text protocol) | tcp (capn proto) | udp (graphite), udp (statsd), tcp (graphite), http (pixel), pickle (graphite) | tcp (binary protocol), OpenTSDB (text), Graphite (text), Prometheus (text), Metrics 2.0 (text), InfluxDB (http) | ||||||||||
22 | Egress | http | http | SQL, jdbc/odbc, Postgres | http | http | tcp (text, protobuff) | http | http | http | http | http | http | http | http | http | http | http | http, tcp (capn proto) | http | http, postgres | http, tcp raw binary (no dql) | |||||||||
23 | Query Language Functionality | 4/5 | 5/5 | 4/5 | 5/5 | 2/5 | 3/5 | 3/5 | 3/5 | 4/5 | 1/5 | 3/5 | 3/5 | 3/5 | 5/5 | 3/5 | 2/5 | 1/5 | 3/5 | 3/5 | 3/5 | ||||||||||
24 | Query Language Usability | 5/5 | 4/5 | 5/5 | 4/5 | 1/5 | 4/5 | 1/5 | 1/5 | 3/5 | 4/5 | 1/5 | 4/5 | 3/4 | 1/5 | 1/5 | 4/5 | 1/5 | 1/5 | 4/5 | 4/5 | 4/5 | |||||||||
25 | Dynamic Cluster Management | - | Yes | - | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes | Yes | Yes | No | No | No | Yes | ||||||||||||
26 | Continuous Query / Rollups / Downsampling | Yes | No | Yes | Yes | No | No | No | No | No | No | No | Yes (rollups, downsampling) | No | Yes (downsampling) | Yes | No | Yes (continuous queries) | No | No | No | ||||||||||
27 | Security and ACL's | Yes | No | Yes | No | No | No | No | No | Yes | No | No | No | No | No | Yes | No | No | No | No | No | ||||||||||
28 | Data TTL (retention policy) | per database (retention policy) | per database (retention policy) | Yes, drops chunks | global | global | none | per metric | per metric | none | global | global, per metric (regex) | global | per tenant | Yes | global | none | No | global | Round-Robin, per metric | per bucket | ||||||||||
29 | Commercial Support | Yes | Yes | Yes | Yes | No | Yes | No | No | No | No | No | No | No | No | Yes | No | No | No | No | No | Yes | |||||||||
30 | Commercial Support Link | https://portal.influxdata.com/ | info@victoriametrics.com | https://www.timescale.com/pricing | http://www.robustperception.io/ | - | http://basho.com/contact/ | - | - | https://www.elastic.co/subscriptions | - | - | - | - | - | http://www.cityzendata.com/ | - | - | - | - | - | https://project-fifo.net/#support | |||||||||
31 | Community Size | large | medium | medium | large | small | medium | medium | small | large | medium | small | large | small | medium | medium | small | small | small | small | tiny | small | |||||||||
32 | License | MIT | Apache 2 | Apache 2.0 | Apache 2 | Apache 2 | Apache 2 | LGPLv2.1+ and GPLv3+. | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | Apache 2 | GPL 3 | AGPL 3 | Apache 2 | Apache 2 | MIT | ||||||||
33 | Latest Version | v1.3.5 | v1.28.0 | v1.0.0-rc2 | v2.0.0-beta.2 | v1.5 | v1.4 | v2.3.0 | v1.1 | v5 | v0.9 | v2 | v0.9 | v0.3 | v0.18 | v1.2.1 | - | v0.3 | v3.4 | v0.5.2 | - | v4.0.2 | v0.2.1 | ||||||||
34 | Maturity | Stable | Stable | Stable | Stable | Stable | Early adopter | Stable | Stable | Stable | Stable | Early adopter | Stable | Early Adopter | Early Adopter | Stable | Early Adopter | Early Adopter | Very Early Adopter | Very Early Adopter | Very Early Adopter | Stable | Early adopter | ||||||||
35 | Pro's | Easy to operate, highly customisable, lots of cool features and good performance on a single node. Documentation is well polished. The best option if you only want TSDB features and don't need to horizontally scale. | Easy to configure and operate, fast, scales vertically and horizontally, free cluster version, has good on-disk compression rate, can be used as Prometheus remote storage, can be queried with PromQL, has good integration with Prometheus+Grafana stack | Easy to operate, good data model, high performance, lots of query functionality. The best option if you want an all in one monitoring system with a few weeks of history. Fits in really well with the container ecosystem. | Very fast and highly scalable if you have lots of money for ram. Probably good if you are Netflix or Facebook (who created Gorilla which looks similar but isn't open sourced yet). | Extremely simple to operate, good set of features and moderate performance. Documentation and community looks good. Based on Riak KV which is excellent. | Tried and tested and scales reasonably well. Was one of the first databases to use metric labels in its data model. | Reasonable to operate, moderately fast writes and good data model. | Easy to operate, highly customisable, moderately fast. A good option if you already have Elasticsearch in-house and don't have too much data or high performance requirements. | Good data model and cool set of analytics features. Mostly designed for fast queries over large batch loaded data sets which it's great at. | Good performance, highly scalable | Simple to operate. Very popular online so lots of helpful blogs. The data isn't dimensional but the Graphite API makes up for some of that. | Some cutting edge ideas like semantic compression and analysis functions that can search for similar metrics. | Backed by Redhat and used in ManageIQ so should be good quality. | Looks good for sensor data use cases given the geo features. Extremely powerful query language. Has security ACL's which is rare. You can also setup runners to execute WarpScript jobs to do rollups and downsampling and a bunch of other stuff. | The transparent federation between clusters is pretty cool. Heroic has the concept of 'suggestions' to help browse the data easily. | Incredibly fast for reads and writes. Storage compression is also impressive. Looks like a well designed database. Has some cool analytics features for anomaly detection. Looks like a great database to use alongside a C++ app. | Exciting to see research on different time series storage mechanisms. Not yet released fully so need a bit more info than the current docs provide. | The native metrics v2.0 support could be cool in future if Grafana can make use of it to improve widgets (and alerts when that's released). | PostgreSQL. Should out perform Graphite/Statsd on incoming data. Data can share the database with your application(s), tgres can be used as a Go package to easily add TS functionality to any program. There is work under way to add tags. As Tgres is agnostic to what happens at the Postgres layer there are options for active-active clustering. | Reasonable to operate and scale (built on well known mature technologies). Clustering and fault tolerance is a first class citizen. High performance reads and writes and expressive query language. A steadily growing number of functions. The best option if you want TSDB features and need to scale to high reads and writes in future. | ||||||||||
36 | Con's | History of bugs and breaking changes although seems better recently. Clustering no longer developed in open source edition which would make it terribly difficult to scale. | Very new database, still under rapid development and a few production workloads | Clustering has not yet been released but is under active development. TimescaleDB leverages the relational data model, storing data in row format, and does not perform as well on compression. | More than just a TSDB and not designed to be used as a backend. Designed to use alternative backend for long term storage which is a pro for a resilient monitoring system but a con for time series database comparison. | In memory queries mean atlas is only good for near real time (a few weeks of data). Query language is a bit weird. More of the Netflix software around the edges of Atlas needs to be released to make it work well. | Very new database. Unknown storage efficiency. | Painful to operate. The Hadoop dependency usually scares most people away. | Quite slow to query. Storage is slightly inefficient. | Wasn't really designed for time series. Inefficient storage. | Painful to operate, not very fast write throughput. Real time ingestion is tricky to setup. | Outdated data model. Needs to support labels to move up the ranking. | Outdated data model. Scaling it is dreadful. | Very new project. Difficult to work out write performance from figures in presentations. Query performance benchmarks appear to be on a relatively small data set. | Same as all of the other Cassandra backed time series databases. | No idea about performance. The distributed version depends on Hbase which can be onerous to operate. There is a standalone version based on LevelDB as an alternative. The query language may be an issue for people. See http://www.warp10.io/howto/from-influxdb/ for examples. | It's really new and there aren't any releases or even tags on Github, just commits to master. Not much data released in the way of benchmarks so I've estimated based on typical performance of Cassandra storage and Elasticsearch as an index. | Designed to be standalone. Still quite a new project although it looks pretty usable. Doesn't focus on a pretty query language so not quite as nice to use as something like InfluxDB. | Looks incredibly impressive on the page. However, I can't use any of the benchmark claims in the table. 16.7 million writes per second is in batches of 4k metrics. This massively inflates the numbers. Similarly I can't work out bytes per datapoint from the advertised 2.93x compression. | Very early stage so doesn't include a few features like clustering on top of Cassandra. No data around storage or any benchmarks although I would expect it to be comparable to other Cassandra implementations. Could use some features to alleviate the warming of in-memory metadata when adding nodes. | Clustering is still flimsy and shares the back-end PG instance. | Works best with locally attached storage (for ZFS). Erlang may make it harder for people to dig into the code and troubleshoot or submit changes. Not much community activity and the docs are all over the place. Client library support is limited, however, a metrics proxy supporting common protocols can be used. | |||||||||
37 | |||||||||||||||||||||||||||||||
38 | Leave a comment on a cell to contribute | ||||||||||||||||||||||||||||||
39 | |||||||||||||||||||||||||||||||
40 | Reproducible from the project docs | These fields contain links to benchmarking setup that will reproduce the advertised results | |||||||||||||||||||||||||||||
41 | Not reproducible from the project docs | Benchmark results published that can't be verified by an outside source either due to lack of information of crazy choice of hardware | |||||||||||||||||||||||||||||
42 | Random source | Provided by a 3rd party unverified source. Some databases based on Cassandra have been inferred from KairosDB and Blueflood results. | |||||||||||||||||||||||||||||
43 | |||||||||||||||||||||||||||||||
44 | |||||||||||||||||||||||||||||||
45 | |||||||||||||||||||||||||||||||
46 | |||||||||||||||||||||||||||||||
47 | |||||||||||||||||||||||||||||||
48 | |||||||||||||||||||||||||||||||
49 | |||||||||||||||||||||||||||||||
50 | |||||||||||||||||||||||||||||||
51 | |||||||||||||||||||||||||||||||
52 | |||||||||||||||||||||||||||||||
53 | |||||||||||||||||||||||||||||||
54 | |||||||||||||||||||||||||||||||
55 | |||||||||||||||||||||||||||||||
56 | |||||||||||||||||||||||||||||||
57 | |||||||||||||||||||||||||||||||
58 | |||||||||||||||||||||||||||||||
59 | |||||||||||||||||||||||||||||||
60 | |||||||||||||||||||||||||||||||
61 | |||||||||||||||||||||||||||||||
62 | |||||||||||||||||||||||||||||||
63 | |||||||||||||||||||||||||||||||
64 | |||||||||||||||||||||||||||||||
65 | |||||||||||||||||||||||||||||||
66 | |||||||||||||||||||||||||||||||
67 | |||||||||||||||||||||||||||||||
68 | |||||||||||||||||||||||||||||||
69 | |||||||||||||||||||||||||||||||
70 | |||||||||||||||||||||||||||||||
71 | |||||||||||||||||||||||||||||||
72 | |||||||||||||||||||||||||||||||
73 | |||||||||||||||||||||||||||||||
74 | |||||||||||||||||||||||||||||||
75 | |||||||||||||||||||||||||||||||
76 | |||||||||||||||||||||||||||||||
77 | |||||||||||||||||||||||||||||||
78 | |||||||||||||||||||||||||||||||
79 | |||||||||||||||||||||||||||||||
80 | |||||||||||||||||||||||||||||||
81 | |||||||||||||||||||||||||||||||
82 | |||||||||||||||||||||||||||||||
83 | |||||||||||||||||||||||||||||||
84 | |||||||||||||||||||||||||||||||
85 | |||||||||||||||||||||||||||||||
86 | |||||||||||||||||||||||||||||||
87 | |||||||||||||||||||||||||||||||
88 | |||||||||||||||||||||||||||||||
89 | |||||||||||||||||||||||||||||||
90 | |||||||||||||||||||||||||||||||
91 | |||||||||||||||||||||||||||||||
92 | |||||||||||||||||||||||||||||||
93 | |||||||||||||||||||||||||||||||
94 | |||||||||||||||||||||||||||||||
95 | |||||||||||||||||||||||||||||||
96 | |||||||||||||||||||||||||||||||
97 | |||||||||||||||||||||||||||||||
98 | |||||||||||||||||||||||||||||||
99 | |||||||||||||||||||||||||||||||
100 |