diff --git a/README.md b/README.md index b7381a1e4d..cd986e75ef 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@

Real-Time & Cloud-Native Observability Database
for metrics, logs, and traces

+> Delivers sub-second querying at PB scale and exceptional cost efficiency from edge to cloud. +

GreptimeCloud | @@ -49,74 +51,77 @@

- [Introduction](#introduction) -- [**Features: Why GreptimeDB**](#why-greptimedb) -- [Architecture](https://docs.greptime.com/contributor-guide/overview/#architecture) -- [Try it for free](#try-greptimedb) +- [⭐ Key Features](#features) +- [Quick Comparison](#quick-comparison) +- [Architecture](#architecture) +- [Try GreptimeDB](#try-greptimedb) - [Getting Started](#getting-started) -- [Project Status](#project-status) -- [Join the community](#community) - - [Contributing](#contributing) +- [Build From Source](#build-from-source) - [Tools & Extensions](#tools--extensions) +- [Project Status](#project-status) +- [Community](#community) - [License](#license) +- [Commercial Support](#commercial-support) +- [Contributing](#contributing) - [Acknowledgement](#acknowledgement) ## Introduction -**GreptimeDB** is an open-source, cloud-native, unified & cost-effective observability database for **Metrics**, **Logs**, and **Traces**. You can gain real-time insights from Edge to Cloud at Any Scale. +**GreptimeDB** is an open-source, cloud-native database purpose-built for the unified collection and analysis of observability data (metrics, logs, and traces). Whether you’re operating on the edge, in the cloud, or across hybrid environments, GreptimeDB empowers real-time insights at massive scale — all in one system. -## News +## Features -**[GreptimeDB tops JSONBench's billion-record cold run test!](https://greptime.com/blogs/2025-03-18-jsonbench-greptimedb-performance)** +| Feature | Description | +| --------- | ----------- | +| [Unified Observability Data](https://docs.greptime.com/user-guide/concepts/why-greptimedb) | Store metrics, logs, and traces as timestamped, contextual events. Query via [SQL](https://docs.greptime.com/user-guide/query-data/sql), [PromQL](https://docs.greptime.com/user-guide/query-data/promql), and [streaming](https://docs.greptime.com/user-guide/flow-computation/overview). | +| [High Performance & Cost Effective](https://docs.greptime.com/user-guide/manage-data/data-index) | Written in Rust, with a distributed query engine, [rich indexing](https://docs.greptime.com/user-guide/manage-data/data-index), and optimized columnar storage, delivering sub-second responses at PB scale. | +| [Cloud-Native Architecture](https://docs.greptime.com/user-guide/concepts/architecture) | Designed for [Kubernetes](https://docs.greptime.com/user-guide/deployments/deploy-on-kubernetes/greptimedb-operator-management), with compute/storage separation, native object storage (AWS S3, Azure Blob, etc.) and seamless cross-cloud access. | +| [Developer-Friendly](https://docs.greptime.com/user-guide/protocols/overview) | Access via SQL/PromQL interfaces, REST API, MySQL/PostgreSQL protocols, and popular ingestion [protocols](https://docs.greptime.com/user-guide/protocols/overview). | +| [Flexible Deployment](https://docs.greptime.com/user-guide/deployments/overview) | Deploy anywhere: edge (including ARM/[Android](https://docs.greptime.com/user-guide/deployments/run-on-android)) or cloud, with unified APIs and efficient data sync. | -## Why GreptimeDB +[Learn more in Why GreptimeDB](https://docs.greptime.com/user-guide/concepts/why-greptimedb). -Our core developers have been building observability data platforms for years. Based on our best practices, GreptimeDB was born to give you: +## Quick Comparison -* **Unified Processing of Observability Data** +| Feature | GreptimeDB | Traditional TSDB | Log Stores | +|----------------------------------|-----------------------|--------------------|-----------------| +| Data Types | Metrics, Logs, Traces | Metrics only | Logs only | +| Query Language | SQL, PromQL, Streaming| Custom/PromQL | Custom/DSL | +| Deployment | Edge + Cloud | Cloud/On-prem | Mostly central | +| Indexing & Performance | PB-Scale, Sub-second | Varies | Varies | +| Integration | REST, SQL, Common protocols | Varies | Varies | - A unified database that treats metrics, logs, and traces as timestamped wide events with context, supporting [SQL](https://docs.greptime.com/user-guide/query-data/sql)/[PromQL](https://docs.greptime.com/user-guide/query-data/promql) queries and [stream processing](https://docs.greptime.com/user-guide/flow-computation/overview) to simplify complex data stacks. +**Performance:** +* [GreptimeDB tops JSONBench's billion-record cold run test!](https://greptime.com/blogs/2025-03-18-jsonbench-greptimedb-performance) +* [TSBS Benchmark](https://github.com/GreptimeTeam/greptimedb/tree/main/docs/benchmarks/tsbs) -* **High Performance and Cost-effective** +Read [more benchmark reports](https://docs.greptime.com/user-guide/concepts/features-that-you-concern#how-is-greptimedbs-performance-compared-to-other-solutions). - Written in Rust, combines a distributed query engine with [rich indexing](https://docs.greptime.com/user-guide/manage-data/data-index) (inverted, fulltext, skip data, and vector) and optimized columnar storage to deliver sub-second responses on petabyte-scale data and high-cost efficiency. +## Architecture -* **Cloud-native Distributed Database** - - Built for [Kubernetes](https://docs.greptime.com/user-guide/deployments/deploy-on-kubernetes/greptimedb-operator-management). GreptimeDB achieves seamless scalability with its [cloud-native architecture](https://docs.greptime.com/user-guide/concepts/architecture) of separated compute and storage, built on object storage (AWS S3, Azure Blob Storage, etc.) while enabling cross-cloud deployment through a unified data access layer. - -* **Developer-Friendly** - - Access standardized SQL/PromQL interfaces through built-in web dashboard, REST API, and MySQL/PostgreSQL protocols. Supports widely adopted data ingestion [protocols](https://docs.greptime.com/user-guide/protocols/overview) for seamless migration and integration. - -* **Flexible Deployment Options** - - Deploy GreptimeDB anywhere from ARM-based edge devices to cloud environments with unified APIs and bandwidth-efficient data synchronization. Query edge and cloud data seamlessly through identical APIs. [Learn how to run on Android](https://docs.greptime.com/user-guide/deployments/run-on-android/). - -For more detailed info please read [Why GreptimeDB](https://docs.greptime.com/user-guide/concepts/why-greptimedb). +* Read the [architecture](https://docs.greptime.com/contributor-guide/overview/#architecture) document. +* [DeepWiki](https://deepwiki.com/GreptimeTeam/greptimedb/1-overview) provides an in-depth look at GreptimeDB: + GreptimeDB System Overview ## Try GreptimeDB ### 1. [Live Demo](https://greptime.com/playground) -Try out the features of GreptimeDB right from your browser. +Experience GreptimeDB directly in 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: +### 3. Docker (Local Quickstart) ```shell docker pull greptime/greptimedb ``` -Start a GreptimeDB container with: - ```shell docker run -p 127.0.0.1:4000-4003:4000-4003 \ - -v "$(pwd)/greptimedb:./greptimedb_data" \ + -v "$(pwd)/greptimedb:/greptimedb_data" \ --name greptime --rm \ greptime/greptimedb:latest standalone start \ --http-addr 0.0.0.0:4000 \ @@ -124,114 +129,90 @@ docker run -p 127.0.0.1:4000-4003:4000-4003 \ --mysql-addr 0.0.0.0:4002 \ --postgres-addr 0.0.0.0:4003 ``` +Dashboard: [http://localhost:4000/dashboard](http://localhost:4000/dashboard) +[Full Install Guide](https://docs.greptime.com/getting-started/installation/overview) -Access the dashboard via `http://localhost:4000/dashboard`. - -Read more about [Installation](https://docs.greptime.com/getting-started/installation/overview) on docs. +**Troubleshooting:** +* Cannot connect to the database? Ensure that ports `4000`, `4001`, `4002`, and `4003` are not blocked by a firewall or used by other services. +* Failed to start? Check the container logs with `docker logs greptime` for further details. ## Getting Started -* [Quickstart](https://docs.greptime.com/getting-started/quick-start) -* [User Guide](https://docs.greptime.com/user-guide/overview) -* [Demos](https://github.com/GreptimeTeam/demo-scene) -* [FAQ](https://docs.greptime.com/faq-and-others/faq) +- [Quickstart](https://docs.greptime.com/getting-started/quick-start) +- [User Guide](https://docs.greptime.com/user-guide/overview) +- [Demo Scenes](https://github.com/GreptimeTeam/demo-scene) +- [FAQ](https://docs.greptime.com/faq-and-others/faq) -## Build - -Check the prerequisite: +## Build From Source +**Prerequisites:** * [Rust toolchain](https://www.rust-lang.org/tools/install) (nightly) * [Protobuf compiler](https://grpc.io/docs/protoc-installation/) (>= 3.15) * C/C++ building essentials, including `gcc`/`g++`/`autoconf` and glibc library (eg. `libc6-dev` on Ubuntu and `glibc-devel` on Fedora) * Python toolchain (optional): Required only if using some test scripts. -Build GreptimeDB binary: - -```shell +**Build and Run:** +```bash make -``` - -Run a standalone server: - -```shell cargo run -- standalone start ``` ## Tools & Extensions -### Kubernetes - -- [GreptimeDB Operator](https://github.com/GrepTimeTeam/greptimedb-operator) - -### 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 for monitoring GreptimeDB is available at [grafana](grafana/README.md) directory. +- **Kubernetes:** [GreptimeDB Operator](https://github.com/GrepTimeTeam/greptimedb-operator) +- **Helm Charts:** [Greptime Helm Charts](https://github.com/GreptimeTeam/helm-charts) +- **Dashboard:** [Web UI](https://github.com/GreptimeTeam/dashboard) +- **SDKs/Ingester:** [Go](https://github.com/GreptimeTeam/greptimedb-ingester-go), [Java](https://github.com/GreptimeTeam/greptimedb-ingester-java), [C++](https://github.com/GreptimeTeam/greptimedb-ingester-cpp), [Erlang](https://github.com/GreptimeTeam/greptimedb-ingester-erl), [Rust](https://github.com/GreptimeTeam/greptimedb-ingester-rust), [JS](https://github.com/GreptimeTeam/greptimedb-ingester-js) +- **Grafana**: [Official Dashboard](https://github.com/GreptimeTeam/greptimedb/blob/main/grafana/README.md) ## Project Status -GreptimeDB is currently in Beta. We are targeting GA (General Availability) with v1.0 release by Early 2025. +> **Status:** Beta. +> **GA (v1.0):** Targeted for mid 2025. -While in Beta, GreptimeDB is already: - -* Being used in production by early adopters -* Actively maintained with regular releases, [about version number](https://docs.greptime.com/nightly/reference/about-greptimedb-version) -* Suitable for testing and evaluation +- Used in production by early adopters +- Stable, actively maintained, with regular releases ([version info](https://docs.greptime.com/nightly/reference/about-greptimedb-version)) +- Suitable for evaluation and pilot deployments For production use, we recommend using the latest stable release. +[![Star History Chart](https://api.star-history.com/svg?repos=GreptimeTeam/GreptimeDB&type=Date)](https://www.star-history.com/#GreptimeTeam/GreptimeDB&Date) + +If you find this project useful, a ⭐ would mean a lot to us! +Known Users ## 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: +We invite you to engage and contribute! -- 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) - -## Commercial Support - -If you are running GreptimeDB OSS in your organization, we offer additional -enterprise add-ons, installation services, training, and consulting. [Contact -us](https://greptime.com/contactus) and we will reach out to you with more -detail of our commercial license. +- [Slack](https://greptime.com/slack) +- [Discussions](https://github.com/GreptimeTeam/greptimedb/discussions) +- [Official Website](https://greptime.com/) +- [Blog](https://greptime.com/blogs/) +- [LinkedIn](https://www.linkedin.com/company/greptime/) +- [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. +GreptimeDB is licensed under the [Apache License 2.0](https://apache.org/licenses/LICENSE-2.0.txt). + +## Commercial Support + +Running GreptimeDB in your organization? +We offer enterprise add-ons, services, training, and consulting. +[Contact us](https://greptime.com/contactus) for details. ## Contributing -Please refer to [contribution guidelines](CONTRIBUTING.md) and [internal concepts docs](https://docs.greptime.com/contributor-guide/overview.html) for more information. +- Read our [Contribution Guidelines](https://github.com/GreptimeTeam/greptimedb/blob/main/CONTRIBUTING.md). +- Explore [Internal Concepts](https://docs.greptime.com/contributor-guide/overview.html) and [DeepWiki](https://deepwiki.com/GreptimeTeam/greptimedb). +- Pick up a [good first issue](https://github.com/GreptimeTeam/greptimedb/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) and join the #contributors [Slack](https://greptime.com/slack) channel. ## 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). +Special thanks to all contributors! See [AUTHORS.md](https://github.com/GreptimeTeam/greptimedb/blob/main/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/). - -Known Users \ No newline at end of file +- Uses [Apache Arrow™](https://arrow.apache.org/) (memory model) +- [Apache Parquet™](https://parquet.apache.org/) (file storage) +- [Apache Arrow DataFusion™](https://arrow.apache.org/datafusion/) (query engine) +- [Apache OpenDAL™](https://opendal.apache.org/) (data access abstraction) +- [etcd](https://etcd.io/) (meta service) diff --git a/docs/architecture.png b/docs/architecture.png new file mode 100644 index 0000000000..992b6c856d Binary files /dev/null and b/docs/architecture.png differ diff --git a/src/flow/src/expr/signature.rs b/src/flow/src/expr/signature.rs index 82506d1293..526d00b96e 100644 --- a/src/flow/src/expr/signature.rs +++ b/src/flow/src/expr/signature.rs @@ -60,7 +60,7 @@ pub enum GenericFn { Mul, Div, Mod, - // varadic func + // variadic func And, Or, // unmaterized func