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

Database Entry

LinDB


LinDB is a distributed time-series DBMS written in Go. It is optimized especially for real-time writing and retrieval tasks, and is used internally by ELEME Inc. The internal version is Java based, however open sourced version is redesigned in Go. It requires Zookeepers to store cluster metadata.

Source Code
https://github.com/lindb/lindb[01]
Developer
Country of Origin
CN
Start Year
2019 [05]
Project Type
Open Source
Written in
Go
Supported Languages
SQL
Embeds / Uses
etcd
Inspired By
InfluxDB
License
Apache v2

Database Entry

LinDB


LinDB is a distributed time-series DBMS written in Go. It is optimized especially for real-time writing and retrieval tasks, and is used internally by ELEME Inc. The internal version is Java based, however open sourced version is redesigned in Go. It requires Zookeepers to store cluster metadata.

History


Companies like ELEME Inc. need to monitor all its systems, which calls for DBMS capable of saving multi dimension monitoring metrics for several PB per day. Previously the company use graphite, however its performance downgrades when the dimension of the metrics increases. LinDB is developed to address this demand. The project is launched at 2016 internally, and has been updated three versions. The open sourced version is a redesign and rewrite in Go since 2019, however is not in production stage yet.

Compression[03][04]


LinDB uses a combination of bitmap encoding and data compression. Since it is designed for time-series data, all data entry contains a timestamp and several multi dimensional metrics, such as ip string, shard id, etc. The timestamp is saved with a base timestamp and a bitmap with each bit encoding a time within some time period following the base timestamp. The data blocks are compressed with xor, in reference to Gorilla.

Concurrency Control[04]


Concurrency control is not supported. All writing to the DB is first directed to the specific shard based on its tagKey and tagValue. Within each shard all writing is handled by a single thread.

Data Model


Query Interface


SQL

System Architecture


Citations

5 sources
  1. GitHub - lindb/lindb: LinDB is a scalable, high performance, high availability distributed time series database. · GitHub github.com
  2. Home · lindb/lindb Wiki · GitHub github.com
  3. http://www.vldb.org/pvldb/vol8/p1816-teller.pdf vldb.org Dead — Check Archive
  4. https://zhuanlan.zhihu.com/p/35998778 zhihu.com Dead — Check Archive
  5. Initial commit github.com
Revision #4 Last Updated: