QuestDB 8.0: Major Release
QuestDB gets a major version bump.
8.0 blends deep improvements with helpful new functions.
Without further ado, let's take a look at the core additions.
P E R F O R M A N C E
Performance is something of an internal obsession. When compared to competitors (1, 2) we already match up very well. But leading performance is a journey without a destination. As such, through a series of compounding optimizations, we see an average of 50% faster query speeds when looking at our Clickbench total benchmarks.
Contributing to this improvement, in addition to a set of under-the-hood updates, are the following major features.
Compression for OSS
Previously, system-level compression was available only within QuestDB Enterprise. We're pleased to announce that compression is available within open source and can be used today. To get you up-and-running quick, we have a short guide.
Compression is provided via ZFS, and we expect at least a 6x reduction in storage utilization. But system-level compression is one aspect of lowering disk usage. Another aspect is reducing the size of the files generated by the database.
And to that tune, we'll introduce VARCHAR.
VARCHAR replaces STRING
For those unfamiliar, VARCHAR stands for variable character. It has been an integral part of SQL since near its inception. Its adoption in QuestDB provides benefits over the existing STRING type:
Feature | VARCHAR | STRING |
---|---|---|
Encoding | UTF-8 | UTF-16 |
Storage | Typically lower storage requirements | Higher storage requirements |
Optimization | Optimized for common operations (filtering, sorting) | Not optimized for modern use cases |
Recommendation | Recommended for new tables | Considered a legacy type, not recommended for new tables |
Compatibility | Compatible with newer versions of QuestDB | Kept for compatibility with older versions, may be deprecated |
When a column uses VARCHAR, we expect improved performance and storage utilization. In partnership with compression, this means that the oft large fields of text create an all-together much smaller footprint. And that smaller footprint means faster, more efficient queries.
As SSD costs balloon and are set to continue rising, efficiency is more important. For those looking to turn down the temperature of their bills, consider looking at QuestDB - its performance relative to low hardware constantly improves.
But back to VARCHAR: What if you already use the STRING type?
ALTER TABLE COLUMN TYPE
Before we outline the syntax, it's important to consider table alterations as sensitive operations. If a table's column type is changed, but the data it received does not match the new type, then there's going to be issues! And not all types are capable of conversion, however most of the common cases are covered.
To convert an existing STRING column to VARCHAR:
ALTER TABLEexample_tableALTER COLUMNexample_column TYPE VARCHAR;
You may also include parameters such as CAPACITY
& INDEX
.
Read more about ALTER TABLE COLUMN TYPE
in
our documentation.
Functional Finance
Many cutting-edge financial institutions leverage QuestDB for time-series data. To better support the financial use-case, we offer finance-specific functions.
One such function is the Level-2 Price function.
Level-2 market data provides a detailed view of the order book for a given asset. It displays both the prices at which buyers and sellers are willing to trade, and the quantities available at each price level.
It is "Level-2" because it shows the full range of bid (buy) and ask (sell) orders, not just the highest bid and lowest ask as in "Level-1" data. It can help analysts determine the strength and momentum of the market, or find points of resistance.
It's essential for high-volume, high-speed trading, and it's all wrapped up in a nice function:
SELECTl2price(target_quantity, quantity_1, price_1, quantity_2, price_2, ..., quantity_n, price_n);
For more information, see our Finance documentation.
Join the community
QuestDB 8.0 came together through a lot of hardwork and communication with our growing community. If you have any feedback or questions, or want to provide feedback towards our roadmap, please visit us in our Community Forum.