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

自托管产品

MST

Hypercore 是 TimescaleDB 混合行/列存储引擎,专为实时分析设计,并由时序数据提供支持。Hypercore 的优势在于其能够无缝地在行式和列式存储之间切换。这种灵活性使 Timescale Cloud 能够提供两全其美的解决方案,解决实时分析中的关键挑战:

  • 高写入吞吐量
  • 低延迟写入
  • 快速查询性能
  • 高效处理数据更新和迟到数据
  • 精简数据管理

Hypercore 的混合方法在每个 Timescale Cloud 服务中结合了行式和列式格式的优点:

  • 使用行式存储快速写入:新数据最初写入行式存储,该存储针对高速插入和更新进行了优化。此过程确保实时应用程序轻松处理快速传入的数据流。可变性——upsert、更新和删除无缝发生。

  • 使用列式存储进行高效分析:当数据“冷却”并更适合分析时,它会自动转换为列式存储。这种列式格式可实现快速扫描和聚合,优化分析工作负载的性能,同时显著节省存储空间。

  • 在列式存储中对压缩数据进行更快查询:在列式存储转换中,超表分块的压缩率超过 90%,并为高效、大规模查询进行了组织。结合分块跳过,这有助于您节省存储成本并保持查询以闪电般的速度运行。

  • 快速修改列式存储中的压缩数据:只需使用 SQL 即可在列式存储中添加或修改数据。TimescaleDB 针对超快速 INSERT 和 UPSERT 性能进行了优化。

  • 具有事务语义的完全可变性:无论数据存储在哪里,Hypercore 都提供完整的 ACID 支持。就像在普通的 PostgreSQL 数据库中一样,对行式存储和列式存储的插入和更新始终保持一致,并在完成后立即可用于查询。

Hypercore workflow

TimescaleDB v2.18.0

使用 Hypercore 的最佳实践是:

  1. 启用列式存储

    使用 CREATE TABLE 为您的时序数据创建超表。为了在列式存储中的数据上进行高效查询,请记住使用最常用于过滤数据的列进行 segmentby。例如:

    • 对超表使用 CREATE TABLE

      CREATE TABLE crypto_ticks (
      "time" TIMESTAMPTZ,
      symbol TEXT,
      price DOUBLE PRECISION,
      day_volume NUMERIC
      ) WITH (
      tsdb.hypertable,
      tsdb.partition_column='time',
      tsdb.segmentby='symbol',
      tsdb.orderby='time DESC'
      );

      如果您是自托管 TimescaleDB v2.19.3 及更早版本,请创建PostgreSQL 关系表,然后使用 create_hypertable 进行转换。之后,通过调用 ALTER TABLE 启用 Hypercore。

    • 对连续聚合使用 ALTER MATERIALIZED VIEW

      ALTER MATERIALIZED VIEW assets_candlestick_daily set (
      timescaledb.enable_columnstore = true,
      timescaledb.segmentby = 'symbol' );
  2. 添加策略以在指定时间间隔后将分块移动到列式存储

    例如,数据添加到表后 7 天

    CALL add_columnstore_policy('crypto_ticks', after => INTERVAL '7d');

    参阅 add_columnstore_policy

  3. 查看您设置的策略或已存在的策略

    SELECT * FROM timescaledb_information.jobs
    WHERE proc_name='policy_compression';

    参阅 timescaledb_information.jobs

您还可以手动调用 convert_to_columnstoreconvert_to_rowstore 以更精细地控制您的数据。

列式存储中的分块有以下限制:

  • 列式存储中的分块不支持 ROW LEVEL SECURITY

关键词

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