clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?

Posted

技术标签:

【中文标题】clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?【英文标题】:What is `macros` in clickhouse and what is use of `macros` in clickhouse?clickhouse 中的“宏”是什么,clickhouse 中的“宏”有什么用? 【发布时间】:2021-07-06 14:48:32 【问题描述】:

Clickhouse 中的macros 是什么?

macros 在 Clickhouse 中的用例是什么?

<macros>
    <cluster>MyFirstCluster</cluster>
    <replica>chdw1-5</replica>
    <shard>5</shard>
</macros>

config中各个属性的含义是什么?

在配置中分配每个属性的最佳做法是什么?

【问题讨论】:

【参考方案1】:

它们用于复制引擎 ZK 路径。

https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/#creating-replicated-tables

CREATE TABLE table_name
(
    EventDate DateTime,
    CounterID UInt32,
    UserID UInt32,
    ver UInt16
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/layer-shard/table_name', 'replica', ver)
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)

每个 CH 节点都是独立的,不知道集群/分片/复制。

但 Replicated* 引擎使用 ZK 路径进行复制(将自己标识为副本)。这个 ZK 路径是从宏中渲染出来的。

所以在你的情况下,而不是

ReplicatedReplacingMergeTree('/clickhouse/cluster/tables/shard/table_name', 'replica', ver)

实际上宏会被替换。

【讨论】:

我知道 Zookeeper 是为了协调 Clickhouse 集群,但我没有得到 macros 变量(尤其是 layer)定义 macros 变量 e 的最佳实践是什么, g 如果我们想拥有一个带有X 分片和“Y”复制的 Clickhouse 集群,我们应该如何定义“宏变量” 您可以定义自己的宏。我认为您需要两个不同的分片宏 myshard1 , myshard2。在每个节点上设置两者。然后用不同的宏创建表。 如果我发现集群中的每台机器都正确,我们需要定义不同的macro.xml 来显示该机器在集群中的角色。我说的对吗?

以上是关于clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

clickhouse索引

在clickhouse中,投射失败时如何返回null而不是抛出异常?

Apache Doris 和 ClickHouse 的选型比较

Code: 210. DB::NetException: Connection refused (localhost:9000)

这些列在 db 性能图表中的含义是啥?

SAS中的宏变量开头和结尾分别是啥命令?