LinDB("Lin" stands for wisdom in Shanghainese) is a open-source Time Series Database which provides high performance, high availability and horizontal scalability.
LinDB stores all monitoring data of ELEME Inc, there is 88TB incremental writes per day and 2.7PB total raw data.
LinDB takes a lot of best practice of TSDB and implements some optimizations based on the characteristics of time series data.
Unlike writing a lot of Continuous-Query for InfluxDB, LinDB supports rollup in specific interval automatically after creating the database.
Moreover, LinDB is extremely fast for parallel querying and computing of distributed time series data.
Multi-Active IDCs native
LinDB is designed to work under a Multi-Active IDCs cloud architecture. The compute layer of LinDB, called brokers, supports efficient Multi-IDCs aggregation query.
LinDB uses the ETCD cluster to ensure the meta-data is highly available and safely stored.
In the event of failure, the Multi-channel replication protocol of WAL will avoid the problem of data inconsistency:
1). Only one person in each replication channel is responsible for the authority of the data, so the conflicts will not happen;
2). Data reliability is guaranteed: as long as the data that has not been copied in the old leader is not lost, it will be copied to other replication while the old leader is online again;
Tags based sharding strategy in LinDB solves the hotspots problem, and is truly horizontally expanded available by simply adding new broker and storage nodes.
Governance capability of metrics
To ensure the robustness of the system, LinDB do not assume that users has understood the best practices of using metrics, therefore, LinDB provides the ability of restricting unfriendly user based on metric granularity and tags granularity.
State of this project
The current develop branch is unstable and is not recommended for production use. LinDB 0.1(what will be the first release version) is currently in the development stage.
Additional features will arrive during July, we will translate the JAVA version of LinDB currently used under the production environment to Golang as soon as possible.
Once we implement the final feature and replace the LinDB under production environment with the Golang version, LinDB 0.1.0 will be released. At that point, we will move into the stable phase, our intention is to avoid breaking changes to the API and storage file format.