Skip to content
LinDB is a scalable, high performance, high availability distributed time series database.
Go TypeScript JavaScript CSS ANTLR Makefile Other
Branch: develop
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
aggregation [refactor][memdb]: scan memeory database data by condition Feb 16, 2020
broker [refactor]: define field schema(field/primitive) in pb Feb 20, 2020
ci [feat][replication]: persist replica/ack index in storage server Dec 11, 2019
cmd [feat][config]: support init-config with comment Nov 23, 2019
config
constants [tsdb]: integration memory/index/meta database in shard Feb 18, 2020
coordinator [feat][tsdb]: semi-impl multi field file store layout Jan 11, 2020
flow [refactor][memdb]: scan memeory database data by condition Feb 16, 2020
kv [tsdb][inverted]: impl merge inverted index when do compact job Feb 26, 2020
mock
models [query]: integration new meta/index api in data search phase Feb 19, 2020
monitoring [refactor]: define field schema(field/primitive) in pb Feb 20, 2020
parallel [query]: integration new meta/index api in data search phase Feb 19, 2020
pkg [tsdb][metadb]: impl merge tag value trie when do compact job Feb 27, 2020
query [query]: impl group by query api Feb 26, 2020
replication [refactor]: define field schema(field/primitive) in pb Feb 20, 2020
rpc [refactor]: define field schema(field/primitive) in pb Feb 20, 2020
series [query]: impl group by query api Feb 26, 2020
service
sql [query]: integration new meta/index api in data search phase Feb 19, 2020
standalone [feat:#231][query]: group by search by tag keys over memory database Dec 4, 2019
storage [feat][query]: read data family data based on search condition Dec 20, 2019
tsdb
vendor [refactor]: refactor memory database storage layout based on memory m… Feb 12, 2020
web [fix]: snappy compress data error Dec 23, 2019
.codecov.yml [feat:#154][ui]: frontend integration for data search Oct 30, 2019
.gitignore
.golangci.yml [feat:#312][index]: impl tag metadata for gen tag value id Feb 7, 2020
CONTRIBUTING.md [docs:#132]: add simplified commit-message examples Aug 8, 2019
Dockerfile [fix]: fix docker file command problem Sep 19, 2019
LICENSE Initial commit Jun 13, 2019
Makefile [refactor]: split `tblstore` into different packages Nov 4, 2019
README-zh_CN.md
README.md [chore]: add github workflow status badge Dec 12, 2019
docker-compose.yml [feat:#99][build:docker]:add build lindb use docker Jul 26, 2019
docker.sh
go.mod [refactor]: refactor memory database storage layout based on memory m… Feb 12, 2020
go.sum [refactor]: refactor memory database storage layout based on memory m… Feb 12, 2020

README.md

LICENSE Language Go Report Card Github Actions Status Github Actions Status codecov contribution

English | 简体中文

What is LinDB?

LinDB is an 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.

  • High performance

    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.

  • High availability

    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;

  • Horizontal scalability

    Series(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 and August, we will translate the JAVA version of LinDB currently used under the production environment to Golang as soon as possible. The GO version is not only a simple translation of the JAVA version, but has been redesigned in many aspects.

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.

Build(TODO)

Architecture

architecture

Contributing

Contributions are welcomed and greatly appreciated. See CONTRIBUTING for details on submitting patches and the contribution workflow.

CI

Pull requests should be appropriately labeled, and linked to any relevant bug or feature tracking issues. All pull requests will run through GITHUB-Actions. Community contributors should be able to see the outcome of this process by looking at the checks on their PR and fix the build errors.

Static Analysis

This project uses the following linters. Failure during the running of any of these tools results in a failed build. Generally, code must be adjusted to satisfy these tools.

  • gofmt - Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification;
  • golint - Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes;
  • goimports - Goimports does everything that gofmt does. Additionally it checks unused imports;
  • errcheck - Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases;
  • gocyclo - Computes and checks the cyclomatic complexity of functions;
  • maligned - Tool to detect Go structs that would take less memory if their fields were sorted;
  • dupl - Tool for code clone detection;
  • goconst - Finds repeated strings that could be replaced by a constant;
  • gocritic - The most opinionated Go source code linter;

License

LinDB is under the Apache 2.0 license. See the LICENSE file for details.

You can’t perform that action at this time.