Timescale Cloud:性能、规模、企业级

自托管产品

MST

时序数据代表了系统、流程或行为随时间变化的方式。超表使 TimescaleDB 能够高效处理时序数据。超表是 PostgreSQL 表,它们自动按时间对您的时序数据进行分区。每个超表由称为分块的子表组成。每个分块都分配一个时间范围,并且只包含该范围内的数据。当您运行查询时,TimescaleDB 会识别正确的分块并在其上运行查询,而不是遍历整个表。

Hypercore 是 Timescale 超表使用的混合行-列式存储引擎。传统数据库在快速插入(行式存储)和高效分析(列式存储)之间存在权衡。Hypercore 消除了这种权衡,无需牺牲事务处理能力即可实现实时分析。

Hypercore 动态地以最有效率的格式存储数据,以适应其生命周期

  • 用于最新数据的行式存储:最新分块(可能更多)始终存储在行存储中,确保快速插入、更新和低延迟的单记录查询。此外,行式存储还用作列式存储的写入穿透。
  • 用于分析性能的列式存储:分块会自动压缩到列式存储中,从而优化存储效率并加速分析查询。

与传统列式数据库不同,Hypercore 允许在任何阶段插入或修改数据,使其成为高摄取事务性工作负载和实时分析的灵活解决方案——所有这些都在一个数据库中实现。

由于 TimescaleDB 100% 兼容 PostgreSQL,因此您可以将所有标准 PostgreSQL 表、索引、存储过程和其他对象与超表一起使用。这使得创建和使用超表与标准 PostgreSQL 类似。

有关超表使用的更多信息,包括分块大小分区,请参阅超表部分

使用超表的最佳实践是

  1. 创建超表

    使用 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。

  2. 设置列式存储策略

    CALL add_columnstore_policy('conditions', after => INTERVAL '1d');

关键词

在此页面上发现问题?报告问题 或在 GitHub 上编辑此页面