返回排行榜

feldera/feldera

Rustfeldera.com

The Feldera Incremental Computation Engine

databaserustsqlstreamingincremental-computationdata-analyticsdata-pipelinesincremental-view-maintenanceivmmaterialized-viewsreal-time
Star 增长趋势
Star
2k
Forks
141
周增长
Issues
464
5001k1.5k2k
2023年5月2024年5月2025年6月2026年7月
制品库crates.iocargo add feldera
README

Feldera

Discord Sandbox crates.io

Feldera is a fast query engine for incremental computation. Feldera has the unique ability to evaluate arbitrary SQL programs incrementally, making it more powerful, expressive and performant than existing alternatives like batch engines, warehouses, stream processors or streaming databases.


🔥 Incremental Computation Engine

Our approach to incremental computation is simple. A Feldera pipeline is a set of SQL tables and views. Views can be deeply nested. Users start, stop or pause pipelines to manage and advance a computation. Pipelines continuously process changes, which are any number of inserts, updates or deletes to a set of tables. When the pipeline receives changes, Feldera incrementally updates all the views by only looking at the changes and it completely avoids recomputing over older data. While a pipeline is running, users can inspect the results of the views at any time.

Our approach to incremental computation makes Feldera incredibly fast (millions of events per second on a laptop). It also enables unified offline and online compute over both live and historical data. Feldera users have built batch and real-time feature engineering pipelines, ETL pipelines, various forms of incremental and periodic analytical jobs over batch data, and more.

🎯 Our defining Features

  1. Full SQL support and more. Our engine is the only one in existence that can evaluate full SQL syntax and semantics completely incrementally. This includes joins and aggregates, group by, correlated subqueries, window functions, complex data types, time series operators, UDFs, and recursive queries. Pipelines can process deeply nested hierarchies of views.

  2. Fast out-of-the-box performance. Feldera users have reported getting complex use cases implemented in 30 minutes or less, and hitting millions of events per second in performance on a laptop without any tuning.

  3. Datasets larger than RAM. Feldera is designed to handle datasets that exceed the available RAM by spilling efficiently to disk, taking advantage of recent advances in NVMe storage.

  4. Strong guarantees on consistency and freshness. Feldera is strongly consistent. It also guarantees that the state of the views always corresponds to what you'd get if you ran the queries in a batch system for the same input.

  5. Connectors for your favorite data sources and destinations. Feldera connects to myriad batch and streaming data sources, like Kafka, HTTP, CDC streams, S3, Data Lakes, Warehouses and more. If you need a connector that we don't yet support, let us know.

  6. Fault tolerance. Feldera can gracefully restart from the exact point of an abrupt shutdown or crash, picking up from where it left off without dropping or duplicating input or output. Fault tolerance is a preview feature that requires support from input and output connectors.

  7. Seamless ad-hoc queries. You can run ad-hoc SQL queries on a running or paused pipeline to inspect or debug the state of materialized views. While these queries are evaluated in batch mode using Apache Datafusion, their results are consistent with the incremental engine's output for the same queries, aside from minor dialect and rounding differences.

💻 Architecture

The following diagram shows Feldera's architecture

Feldera Platform Architecture

⚡️ Quick start with Docker

First, make sure you have Docker installed. Then run the following command:

docker run -p 8080:8080 --tty --rm -it images.feldera.com/feldera/pipeline-manager:latest

Once the container image downloads and you see the Feldera logo on your terminal, visit the WebConsole at http://localhost:8080. We suggest going through our tutorial next.

We also have instructions to run Feldera using Docker Compose, if you'd like to experiment with Kafka and other auxiliary services.

⚙️ Running Feldera from sources

To run Feldera from sources, ensure at least 6 GB of free space in the sources directory and an additional 7 GB in your home directory, then install the required dependencies:

  • Rust tool chain
  • cmake
  • libssl-dev
  • libsasl2-dev
  • golang-go (required to build aws-lc-fips-sys when using rustls FIPS)
  • pkg-config
  • libzstd-dev
  • clang
  • Java Development Kit (JDK), version 19 or newer (21 is recommended)
  • maven
  • Bun
  • nodejs v20

On MacOS, after installing the Rust tool chain, the remaining dependencies can be installed with:

xcode-select --install

for Xcode tools that includes clang, and

brew install cmake openssl cyrus-sasl go pkg-config zstd openjdk@21 maven oven-sh/bun/bun node@20

for the rest.

After that, the first step is to build the SQL compiler:

cd sql-to-dbsp-compiler
./build.sh

Next, from the repository root, run the pipeline-manager:

cargo run --bin=pipeline-manager

As with the Docker instructions above, you can now visit http://localhost:8080 on your browser to see the Feldera WebConsole.

📖 Documentation

To learn more about Feldera Platform, we recommend going through the documentation.

🤖 Benchmarks

Feldera is generally faster and uses less memory than systems like stream processors.

👍 Contributing

The software in this repository is governed by an open-source license. We welcome contributions. Here are some guidelines.

🎓 Theory

Feldera Platform achieves its objectives by building on a solid mathematical foundation. The formal model that underpins our system, called DBSP, is described in the accompanying paper:

The model provides two things:

  1. Semantics. DBSP defines a formal language of streaming operators and queries built out of these operators, and precisely specifies how these queries must transform input streams to output streams.

  2. Algorithm. DBSP also gives an algorithm that takes an arbitrary query and generates an incremental dataflow program that implements this query correctly (in accordance with its formal semantics) and efficiently. Efficiency here means, in a nutshell, that the cost of processing a set of input events is proportional to the size of the input rather than the entire state of the database.

相关仓库
supabase/supabase

The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.

TypeScriptnpmApache License 2.0firebasesupabase
supabase.com
106.8k13.2k
netdata/netdata

The fastest path to AI-powered full stack observability, even for lean teams.

GoGo ModulesGNU General Public License v3.0monitoringdocker
netdata.cloud
79.8k6.5k
redis/redis

For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.

COtherdatabasekey-value
redis.io
75.6k24.7k
Asabeneh/30-Days-Of-Python

The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw

PythonPyPI30-days-of-pythonpython
68.8k12.8k
meilisearch/meilisearch

A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.

Rustcrates.ioOthersearch-enginetypo-tolerance
meilisearch.com
58.7k2.6k
etcd-io/etcd

Distributed reliable key-value store for the most critical data of a distributed system

GoGo ModulesApache License 2.0etcdraft
etcd.io
52k10.4k
dbeaver/dbeaver

Free universal database tool and SQL client

JavaMavenApache License 2.0sqldatabase
dbeaver.io
51.1k4.3k
ClickHouse/ClickHouse

ClickHouse® is a real-time analytics database management system

C++Apache License 2.0dbmsolap
clickhouse.com
48.8k8.7k
metabase/metabase

The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:

ClojureOtheranalyticsbusinessintelligence
metabase.com
48.3k6.7k
prisma/prisma

Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB

TypeScriptnpmApache License 2.0prismaorm
prisma.io
47.4k2.4k
LeCoupa/awesome-cheatsheets

👩‍💻👨‍💻 Awesome cheatsheets for popular programming languages, frameworks and development tools. They include everything you should know in one single file.

JavaScriptnpmMIT Licensecheatsheetsjavascript
lecoupa.github.io/awesome-cheatsheets/
46.2k6.7k
pingcap/tidb

TiDB is built for agentic workloads that grow unpredictably, with ACID guarantees and native support for transactions, analytics, and vector search. No data silos. No noisy neighbors. No infrastructure ceiling.

GoGo ModulesApache License 2.0distributed-databasedistributed-transactions
tidb.io
40.3k6.2k