Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 2.14 KB

README.md

File metadata and controls

60 lines (44 loc) · 2.14 KB

Time Series Database Survey

This folder contains survey on implementation of various TSDBs.

TODO

Databases

  • crates (java)
  • questdb (java)
  • influxdb
  • prometheus
    • victoriametrics
    • thanos (and another one ... forgot the name from weaveworks)
  • m3db
  • akumuli, btrdb (both are tree like)
  • timescaledb (and others on pg, most of them are dead so ...)
  • druid alike (linkedin also got one)
  • graphite (and newer backends)
  • mysql
  • elasticsearch
  • crate (it looks pretty good, though it seems it is bought by some other company)

Format

Required list in README

  • link to awesome tsdb, which should contain basic meta data.
  • link to required files within the folder
  • a short overview
  • highlight in this database
  • design flaw/limitation

Required files for describing each database.

Code walk through

  • read.md Read path, link to source w/ commit hash.
  • write.md Write path, link to source w/ commit hash.

API

  • protocol.md Wire protocol format and transport, mainly about write because many TSDB have dedicated query language.
  • query-language.md Query language.

Internal

  • model.md General data model, what is a time series for this TSDB (yeah, this definition varies).
  • compression.md Compression related algorithm or code.
  • query-execution.md Query execution and optimization, especially for those with query language and distributed ones.
  • storage-engine.md Only applies to TSDB w/ their own storage format, i.e. write opaque blob to local fs or object store.
  • schema.md Only applies to TSDB w/ underlying database i.e. Cassandra, ElasticSearch
  • distributed.md Only applies to distributed TSDB, replication model, consensus protocol. Including those built on top of distributed data store i.e. Cassandra, S3.

Operation

  • build.md How to build from source locally
  • docker.md How to run it using docker(-compose) locally
  • config.md Config file example, how to config the system (underlying database, operating system) properly
  • k8s.md How to run it on k8s, operator and special things about their operator e.g. local volume