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

自托管产品

MST

本教程使用一个包含过去五天比特币区块链数据的数据集,这些数据存储在一个名为 transactions 的超表中。

要遵循本页的步骤

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

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

Hypercore 根据数据生命周期以最有效的方式动态存储数据

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

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

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

  1. 连接到您的 Timescale Cloud 服务

    Timescale Console 中打开 SQL 编辑器。控制台内的编辑器会显示查询速度。您也可以使用 psql 连接到您的服务。

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

    CREATE TABLE transactions (
    time TIMESTAMPTZ NOT NULL,
    block_id INT,
    hash TEXT,
    size INT,
    weight INT,
    is_coinbase BOOLEAN,
    output_total BIGINT,
    output_total_usd DOUBLE PRECISION,
    fee BIGINT,
    fee_usd DOUBLE PRECISION,
    details JSONB
    ) WITH (
    tsdb.hypertable,
    tsdb.partition_column='time',
    tsdb.segmentby='block_id',
    tsdb.orderby='time DESC'
    );

    如果您自托管 TimescaleDB v2.19.3 及更低版本,请创建一个 PostgreSQL 关系表,然后使用 create_hypertable 将其转换。之后,通过调用 ALTER TABLE 启用 hypercore。

  3. hash 列上创建索引,以加快单个事务的查询速度

    CREATE INDEX hash_idx ON public.transactions USING HASH (hash);
  4. block_id 列上创建索引,以加快块级查询速度

    创建超表时,它会按时间列进行分区。TimescaleDB 会自动在时间列上创建索引。但是,您也经常会按其他列过滤时序数据。您可以使用索引来提高查询性能。

    CREATE INDEX block_idx ON public.transactions (block_id);
  5. timehash 列上创建唯一索引,以确保您不会意外插入重复记录

    CREATE UNIQUE INDEX time_hash_idx ON public.transactions (time, hash);

该数据集包含约 150 万笔比特币交易,是五天内的交易数据。它包括每笔交易的信息,以及以 聪(satoshi)计价的价值。它还说明了交易是否为 挖矿交易(coinbase transaction),以及矿工挖矿获得的奖励。

要将数据导入您创建的表中,您需要下载数据集并将数据复制到您的数据库。

  1. 下载 bitcoin_sample.zip 文件。该文件包含一个 .csv 文件,其中包含过去五天的比特币交易数据。下载

  2. 在新终端窗口中,运行此命令解压 .csv 文件

    unzip bitcoin_sample.zip
  3. 在终端中,导航到您解压比特币交易的文件夹,然后使用 psql 连接到您的服务。

  4. psql 提示符下,使用 COPY 命令将数据传输到您的 Timescale 实例。如果 .csv 文件不在当前目录中,请在这些命令中指定文件路径

    \COPY transactions FROM 'tutorial_bitcoin_sample.csv' CSV HEADER;

    由于有超过一百万行数据,COPY 过程可能需要几分钟,具体取决于您的互联网连接和本地客户端资源。

关键词

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