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

自托管产品

MST

本教程使用的数据集包含最常用加密资产的逐秒交易数据。您将在一个名为 assets_real_time 的超表中优化这些时序数据。您还将在一个名为 assets 的普通 PostgreSQL 表中创建单独的资产符号表。

数据集每晚更新,包含过去四周的数据,通常约有 800 万行数据。交易数据是从 180 多个加密货币交易所实时记录的。

要遵循本页的步骤

时序数据表示系统、进程或行为随时间变化的方式。超表使 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 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。

当您拥有增强时序数据的关系数据时,请将其存储在标准 PostgreSQL 关系表中。

  1. 在关系表中添加一个表以存储资产符号和名称

    CREATE TABLE crypto_assets (
    symbol TEXT UNIQUE,
    "name" TEXT
    );

您现在在 Timescale Cloud 服务中有两个表。一个名为 crypto_ticks 的超表,以及一个名为 crypto_assets 的普通 PostgreSQL 表。

本教程使用来自 Twelve Data 的实时加密货币数据,也称为行情数据。要将数据导入您创建的表,您需要下载数据集,然后将数据上传到您的 Timescale Cloud 服务。

  1. 解压

    <本地文件夹>

    此测试数据集包含最常用加密资产的逐秒交易数据,以及一个包含资产符号和公司名称的普通表。

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

  1. 在终端中,导航到 <本地文件夹> 并连接到您的服务。

    psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"

    服务的连接信息可在您创建服务时下载的文件中找到。

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

    \COPY crypto_ticks FROM 'tutorial_sample_tick.csv' CSV HEADER;
    \COPY crypto_assets FROM 'tutorial_sample_assets.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 的格式为 <主机>:<端口>

      • TLS/SSL 模式:选择 require

      • PostgreSQL 选项:启用 TimescaleDB

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

    4. 点击 保存并测试

      Grafana 检查您的详细信息是否已正确设置。

关键词

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