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

自托管产品

MST

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

要按照本页的步骤操作

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

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

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

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

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

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

  1. 连接到您的 Timescale Cloud 服务

    Timescale 控制台中,打开一个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(币基)交易,以及矿工因挖矿而获得的奖励。

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

  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 过程可能需要几分钟,具体取决于您的互联网连接和本地客户端资源。

要可视化查询结果,请启用 Grafana 以读取服务中的数据

  1. 登录 Grafana

    在您的浏览器中,登录以下任一选项

    • 自托管 Grafana:访问 http://localhost:3000/。默认凭据为 adminadmin
    • Grafana Cloud:使用您创建账户时设置的 URL 和凭据。
  2. 添加您的服务作为数据源

    1. 打开 Connections > Data sources,然后点击 Add new data source

    2. 从列表中选择 PostgreSQL

    3. 配置连接

      • 主机 URL数据库名用户名密码

        使用您的连接详情进行配置。主机 URL 的格式为 <host>:<port>

      • TLS/SSL 模式:选择 require

      • PostgreSQL 选项:启用 TimescaleDB

      • 其他所有字段保留默认设置。

    4. 点击 保存并测试

      Grafana 会检查您的详情是否设置正确。

关键词

此页面有错误吗?报告问题 或 编辑此页面 (在 GitHub 上)