Timescale Cloud:性能、扩展、企业级

自托管产品

MST

Timescale Cloud 扩展了 PostgreSQL,可以摄取和查询海量的实时数据。Timescale Cloud 提供了一系列功能和优化,可大大加速您的查询,同时降低成本。例如

  • Hypercore 行列式引擎可将查询速度提高 350 倍,摄取速度提高 44%,并减少 90% 的存储空间。
  • 分层存储可将常用数据从高性能存储无缝移动到不常访问数据的低成本无限存储。

下图显示了 Timescale Cloud 如何优化您的数据以实现超快速实时分析

Main features and tiered data

本页将向您展示如何快速实现 Timescale Cloud 中的各项功能,从而在降低成本的同时更快地摄取和查询数据。

要按照本页上的步骤操作

时序数据表示系统、过程或行为随时间的变化。超表是 PostgreSQL 表,通过按时间自动分区数据来帮助您提高插入和查询性能。每个超表由称为分块的子表组成。每个分块都分配一个时间范围,并且只包含该时间范围内的据。当您运行查询时,Timescale Cloud 会识别正确的分块并在其上运行查询,而不是遍历整个表。您还可以调整超表以进一步提高性能。

Hypertable structure

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

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

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

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

超表与常规 PostgreSQL 表并存。您使用常规 PostgreSQL 表存储关系数据,并以相同的方式与超表和常规 PostgreSQL 表进行交互。

本节将向您展示如何创建常规表和超表,以及如何从外部文件导入关系数据和时序数据。

  1. 将一些时序数据导入超表

    1. 解压到一个 <本地文件夹>

      此测试数据集包含

      • 最常用加密资产的逐秒数据。这种时序数据最适合在超表中进行优化。
      • 资产符号和公司名称列表。这最适合常规关系表。

      要直接从当前基于 PostgreSQL 的数据库导入高达 100GB 的数据,请使用原生 PostgreSQL 工具进行停机迁移。要无缝导入 100GB-10TB+ 的数据,请使用 Timescale 提供的实时迁移工具。要从非 PostgreSQL 数据源添加数据,请参阅导入和摄取数据

    2. 将数据上传到超表

      要更全面地了解如何创建超表、超表的工作原理以及如何通过调整分块间隔和启用分块跳过功能来优化其性能,请参阅超表文档

  2. 快速查看您的数据

    查询超表的方式与查询关系型 PostgreSQL 表完全相同。使用以下 SQL 编辑器之一运行查询并查看您上传的数据

    • 数据模式:在 Timescale Console 中编写查询、可视化数据并分享结果,适用于所有 Timescale Cloud 服务。
    • SQL 编辑器:在 Timescale Console 中更快、更准确地编写、修复和组织 SQL,适用于 Timescale Cloud 服务。
    • psql:从终端轻松地在您的 Timescale Cloud 服务或自托管 TimescaleDB 部署上运行查询。
    SELECT * FROM crypto_ticks srt
    WHERE symbol='ETH/USD'
    ORDER BY time DESC
    LIMIT 10;
    -- Output

Hypercore 是 Timescale Cloud 的混合行列式存储引擎,专门为实时分析而设计,并由时序数据驱动。Hypercore 的优势在于它能够无缝地在面向行的存储和面向列的存储之间切换。这种灵活性使 Timescale Cloud 能够兼顾两者的优点,解决实时分析中的关键挑战。

Move from rowstore to columstore in hypercore

当 TimescaleDB 将分块从行式存储转换为列式存储时,多个记录被分组到单个行中。此行的列包含一个类似数组的结构,用于存储所有数据。因为单个行占用更少的磁盘空间,您可以将分块大小减少 90% 以上,还可以加快查询速度。这有助于您节省存储成本,并使您的查询以闪电般的速度运行。

当您调用 CREATE TABLE 时,hypercore 默认启用。最佳实践是压缩不再需要用于最高性能查询但仍定期在列式存储中访问的数据。例如,昨日的市场数据。

  1. 添加策略以在特定时间间隔将分块转换为列式存储

    例如,昨天的数据

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

    如果您尚未配置 `segmentby` 列,TimescaleDB 会根据超表中的数据为您选择一个。有关如何调整超表以获得最佳性能的更多信息,请参阅高效查询

  2. 查看您的数据空间节省情况

    当您将数据转换为列式存储时,它不仅针对分析进行了优化,而且压缩率超过 90%。这有助于您节省存储成本,并使您的查询以闪电般的速度运行。要查看节省的空间量,请单击 `Explorer` > `public` > `crypto_ticks`。

    Columnstore data savings

