【问题标题】:How to know when data has been inserted in clickhouse如何知道数据何时插入到 clickhouse
【发布时间】:2019-12-10 06:40:04
【问题描述】:

我知道 clickhouse 最终是一致的。因此,一旦插入调用返回,并不意味着数据将出现在选择查询中。

  1. 这是否适用于独立的 Clickhouse(无分发、无复制)?
  2. 我了解数据复制的最终一致性的概念,但它是否适用于分发但不适用于复制?
  3. 使用分布式+复制 clickhouse,有什么推荐的方法来知道可以安全地查找某些插入?

基本上我没有找到关于这个主题的太多信息,所以也许我没有问最好的问题。欢迎赐教。

【问题讨论】:

    标签: clickhouse eventual-consistency


    【解决方案1】:
    1. 不,但单节点设置也不应该被认为是可靠的。
    2. 默认情况下是的,您将插入到客户端连接的节点(可能通过一些负载平衡器),分布式表会将每条数据异步转发到它所属的节点。 insert_distributed_sync=1 设置将使客户端同步等待。
    3. 在插入时直接使用 ***MergeTree 分片表(分布式)和 insert_quorum=2 设置(如果有 3 个副本),如果有一些错误,则使用完全相同的批次无限重试(可以使用重试时的不同副本,因为存在基于批处理哈希的重复数据删除)。然后在读取时使用select_sequential_consistency=1 设置。

    【讨论】:

    • 谢谢。我需要做一些工作才能完全理解,尤其是 (3),但我现在知道该怎么做了。
    • 关于(1),显然单节点故障时不会响应,如果节点/磁盘丢失则数据丢失。但除此之外,如果(2)是可能的,那么它也应该在单节点上工作,不是吗?
    猜你喜欢
    • 1970-01-01
    • 2022-07-04
    • 2020-02-13
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    相关资源
    最近更新 更多