Skip to main content

Proton

Proton – open source, unified streaming and data processing engine for real-time analytics

A streaming SQL engine, fast and lightweight

πŸ“„ DocumentationΒ Β  πŸš€ Live DemoΒ Β  🌎 Timeplus

Β  Β  ReleaseΒ  YouTubeΒ  SlackΒ  follow on LinkedInΒ  Twitter(X)Β  LicenseΒ 

Why Use Proton Β· Demo Video Β· Quick Start Β· What's Next Β· Integrations Β· Contributing Β· Need help?

Proton is a streaming SQL engine, a fast and lightweight alternative to Apache Flink, πŸš€ powered by ClickHouse. It helps data engineers and platform engineers solve real-time data pipelines and stream processing use cases. Proton also powers the Timeplus Cloud streaming analytics platform.

πŸ’ͺ Why use Proton?​

  1. Apache Flink or ksqlDB alternative. Proton provides powerful streaming SQL functionalities, such as streaming ETL, tumble/hop/session windows, watermarks, materialized views, CDC and data revision processing, etc.
  2. Fast. Proton is written in C++, with optimized performance through SIMD. For example, on an Apple MacBookPro with M2 Max, Proton can deliver 90 million EPS, 4 millisecond end-to-end latency, and high cardinality aggregation with 1 million unique keys.
  3. Lightweight. Proton is a single binary (<500MB). No JVM or any other dependencies. You can also run it with Docker, or on an AWS t2.nano instance (1 vCPU and 0.5 GiB memory).
  4. Powered by the fast, resource efficient and mature ClickHouse. Proton extends the historical data, storage, and computing functionality of ClickHouse with stream processing. Thousands of SQL functions are available in Proton. Billions of rows in are queried in milliseconds.
  5. Best SQL engine for Kafka/Redpanda/Confluent. Query the live data in Kafka or other compatiable streaming data platforms, with external streams.

Proton Architecture See our architecture doc for technical details and our FAQ for more information.

🎬 Demo Video​

⚑ Quick Start​

πŸ™ Try Proton With Docker Compose:​

The Docker Compose stack demonstrates how to read/write data in Kafka/Redpanda with external streams.

🐳 Try Proton With Docker:​

docker run -d --pull always --name proton ghcr.io/timeplus-io/proton:latest

⬇️ Install Proton Without Docker​

You can install Proton as a single binary via:

curl -sSf https://raw.githubusercontent.com/timeplus-io/proton/develop/install.sh | sh

For Mac users, you can also use Homebrew to manage the install/upgrade/uninstall:

brew tap timeplus-io/timeplus
brew install proton

Then you can start the server via proton server start and start a new terminal window with proton client to start the SQL shell.

πŸ”Ž Query a test stream​

From proton-client, run the following SQL to create a stream of random data:

-- Create a stream with random data
CREATE RANDOM STREAM devices(
device string default 'device'||to_string(rand()%4),
temperature float default rand()%1000/10)
-- Run the streaming SQL
SELECT device, count(*), min(temperature), max(temperature)
FROM devices GROUP BY device

You should see data like the following:

β”Œβ”€device──┬─count()─┬─min(temperature)─┬─max(temperature)─┐
β”‚ device0 β”‚ 2256 β”‚ 0 β”‚ 99.6 β”‚
β”‚ device1 β”‚ 2260 β”‚ 0.1 β”‚ 99.7 β”‚
β”‚ device3 β”‚ 2259 β”‚ 0.3 β”‚ 99.9 β”‚
β”‚ device2 β”‚ 2225 β”‚ 0.2 β”‚ 99.8 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

⏩ What's next?​

To see more examples of using Proton, check out the examples folder.

To access more features, such as sources, sinks, dashboards, alerts, data lineage, create a workspace on Timeplus Cloud or try the live demo with pre-built live data and dashboards.

🧩 Integrations​

The following drivers are available:

Integrations with other systems:

Contributing​

We welcome your contributions! If you are looking for issues to work on, try looking at the issue list.

Please see the wiki for more details, and BUILD.md to compile Proton in different platforms.

We also encourage you to join our Timeplus Community Slack to ask questions and meet other active contributors from Timeplus and beyond.

Need help?​

Join our Timeplus Community Slack to connect with Timeplus engineers and other Proton users.

For filing bugs, suggesting improvements, or requesting new features, see the open issues here on GitHub.

Licensing​

Proton uses Apache License 2.0. See details in the LICENSE.