QuestDB is an open-source SQL database for time series data.
It uses a column-oriented approach and supports heavy parallelized vectorized execution using SIMD instructions.
QuestDB implements SQL and augments it for time-series with native extensions. It exposes a Postgres wire protocol, and supports ingestion with InfluxDB Line Protocol.
QuestDB started as a side project in 2014 by Vlad Ilyushchenko who applied principles from low latency techniques found in the financial services industry. QuestDB is backed by YCombinator.
QuestDB uses a single writer model. The writer re-orders timestamps on the fly. Multi-publisher, single consumer queue provides concurrent write access.
QuestDB uses a relational model with column-based storage model.
SIMD optimised analytics.
Indexing is available for symbol columns. Index support for other types will be added over time.
Read Committed Repeatable Read Read Stability
QuestDB supports the following types of joins: INNER, OUTER, CROSS, ASOF and SPLICE. FULL joins are not yet implemented and are on our roadmap. All supported join types can be combined in a single SQL statement.
Multi threaded SQL execution.
SIMD-based vector execution of queries.
QuestDB enhances ANSI SQL with time series extensions to manipulate time stamped data.
Memory mapped files data access.
Decomposition Storage Model (Columnar)
QuestDB uses a column-based storage model. Data is stored in tables with each column stored in its own file and its own native format. New data is appended to the bottom of each column to allow data to be organically retrieved in the same order that it was ingested.