gpt4 book ai didi

cassandra - 在 Cassandra 中计算表的大小

转载 作者:行者123 更新时间:2023-12-04 02:45:06 25 4
gpt4 key购买 nike

在 Jeff Carpenter 和 Eben Hewitt 的“Cassandra The Definitive Guide”(第 2 版)中,使用以下公式计算磁盘上表的大小(对于模糊部分,请见谅):

table size equation

  • ck:主键列
  • cs:静态列
  • cr:常规列
  • cc:聚集列
  • Nr:行数
  • Nv:它用于计算时间戳的总大小(我没有完全理解这部分,但现在我将忽略它)。

  • 在这个等式中有两件事我不明白。

    第一:为什么每个常规列都计算聚类列大小?我们不应该乘以行数吗?在我看来,通过这种计算方式,我们是说每个聚类列中的数据都会为每个常规列复制,我认为情况并非如此。

    第二:为什么主键列不会乘以分区数?根据我的理解,如果我们有一个具有两个分区的节点,那么我们应该将主键列的大小乘以 2,因为在该节点中我们将有两个不同的主键。

    最佳答案

    这是因为 Cassandra 的 version < 3 内部结构。

  • 每个不同的分区键值只有一个条目。
  • 对于每个不同的分区键值,静态列只有一个条目
  • 集群键
  • 有一个空条目
  • 对于一行中的每一列,每个集群键列都有一个条目

  • 让我们举个例子:
    CREATE TABLE my_table (
    pk1 int,
    pk2 int,
    ck1 int,
    ck2 int,
    d1 int,
    d2 int,
    s int static,
    PRIMARY KEY ((pk1, pk2), ck1, ck2)
    );

    插入一些虚拟数据:
     pk1 | pk2 | ck1 | ck2  | s     | d1     | d2
    -----+-----+-----+------+-------+--------+---------
    1 | 10 | 100 | 1000 | 10000 | 100000 | 1000000
    1 | 10 | 100 | 1001 | 10000 | 100001 | 1000001
    2 | 20 | 200 | 2000 | 20000 | 200000 | 2000001

    内部结构将是:
                 |100:1000:  |100:1000:d1|100:1000:d2|100:1001:  |100:1001:d1|100:1001:d2|  
    -----+-------+-----------+-----------+-----------+-----------+-----------+-----------+
    1:10 | 10000 | | 100000 | 1000000 | | 100001 | 1000001 |


    |200:2000: |200:2000:d1|200:2000:d2|
    -----+-------+-----------+-----------+-----------+
    2:20 | 20000 | | 200000 | 2000000 |

    所以表的大小将是:
    Single Partition Size = (4 + 4 + 4 + 4) + 4 + 2 * ((4 + (4 + 4)) + (4 + (4 + 4))) byte = 68 byte

    Estimated Table Size = Single Partition Size * Number Of Partition
    = 68 * 2 byte
    = 136 byte
  • 这里所有的字段类型都是 int(4 字节)
  • 有4个主键列,1个静态列,2个集群键列和2个常规列

  • 更多: http://opensourceconnections.com/blog/2013/07/24/understanding-how-cql3-maps-to-cassandras-internal-data-structure/

    关于cassandra - 在 Cassandra 中计算表的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42736040/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com