GreptimeTeam / greptimedb

An open-source, cloud-native, distributed time-series database with PromQL/SQL/Python supported. Available on GreptimeCloud.
https://greptime.com/
Apache License 2.0
3.96k stars 282 forks source link
analytics cloud-native database distributed iot metrics monitoring rust sql time-series timeseries tsdb

GreptimeDB Logo

Cloud-scale, Fast and Efficient Time Series Database

GreptimeCloud | User guide | API Docs | Roadmap 2024

Version Releases Docker Pulls GitHub Actions Codecov License
Slack Twitter LinkedIn
## Introduction **GreptimeDB** is an open-source time-series database focusing on efficiency, scalability, and analytical capabilities. Designed to work on infrastructure of the cloud era, GreptimeDB benefits users with its elasticity and commodity storage, offering a fast and cost-effective **alternative to InfluxDB** and a **long-term storage for Prometheus**. ## Why GreptimeDB Our core developers have been building time-series data platforms for years. Based on our best-practices, GreptimeDB is born to give you: * **Easy horizontal scaling** Seamless scalability from a standalone binary at edge to a robust, highly available distributed cluster in cloud, with a transparent experience for both developers and administrators. * **Analyzing time-series data** Query your time-series data with SQL and PromQL. Use Python scripts to facilitate complex analytical tasks. * **Cloud-native distributed database** Fully open-source distributed cluster architecture that harnesses the power of cloud-native elastic computing resources. * **Performance and Cost-effective** Flexible indexing capabilities and distributed, parallel-processing query engine, tackling high cardinality issues down. Optimized columnar layout for handling time-series data; compacted, compressed, and stored on various storage backends, particularly cloud object storage with 50x cost efficiency. * **Compatible with InfluxDB, Prometheus and more protocols** Widely adopted database protocols and APIs, including MySQL, PostgreSQL, and Prometheus Remote Storage, etc. [Read more](https://docs.greptime.com/user-guide/clients/overview). ## Try GreptimeDB ### 1. [GreptimePlay](https://greptime.com/playground) Try out the features of GreptimeDB right from your browser. ### 2. [GreptimeCloud](https://console.greptime.cloud/) Start instantly with a free cluster. ### 3. Docker Image To install GreptimeDB locally, the recommended way is via Docker: ```shell docker pull greptime/greptimedb ``` Start a GreptimeDB container with: ```shell docker run --rm --name greptime --net=host greptime/greptimedb standalone start ``` Read more about [Installation](https://docs.greptime.com/getting-started/installation/overview) on docs. ## Getting Started * [Quickstart](https://docs.greptime.com/getting-started/quick-start/overview) * [Write Data](https://docs.greptime.com/user-guide/clients/overview) * [Query Data](https://docs.greptime.com/user-guide/query-data/overview) * [Operations](https://docs.greptime.com/user-guide/operations/overview) ## Build Check the prerequisite: * [Rust toolchain](https://www.rust-lang.org/tools/install) (nightly) * [Protobuf compiler](https://grpc.io/docs/protoc-installation/) (>= 3.15) * Python toolchain (optional): Required only if built with PyO3 backend. More detail for compiling with PyO3 can be found in its [documentation](https://pyo3.rs/v0.18.1/building_and_distribution#configuring-the-python-version). Build GreptimeDB binary: ```shell make ``` Run a standalone server: ```shell cargo run -- standalone start ``` ## Extension ### Dashboard - [The dashboard UI for GreptimeDB](https://github.com/GreptimeTeam/dashboard) ### SDK - [GreptimeDB Go Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-go) - [GreptimeDB Java Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-java) - [GreptimeDB C++ Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-cpp) - [GreptimeDB Erlang Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-erl) - [GreptimeDB Rust Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-rust) - [GreptimeDB JavaScript Ingester](https://github.com/GreptimeTeam/greptimedb-ingester-js) ### Grafana Dashboard Our official Grafana dashboard is available at [grafana](grafana/README.md) directory. ## Project Status The current version has not yet reached General Availability version standards. In line with our Greptime 2024 Roadmap, we plan to achieve a production-level version with the update to v1.0 in August. [[Join Force]](https://github.com/GreptimeTeam/greptimedb/issues/3412) ## Community Our core team is thrilled to see you participate in any ways you like. When you are stuck, try to ask for help by filling an issue with a detailed description of what you were trying to do and what went wrong. If you have any questions or if you would like to get involved in our community, please check out: - GreptimeDB Community on [Slack](https://greptime.com/slack) - GreptimeDB [GitHub Discussions forum](https://github.com/GreptimeTeam/greptimedb/discussions) - Greptime official [website](https://greptime.com) In addition, you may: - View our official [Blog](https://greptime.com/blogs/) - Connect us with [Linkedin](https://www.linkedin.com/company/greptime/) - Follow us on [Twitter](https://twitter.com/greptime) ## License GreptimeDB uses the [Apache License 2.0](https://apache.org/licenses/LICENSE-2.0.txt) to strike a balance between open contributions and allowing you to use the software however you want. ## Contributing Please refer to [contribution guidelines](CONTRIBUTING.md) and [internal concepts docs](https://docs.greptime.com/contributor-guide/overview.html) for more information. ## Acknowledgement Special thanks to all the contributors who have propelled GreptimeDB forward. For a complete list of contributors, please refer to [AUTHOR.md](AUTHOR.md). - GreptimeDB uses [Apache Arrow™](https://arrow.apache.org/) as the memory model and [Apache Parquet™](https://parquet.apache.org/) as the persistent file format. - GreptimeDB's query engine is powered by [Apache Arrow DataFusion™](https://arrow.apache.org/datafusion/). - [Apache OpenDAL™](https://opendal.apache.org) gives GreptimeDB a very general and elegant data access abstraction layer. - GreptimeDB's meta service is based on [etcd](https://etcd.io/). - GreptimeDB uses [RustPython](https://github.com/RustPython/RustPython) for experimental embedded python scripting.