DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

InfluxDB


InfluxDB is an open source time series database built by InfluxData. Optimized for the storage and retrieval of time series data, it is used for monitoring and recording performance metrics and analytics. InfluxDB is written Go and has no external dependencies.[03]

Source Code
https://github.com/influxdata/influxdb[02]
Developer
Country of Origin
US
Start Year
2013
Project Types
Commercial, Open Source
Written in
Go
License
MIT License

Database Entry

InfluxDB


InfluxDB is an open source time series database built by InfluxData. Optimized for the storage and retrieval of time series data, it is used for monitoring and recording performance metrics and analytics. InfluxDB is written Go and has no external dependencies.[03]

History[05]


InfluxDB was created by Errplane in late 2013. Backed by Y Combinator, Errplane was initially a SaaS company centered on anomaly detection in data. After discovering a huge gap in the market, the company pivoted to focusing on their open source time series database–this eventually became InfluxDB, and Errplane rebranded to become InfluxData Inc.

Compression[06][07]


Compression strategy varies based on the shape of the data–for instance, with timestamps, run length encoding is used in the best case, Simple8B used in a good case, and raw value encoding is used for the worst case. Snappy, a dictionary compression scheme, is used for strings.

Data Model[08]


Each measurement has a timestamp along with an associated set of tags (tagset) and set of fields (fieldset). Tagset values are represented as strings and are indexed, while fieldset values can be floats, ints, strings, and booleans and cannot be not indexed.

Foreign Keys


InfluxDB does not support foreign keys.

Indexes[07][09]


InfluxDB utilizes TSI (Time Series Index), which is based on the log-structured merge tree.

Joins


Query Compilation


Query Execution[10]


Query Interface[11][10]


The HTTP API is the primary way to query data; a variation of SQL called influxql can be used to query as well. A new custom query language called Flux is currently being developed.

Storage Architecture[09]


The Time Series Index stores index on data on disk.

Storage Model[12]


Storage Organization[13]


InfluxDB uses the Time-Structured Merge Tree (TSM) organizational structure; each TSM file contains compressed and sorted series data.

Stored Procedures


Views[14]


InfluxDB supports continuous queries, which are conceptually similar to materialized views in that expensive query results are precomputed and stored.

Citations

14 sources
  1. InfluxData influxdb.com
  2. GitHub - influxdata/influxdb: Scalable datastore for metrics, events, and real-time analytics · GitHub github.com
  3. InfluxDB OSS v1 Documentation influxdata.com
  4. InfluxDB - Wikipedia wikipedia.org
  5. Errplane Snags $8.1M To Continue Building Open Source InfluxDB Time Series Database | TechCrunch techcrunch.com
  6. https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/ influxdata.com
  7. Inside the InfluxDB storage engine | PDF slideshare.net
  8. InfluxDB schema design and data layout | InfluxDB OSS v1 Documentation influxdata.com
  9. Time Series Index (TSI) details | InfluxDB OSS v1 Documentation influxdata.com
  10. InfluxDB Internals 101 - Part Two | InfluxData influxdata.com
  11. Why We're Building Flux, a New Data Scripting and Query Language | InfluxData influxdata.com
  12. https://www.influxdata.com/blog/influxdb-internals-101-part-one/ influxdata.com Dead — Check Archive
  13. In-memory indexing and the Time-Structured Merge Tree (TSM) | InfluxDB OSS v1 Documentation influxdata.com
  14. https://www.influxdata.com/blog/continuous-queries-in-influxdb-part-i/ influxdata.com
Revision #8 Last Updated: