Timescale Cloud:性能、规模、企业级
自托管产品
MST
时序数据代表了系统、流程或行为随时间变化的方式。超表使 TimescaleDB 能够高效处理时序数据。超表是 PostgreSQL 表,它们自动按时间对您的时序数据进行分区。每个超表由称为分块的子表组成。每个分块都分配一个时间范围,并且只包含该范围内的数据。当您运行查询时,TimescaleDB 会识别正确的分块并在其上运行查询,而不是遍历整个表。
Hypercore 是 Timescale 超表使用的混合行-列式存储引擎。传统数据库在快速插入(行式存储)和高效分析(列式存储)之间存在权衡。Hypercore 消除了这种权衡,无需牺牲事务处理能力即可实现实时分析。
Hypercore 动态地以最有效率的格式存储数据,以适应其生命周期
- 用于最新数据的行式存储:最新分块(可能更多)始终存储在行存储中,确保快速插入、更新和低延迟的单记录查询。此外,行式存储还用作列式存储的写入穿透。
- 用于分析性能的列式存储:分块会自动压缩到列式存储中,从而优化存储效率并加速分析查询。
与传统列式数据库不同,Hypercore 允许在任何阶段插入或修改数据,使其成为高摄取事务性工作负载和实时分析的灵活解决方案——所有这些都在一个数据库中实现。
由于 TimescaleDB 100% 兼容 PostgreSQL,因此您可以将所有标准 PostgreSQL 表、索引、存储过程和其他对象与超表一起使用。这使得创建和使用超表与标准 PostgreSQL 类似。
有关超表使用的更多信息,包括分块大小分区,请参阅超表部分。
使用超表的最佳实践是
创建超表
使用 CREATE TABLE 为您的时序数据创建超表。为了对列式存储中的数据进行高效查询,请记住使用您最常用于过滤数据的列进行
segmentby
。例如CREATE TABLE conditions (time TIMESTAMPTZ NOT NULL,location TEXT NOT NULL,device TEXT NOT NULL,temperature DOUBLE PRECISION NULL,humidity DOUBLE PRECISION NULL) WITH (tsdb.hypertable,tsdb.partition_column='time',tsdb.segmentby = 'device',tsdb.orderby = 'time DESC');如果您是自托管 TimescaleDB v2.19.3 及更低版本,请创建一个PostgreSQL 关系表
,然后使用create_hypertable进行转换。然后,通过调用ALTER TABLE启用 Hypercore。
设置列式存储策略
CALL add_columnstore_policy('conditions', after => INTERVAL '1d');
关键词