聚合是一种组合数据以从中获取洞察力的方法。平均值、总和和计数都是简单聚合的示例。然而,对于大量数据,聚合会迅速降低速度。连续聚合是一种超表,随着新数据的添加或旧数据的修改,它会在后台自动刷新。数据集的更改会被跟踪,连续聚合背后的超表会在后台自动更新。

Reduced data calls with continuous aggregates

您在高性能存储中的未压缩数据上创建连续聚合。它们继续在列式存储中的数据分层存储中不常访问的数据上运行。您甚至可以在连续聚合之上创建连续聚合

您使用时间桶创建连续聚合。时间桶按时间间隔聚合超表中的数据。例如,5 分钟、1 小时或 3 天的桶。分组在时间桶中的数据使用单个时间戳。连续聚合最大限度地减少了您执行查询所需查找的记录数量。

本节将向您展示如何使用 Timescale Console 中的时间桶和连续聚合来运行快速分析查询。您也可以使用 psql 执行此操作。

要查看常规查询和连续聚合之间的查询时间及返回数据的变化,请运行连续聚合的查询部分( `SELECT ...GROUP BY day, symbol;` )并比较结果。

在前面的部分中,您使用连续聚合来执行快速分析查询,并使用 hypercore 来降低常用数据的存储成本。为了进一步降低存储成本,您可以创建分层策略,将不常访问的数据移动到对象存储中。对象存储是基于 Amazon S3 构建的低成本无限数据存储。然而,无论数据处于哪个层级,您都可以在需要时查询您的数据。Timescale Cloud 会无缝访问正确的存储层并生成响应。

Tiered storage

数据分层功能适用于 Timescale Cloud 的Scale 和 Enterprise 定价计划。

设置数据分层

  1. 启用数据分层

    1. Timescale Console 中,选择要修改的服务。

    2. 在 `Explorer` 中,单击 `Storage configuration` > `Tiering storage`,然后单击 `Enable tiered storage`。

    Enable tiered storage

    启用分层存储后,您会看到分层对象存储中的数据量。

  2. 设置数据分层的时间间隔

    在 Timescale Console 中,单击 `Data` 切换到数据模式,然后使用以下查询在超表上启用数据分层

    SELECT add_tiering_policy('assets_candlestick_daily', INTERVAL '3 weeks');
  3. 查询分层数据

    您可以为每个查询、每个会话或所有未来会话启用从分层数据读取。要在分层数据上运行单个查询

    1. 启用分层数据读取
      set timescaledb.enable_tiered_reads = true
    2. 查询数据
      SELECT * FROM crypto_ticks srt LIMIT 10
    3. 禁用分层数据读取
      set timescaledb.enable_tiered_reads = false;
      有关更多信息,请参阅查询分层数据

默认情况下,所有 Timescale Cloud 服务都启用了快速恢复。然而,如果您的应用程序对停机时间容忍度极低,Timescale Cloud 提供高可用性副本。HA 副本是您的数据库的精确、最新副本,托管在与主节点相同区域内的多个 AWS 可用区 (AZ) 中。如果原始主数据节点变得不可用,HA 副本会自动接管操作。主节点将其预写日志 (WAL) 流式传输到副本,以最大程度地减少故障转移期间的数据丢失机会。

高可用性功能适用于 Timescale Cloud 的Scale 和 Enterprise 定价计划。

  1. Timescale Console 中,选择要启用复制的服务。

  2. 单击 `Operations`,然后选择 `High availability`。

  3. 选择您的复制策略,然后单击 `Change configuration`。

    Timescale Cloud service replicas

  4. 在 `Change high availability configuration` 中,单击 `Change config`。

有关更多信息,请参阅高可用性

下一步是什么?请参阅用例教程,使用您喜欢的编程语言与 Timescale Cloud 服务中的数据进行交互,将您的 Timescale Cloud 服务与一系列第三方工具集成,使用纯粹的 Timescale 用法,或者深入了解API

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