【问题标题】:Cassandra UUID partition key and partition sizeCassandra UUID 分区键和分区大小
【发布时间】:2018-09-01 03:46:26
【问题描述】:

给定一张桌子

CREATE TABLE sensors_by_id (
    id uuid,
    time timeuuid,
    some_text text,
    PRIMARY KEY (id, time)
) 

当有很多条目时,这会扩展吗?我不确定,如果 UUID 字段足以作为一个好的分区键,还是需要创建一些人工键,如 week_first_day 或类似的东西?

【问题讨论】:

    标签: cassandra primary-key partition


    【解决方案1】:

    这实际上取决于您将如何插入数据 - 如果您真的为每次插入随机生成 UUID,那么重复 is very low 的机会,您将得到所谓的“瘦行”(很多内部有 1 行的分区)。即使您开始获取重复项,每一行也不会有那么多...

    【讨论】:

    • 谢谢。在这一点上,我并不担心重复。细长的行似乎在集群中分布得很好,所以它是“开始”?
    • 是的,这是一条路。
    【解决方案2】:

    这可能是分区大小的问题,因为 cassandra 对每个分区的磁盘大小有限制。

    良好的经验法则是将最大行数保持在 100,000 项以下,磁盘大小低于 100 MB

    使用这个公式很容易计算分区大小

    您可以阅读有关数据建模的更多信息here

    因此,在您的情况下,1 000 000 行的当前架构计数 每个分区some_text 的平均大小 100 字节 列将是:

    Number of Values: (1000000 * (3 - 2 - 0) + 0) = 1000000
    
    Partition Size on Disk: (16 + 0 + (1000000 * 116) + (8 * 1000000))
    = 124000016 bytes (118.26 Mb)
    

    因此,您可以看到每个分区 118.26 Mb 超出限制。所以你需要优化你的分区键。

    我使用我的开源项目 - cql-calculator 计算得出。

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 2017-05-22
      • 2021-11-15
      • 2019-06-02
      • 1970-01-01
      • 2015-06-21
      • 2019-09-07
      • 2019-10-17
      • 2017-03-18
      相关资源
      最近更新 更多