solves the key challenges in real-time analytics:
- High ingest throughput
- Low-latency ingestion
- Fast query performance
- Efficient handling of data updates and late-arriving data
- Streamlined data management
- Fast ingest with : new data is initially written to the , which is optimized for high-speed inserts and updates. This process ensures that real-time applications easily handle rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly.
- Efficient analytics with : as the data cools and becomes more suited for analytics, it is automatically converted to the . This columnar format enables fast scanning and aggregation, optimizing performance for analytical workloads while also saving significant storage space.
- Faster queries on compressed data in : in the conversion, s are compressed by up to 98%, and organized for efficient, large-scale queries. Combined with chunk skipping, this helps you save on storage costs and keeps your queries operating at lightning speed.
- Fast modification of compressed data in : just use SQL to add or modify data in the . is optimized for superfast INSERT and UPSERT performance.
- Full mutability with transactional semantics: regardless of where data is stored, provides full ACID support. Like in a vanilla database, inserts and updates to the and are always consistent, and available to queries as soon as they are completed.
Samples
Best practice for using is to:-
Enable on a
For efficient queries, remember to
segmentbythe column you will use most often to filter your data. For example:-
s:
Use
CREATE TABLEfor aFor v2.23.0 and higher, the table is automatically partitioned on the first column in the table with a timestamp data type. If multiple columns are suitable candidates as a partitioning column, throws an error and asks for an explicit definition. For earlier versions, setpartition_columnto a time column. If you are self-hosting v2.20.0 to v2.22.1, to convert your data to the after a specific time interval, you have to call add_columnstore_policy after you call CREATE TABLE If you are self-hosting v2.19.3 and below, create a relational table, then convert it using create_hypertable. You then enable with a call to ALTER TABLE. -
s
Before you say
huh, a is a specialized .-
Add a policy to convert s to the at a specific time interval:
Create a columnstore_policy that automatically converts s in a
to
the at a specific time interval. For example:
-
Add a policy to convert s to the at a specific time interval:
Create a columnstore_policy that automatically converts s in a
to
the at a specific time interval. For example:
-
s:
Use
-
View the policies that you set or the policies that already exist
See timescaledb_information.jobs.
Limitations
s in the have the following limitations:ROW LEVEL SECURITYis not supported on s in the .
Available functions
Policies
add_columnstore_policy(): set a policy to automatically move s in a to the when they reach a given ageremove_columnstore_policy(): remove a policy from a
Configuration
ALTER TABLE (hypercore): enable the for a
Manual conversion
convert_to_columnstore(): manually add a to theconvert_to_rowstore(): move a from the to the
Statistics and information
chunk_columnstore_stats(): get statistics about s in thehypertable_columnstore_stats(): get statistics related to the
timescaledb_information.chunk_columnstore_settings: get information about settings on each in thetimescaledb_information.hypertable_columnstore_settings: get information about settings for all s