Software:QuestDB

From HandWiki
QuestDB
Questdb-logo.png
Initial release13 October 2016; 7 years ago (2016-10-13)[1]
Stable release
5.0.5[2] / 1 December 2020; 3 years ago (2020-12-01)
Repositoryhttps://github.com/questdb/questdb
Written inC and Java
Operating systemCross-platform
TypeTime series database
LicenseApache License 2.0
Websitequestdb.io

QuestDB is an open source time series database (TSDB) optimized for fast data ingestion and real-time queries. It is used for financial services, event monitoring, application metrics, and internet of things. QuestDB is written in Java and C[3], supports the SQL query language and implements PostgreSQL wire protocol.[4]

History

Started as an open-source side project, QuestDB was founded by Vlad Ilyushchenko in 2014[5]. The project philosophy is to apply low-latency trading principles to databases in order to extract maximum performance from any hardware. The first official release was in October 2012[1]. QuestDB was incorporated in August 2019 and is licensed under the Apache 2 License, with source code available on GitHub[6].

Y Combinator-backed[7] QuestDB raised a $2.3m seed round[8] financing led by Episode1 Ventures[9], with participation from Seedcamp and other funds in July 2020.[10]

Technical overview

QuestDB adopts a relational data model with column-based storage. It is written in C and zero garbage collection Java and designed for fast data ingestion and queries in a vast array of applications and industries such as real-time data processing, Internet of Things (IoT), operations monitoring, trading and market data in financial services [11], logistics, and energy.

QuestDB ingests data via HTTP, PostgreSQL wire protocol, InfluxDB line protocol or directly from Java. Reading data is done using SQL via HTTP, PostgreSQL wire protocol or from Java API.

Architecture

QuestDB is a column-oriented DBMS that partitions columns by time. Data is stored in files with a single file for each table represented in the database.

QuestDB leverages SIMD parallel execution and memory-mapped files to achieve high performance throughput for both writing and querying. To ensure consistency while still maintaining read and write performance, all data is persisted to disk.

Features

QuestDB enhances ANSI SQL with time series extensions to manipulate time stamped data for both rows- and columns-based access to data. Data is stored in chronological order with the data time partitioned. The database achieves immediate consistency while maintaining scalable, high-speed data ingestion and is ACID compliant.

Vectorized query execution improves performance of data access giving real-time query performance. Both time series and relational joins are fully supported along with aggregations, down-sampling, and unlimited sub-queries.

A Web console is also provided for the users to run queries[12], where data can be displayed in a table or as a chart. The console also includes upload and download features for bulk data sets.

References

QuestDB