QuestDB is an open-source column-oriented time series database management system. It supports SQL with extensions for time-series analysis and is designed for high-rate ingestion of timestamped data.
History QuestDB originated as an open-source Java database named NFSdb, created by software developer Vlad Ilyushchenko, who began the project while working at an energy trading company and spent several years developing it on his own before other contributors joined. The software was renamed QuestDB with the release of version 3.0.0 in October 2018, which introduced a new storage engine, CAIRO, and a new SQL engine, GRIFFIN. Version 4.0.0, released in November 2019, renamed the software's package namespace to match the product name and added a PostgreSQL wire-protocol server and an HTTP server. The project's contribution guidelines were added the same month. Ilyushchenko and Nicolas Hourcard co-founded a company of the same name to develop it, and the database is distributed under the Apache License 2.0. QuestDB participated in Y Combinator's Summer 2020 batch and raised a US$2.3 million seed round in July 2020, followed by a US$12 million Series A round in November 2021. In 2020, InfoWorld included QuestDB in its annual Bossie Awards for open-source software, noting that parts of the system were still a work in progress. QuestDB 6.0, released in May 2021 and featured in GitHub's Release Radar, added support for ingesting records that arrive out of chronological order, removing the requirement that rows be inserted in strict timestamp order. QuestDB 8.0 was released in 2024, adding a variable-size VARCHAR data type and query-performance improvements. QuestDB 9.0 followed in July 2025, introducing support for multi-dimensional arrays.
Architecture QuestDB stores data in a column-oriented layout partitioned by time intervals. Within each partition, every column is held in its own append-only file, which the engine accesses through memory-mapped files; new rows are appended to the end of the mapped memory region. The core is written in Java with performance-critical components in C++, and it manages memory off-heap to limit garbage-collection pauses. Query execution uses SIMD instructions to parallelise filtering and aggregation. Data can be ingested through several interfaces, including the InfluxDB Line Protocol, the PostgreSQL wire protocol, and an HTTP REST API. QuestDB's SQL dialect adds time-series constructs to standard SQL, including a designated timestamp column and SAMPLE BY for time-bucketed aggregation with FILL for gap filling. The dialect also provides time-series joins, including ASOF JOIN, which matches each row with the most recent row of another table at or before its timestamp, and the related WINDOW JOIN and HORIZON JOIN, which aggregate a related table over time windows or at sets of time offsets around each row. Materialized views defined over SAMPLE BY queries are refreshed incrementally as new data arrives. Researchers have noted that its handling of NULL values in comparisons deviates from the SQL standard, treating null as a concrete value.
Independent evaluations A 2023 benchmark study published in the Proceedings of the VLDB Endowment evaluated seven time-series database systems and measured QuestDB achieving an ingestion throughput of over two million data points per second, comparable to that of TimescaleDB and eXtremeDB. A 2023 comparison of database management systems for on-premise Internet of Things data storage found QuestDB to be the fastest of the tested systems at inserting data, and one of only two — together with PostgreSQL — to complete a bulk load of ten million records. QuestDB has also been used as a research target in automated software-testing studies of time-series databases. Tools developed at Tsinghua University and the National University of Singapore employed it as a test subject for detecting runtime errors and logic bugs, reporting dozens of defects that were subsequently confirmed or fixed by the project's developers.
See also InfluxDB TimescaleDB
References
