We've just published an alpha version for the upcoming 6.0 major release and it includes long-awaited support for ingesting out-of-order records on-the-fly, a complete overhaul of the InfluxDB Line Protocol subsystem, and multiple fixes which provide stability improvements. Here's a roundup of changes that have just landed in the latest and greatest version!
QuestDB 6.0 alpha
QuestDB relies on an append-only model and in versions prior to 6.0, we reject records that appear (chronologically) out-of-order by timestamp at the database. In real-world applications, data doesn’t follow this rule because of network jitter, latency or even clock synchronization issues. Out-of-order (O3) support adds flexibility to the system and provides compatibility with the Time Series Benchmark Suite (TSBS) which is used to reliably measure and compare the performance of time series databases.
Also included with this version is a massive internal revision of InfluxDB Line Protocol (ILP) ingestion which brings significant performance improvements, alongside multiple UI fixes for the Web Console and SQL features.
New features
- O3 support for ingestion of records which are out-of-order by timestamp
- ARM64 support
fileName
parameter can be specified for the/exp
endpoint for CSV exports- PostgreSQL JDBC driver now supports
getSQLKeywords
method - UI improvements for results with only one column
- Notification element does not obscure returned rows
Bug fixes
LIMIT -1
returns last row as expected- Epoch timestamps supported in CSV imports
- Behavior of
ORDER BY
query returns correct values on non-cached symbol types - Column names allow the use of minus
-
and underscore_
characters for compatibility with InfluxDB Line Protocol messages
How do I run it?
The alpha release has been published to Docker Hub and can be pulled with the following command:
docker pull questdb/questdb:6.0.0-alpha-linux-amd64
The image can then be run with the following command:
docker run -p 9000:9000 -p 8812:8812 -p 9009:9009 \
questdb/questdb:6.0.0-alpha-linux-amd64
Notes on out-of-order data ingestion
This feature is enabled by default for ingestion over InfluxDB Line
Protocol, PostgreSQL wire protocol and bulk imports via REST API. One
requirement for the use of this feature is that tables must have a partitioning
strategy employed. New tables created over ILP have a partitioning strategy per
DAY
applied by default. For more information with SQL examples showing how to
employ a partitioning strategy, see the
CREATE TABLE documentation.
Additional server configuration parameters may be applied for optimizing out-of-order ingestion over InfluxDB Line Protocol. For more details on these values, see the server.conf description, or reach out with any questions in the meantime. A supplementary guide will follow soon which describes why and when to apply these settings to help with fine-tuning for your use case.
Benchmarking QuestDB versus InfluxDB, ClickHouse and TimescaleDB
Following the release of this alpha version, we will be running the TSBS benchmark suite which allows us to compare the performance of QuestDB on ingestion rates for high-throughput scenarios. We are in the process of contributing a pull request into the official TSBS repository so users may directly clone the suite and run the benchmark against QuestDB and other systems for comparison.
We’re eagerly awaiting feedback on performance or any issues in this release, feel free to reach out and let us know how the alpha is running if you end up testing. You can let us know how we're doing or just come by and say hello in our community forums or browse the repository on GitHub.