SereneDB is a search analytics database designed for real-time online analytical processing workloads. It supports aggregations, search functionalities like fuzzy matching and relevancy scoring, and data ingestion with real-time updates.
- Website
- https://serenedb.com/[01]
- Source Code
- https://github.com/serenedb/serenedb[02]
- Tech Docs
- https://docs.serenedb.com/[03]
- Developer
- Country of Origin
- DE
- Start Year
- 2024
- Project Types
- Commercial, Open Source
- Written in
- C++
- Inspired By
- DuckDB
- Compatible With
- Elasticsearch, PostgreSQL
- License
- Apache v2
- @serenedata[05]
SereneDB's core is its "Hybrid Storage Engine," which combines a custom columnar storage manager with its "IResearch" search engine to support real-time updates and search indexing. SereneDB uses a query execution engine, inspired by DuckDB, for vectorized query processing, with native support for vector search and similarity ranking alongside full-text and structured queries. It supports the PostgreSQL SQL dialect and logical replication.
SereneDB is a search analytics database designed for real-time online analytical processing workloads. It supports aggregations, search functionalities like fuzzy matching and relevancy scoring, and data ingestion with real-time updates.
SereneDB's core is its "Hybrid Storage Engine," which combines a custom columnar storage manager with its "IResearch" search engine to support real-time updates and search indexing. SereneDB uses a query execution engine, inspired by DuckDB, for vectorized query processing, with native support for vector search and similarity ranking alongside full-text and structured queries. It supports the PostgreSQL SQL dialect and logical replication.
History
The development of SereneDB began in 2024, led by SereneDB GmbH in Germany.
Checkpoints
SereneDB ensures data persistence through consistent checkpoints and a write-ahead log (WAL).
Compression
Concurrency Control
SereneDB uses optimistic concurrency control transactional model. Search indexes over tables are eventually consistent.
Data Model
The system uses a relational data model and aims for high compatibility with PostgreSQL.
Indexes
The default index structures are SereneDB's own columnar storage layer for primary data organization and inverted indexes from IResearch for full-text search. SereneDB also supports dedicated vector indexes for approximate nearest-neighbor (ANN) search, alongside geospatial indexes for location-based queries. SerebeDB also supports secondary ART indexes.
Isolation Levels
The system supports Snapshot Isolation, which is the default level.
Joins
SereneDB leverages the join algorithms provided by its in-house query execution engine, inspired by DuckDB.
Query Execution
The system uses a query execution engine adapted from DuckDB, modified to read SereneDB's own indexes and tables and to integrate with IResearch throughout. It employs a vectorized execution model, in which operations are processed in batches of values (vectors) on a column-by-column basis.
Query Interface
SereneDB uses SQL as its primary query interface, specifically supporting the PostgreSQL dialect. Its support for the PostgreSQL wire protocol allows it to be used with standard PostgreSQL clients and tools. SereneDB also provides an Elasticsearch REST API — bulk and single-document ingestion, Query DSL search with aggregations, scrolling, and kNN/vector search, counts, and mapping endpoints — so existing Elasticsearch clients and tools work with it directly.
Storage Architecture
SereneDB is a disk-oriented database that supports larger-than-memory datasets. It utilizes a Hybrid Storage Engine that combines disk-based components (its in-house columnar storage layer, search index segment files) with in-memory data structures.
Storage Model
In-house columnar layout, tightly coupled with IResearch, for incremental updates and persistent storage. Columns are split into a set of compressed data blocks for aggregations, filtration, and parallelization.
Storage Organization
The storage is a blend of SereneDB's in-house columnar storage engine, inverted indexes, and a columnar data store, both tightly integrated with IResearch. Included columns are stored using the DuckDB file format. SereneDB also supports remote storage across a range of data sources and communication protocols.
System Architecture
SereneDB runs as a single server process that hosts the entire engine: query processing, columnar table storage, and search indexing, with durability provided by write-ahead logging. The planned distributed architecture follows the separation-of-compute-and-storage model: stateless compute nodes execute queries over a shared storage layer, so compute capacity can be scaled independently of the data, and both table data and search index segments — being immutable, append-only files — map naturally onto shared object storage.
Views
SereneDB supports standard SQL views and Search views to union query to multiple search indexes.
Citations
7 sources- SereneDB - Real-Time Search Analytics Database serenedb.com
- GitHub - serenedb/serenedb: The First Real-Time Search Analytics Database · GitHub github.com
- https://docs.serenedb.com/ serenedb.com
- SereneDB serenedb.com
- https://twitter.com/serenedata twitter.com
- https://github.com/serenedb/serenedb/commit/67c0c10215f8954307a77bbcf9a4988aeca1781b github.com
- https://github.com/serenedb/serenedb/commit/a12cd5f5927fb04b0b9ac0bf13d4cc3ad908cff5 github.com