Hypercore is the TimescaleDB 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 Timescale Cloud 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 Timescale Cloud 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 aggregateALTER 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.jobsWHERE 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 rowstore.
- SkipScan does not currently work on chunks in the columnstore.
Keywords
Found an issue on this page?Report an issue or Edit this page in GitHub.