警告

多节点支持已弃用.

TimescaleDB v2.13 是最后一个包含对 PostgreSQL 版本 13、14 和 15 的多节点支持的版本。

创建一个跨多节点环境分布的 TimescaleDB 超级表。

create_distributed_hypertable() 替换了 create_hypertable() (旧接口)。分布式表使用旧的 API。新的通用 create_hypertable API 在 TimescaleDB v2.13 中引入。

名称类型描述
relationREGCLASS您要转换为超级表的表的标识符。
time_column_nameTEXT包含时间值的列的名称,以及用于分区的首要列。
名称类型描述
partitioning_columnTEXT要分区的附加列的名称。
number_partitionsINTEGER用于 partitioning_column 的哈希分区数。必须 > 0。默认为 data_nodes 的数量。
associated_schema_nameTEXT内部超级表表的模式名称。默认为 _timescaledb_internal
associated_table_prefixTEXT内部超级表数据块名称的前缀。默认为 _hyper
chunk_time_intervalINTERVAL每个数据块覆盖的事件时间间隔。必须 > 0。默认为 7 天。
create_default_indexesBOOLEAN是否在时间/分区列上创建默认索引的布尔值。默认为 TRUE。
if_not_existsBOOLEAN如果表已转换为超级表,是否打印警告或引发异常的布尔值。默认为 FALSE。
partitioning_funcREGCLASS用于计算值的分区的函数。
migrate_dataBOOLEAN设置为 TRUE 以将任何现有数据从 relation 表迁移到新超级表中的数据块。如果表非空,则不使用此选项会生成错误。迁移大型表可能需要相当长的时间。默认为 FALSE。
time_partitioning_funcREGCLASS用于将不兼容的主时间列值转换为兼容值的函数。该函数必须是 IMMUTABLE
replication_factorINTEGER将相同数据写入的数据节点数。这是通过在此数量的数据节点上创建数据块副本完成的。必须 >= 1;如果未设置,则默认值由 timescaledb.hypertable_replication_factor_default GUC 确定。在更改默认值之前,请阅读 最佳实践
data_nodesARRAY用于分布式超级表的数据节点集。如果不存在,则默认为访问节点(在其上创建分布式超级表的节点)已知的所有数据节点。
类型描述
hypertable_idINTEGERTimescaleDB 中超级表的 ID。
schema_nameTEXT转换为超级表的表的模式名称。
table_nameTEXT转换为超级表的表的表名。
createdBOOLEAN如果创建了超级表,则为 TRUE;当 if_not_exists 为 TRUE 且未创建超级表时,则为 FALSE。

创建一个表 conditions,该表通过 'location' 列跨数据节点进行分区。请注意,空间分区数自动等于分配给此超级表的数据节点数(在本例中为所有配置的数据节点,因为未指定 data_nodes)。

SELECT create_distributed_hypertable('conditions', 'time', 'location');

使用一组特定的数据节点创建一个表 conditions

SELECT create_distributed_hypertable('conditions', 'time', 'location',
data_nodes => '{ "data_node_1", "data_node_2", "data_node_4", "data_node_7" }');
  • 哈希分区:分布式超级表的最佳实践是启用 哈希分区。使用哈希分区,传入的数据在数据节点之间分配。不使用哈希分区,每个时间片的所有数据都写入单个数据节点。

  • 时间间隔:遵循 create_hypertable 中定义的 chunk_time_interval 指南。

    当您启用哈希分区时,超级表会均匀分布在数据节点之间。这意味着您可以设置更大的时间间隔。例如,您每天摄取 10 GB 的数据,这些数据分布在五个数据节点上,每个节点有 64 GB 的内存。如果这是这些数据节点服务的唯一表,请使用 1 周的时间间隔

    7 days * 10 GB 70
    -------------------- == --- ~= 22% of main memory used for the most recent chunks
    5 data nodes * 64 GB 320

    如果您不启用哈希分区,请使用与非分布式实例相同的 chunk_time_interval 设置。这是因为所有传入数据都由单个节点处理。

  • 复制因子replication_factor 定义新创建的数据块复制到的数据节点数。例如,当您将 replication_factor 设置为 3 时,每个数据块都存在于 3 个不同的数据节点上。写入数据块的行将使用两阶段提交协议插入到所有数据节点中。

    如果数据节点发生故障或被移除,则不会丢失任何数据。写入在其他数据节点上成功。但是,丢失的数据节点上的数据块现在复制不足。当发生故障的数据节点可用时,使用调用 copy_chunk 重新平衡数据块。

关键词

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