title | excerpt | keywords | tags | products | api | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Hypercore |
Reference information about the TimescaleDB hybrid row-columnar storage engine |
|
|
|
|
import Since2180 from "versionContent/_partials/_since_2_18_0.mdx";
Hypercore is the $TIMESCALE_DB hybrid row-columnar storage engine, designed specifically for real-time analytics and powered by time-series data. The advantage of hypercore is its ability to seamlessly switch between row-oriented and column-oriented storage. This flexibility enables $CLOUD_LONG to deliver the best of both worlds, solving the key challenges in real-time analytics.
Hypercore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each $CLOUD_LONG service:
-
Fast ingest with rowstore: new data is initially written to the rowstore, which is optimized for high-speed inserts and updates.
-
Efficient analytics with columnstore: you create columnstore_policies that automatically move your data to the columnstore as it cools.
-
Faster queries on compressed data in columnstore: in columnstore conversion, hypertable chunks are compressed by more than 90%, and organized for efficient, large-scale queries more suitable for analytics. This saves on storage costs, and keeps your queries operating at lightning speed.
-
Full mutability with transactional semantics: regardless of where data is stored, hypercore provides full ACID support.
Best practice for using Hypercore is to:
-
Enable columnstore
- Use
ALTER TABLE
for a hypertableALTER TABLE crypto_ticks SET ( timescaledb.enable_columnstore = true, timescaledb.segmentby = 'symbol');
- Use ALTER MATERIALIZED VIEW for a continuous aggregate
ALTER MATERIALIZED VIEW assets_candlestick_daily set ( timescaledb.enable_columnstore = true, timescaledb.segmentby = 'symbol' );
- Use
-
Add a policy to move chunks to the columnstore at a specific time interval
For example, 7 days after the data was added to the table:
CALL add_columnstore_policy('crypto_ticks', after => INTERVAL '7d');
-
View the policies that you set or the policies that already exist
SELECT * FROM timescaledb_information.jobs WHERE proc_name='policy_compression';
You can also convert_to_columnstore and convert_to_rowstore manually for more fine-grained control over your data.
Chunks in the columnstore have the following limitations:
ROW LEVEL SECURITY
is not supported on chunks in the columnstore.- To add unique constraints on chunks in the columnstore convert_the chunk to rowstore, add the constraints to your data, then convert the chunk back to the columnstore.
- SkipScan does not currently work on chunks in the columnstore.