You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Cassandra中blob、map<text,text>等数据类型大小及单元格平均大小?

Cassandra 数据类型大小计算与平均大小估算示例

以下是针对你关注的text/varchar、blob、list、set、map<text,text>类型的具体大小计算方法和估算示例,同时包含平均大小的统计思路:


1. Text/Varchar 类型

Cassandra存储text/varchar时,会额外添加4字节的长度前缀(用于标识字符串的UTF-8编码字节数),总大小公式:

总字节数 = 4(长度前缀) + 字符串的UTF-8编码字节数
  • 单值示例:
    • 英文串 "Hello Cassandra":15个字符(UTF-8占15字节),总大小=4+15=19字节
    • 混合串 "Cassandra 中文测试":英文部分10字节+中文4字符×3字节=22字节,总大小=4+22=26字节
  • 平均大小估算:先统计样本的平均字符数,乘以对应场景的平均字节/字符(比如中英文混合取2字节/字符),再加4字节。例:平均20字符的混合串,平均大小=4 + 20×2=44字节

2. Blob 类型

blob直接存储二进制数据,同样带4字节的长度前缀,总大小公式:

总字节数 = 4(长度前缀) + 二进制数据实际字节数
  • 单值示例:
    • 10KB图片(10240字节):总大小=4+10240=10244字节
    • 500字节加密数据:总大小=4+500=504字节
  • 平均大小估算:统计样本中二进制数据的平均字节数,再加4字节即可。例:平均2KB的文件,平均大小=4+2048=2052字节

3. List 类型

List是有序集合,存储开销包括:

  • 4字节的元素数量前缀
  • 每个元素额外加2字节的索引前缀(标记元素顺序)
  • 每个元素本身的text大小(4字节长度前缀+UTF-8编码字节数)

总大小公式:

总字节数 = 4(元素数前缀) + Σ(2(索引前缀) + 4(元素长度前缀) + 元素UTF-8字节数)
  • 单值示例:
    List内容:["apple", "banana", "樱桃"]
    • "apple":2+4+5=11字节;"banana":2+4+6=12字节;"樱桃":2+4+6=12字节
    • 总大小=4 + 11+12+12=39字节
  • 平均大小估算:4 + 平均元素数 × (2 + 单text平均大小)。例:平均5个元素,每个text平均20字节,平均大小=4 +5×(2+20)=114字节

4. Set 类型

Set是无序不重复集合,无需索引前缀,存储开销:

  • 4字节的元素数量前缀
  • 每个元素的text大小(4字节长度前缀+UTF-8编码字节数)

总大小公式:

总字节数 = 4(元素数前缀) + Σ(4(元素长度前缀) + 元素UTF-8字节数)
  • 单值示例:
    Set内容:{"apple", "banana", "樱桃"}
    • "apple":4+5=9字节;"banana":4+6=10字节;"樱桃":4+6=10字节
    • 总大小=4 +9+10+10=33字节
  • 平均大小估算:4 + 平均元素数 × 单text平均大小。例:平均4个元素,每个text平均20字节,平均大小=4+4×20=84字节

5. Map<Text, Text> 类型

Map是键值对集合,存储开销:

  • 4字节的键值对数量前缀
  • 每个键值对的大小=键的text大小 + 值的text大小

总大小公式:

总字节数 = 4(键值对数量前缀) + Σ(键的text大小 + 值的text大小)
  • 单值示例:
    Map内容:{"name": "Alice", "age": "25", "城市": "北京"}
    • "name"+"Alice":(4+4)+(4+5)=17字节;"age"+"25":(4+3)+(4+2)=13字节;"城市"+"北京":(4+6)+(4+6)=20字节
    • 总大小=4 +17+13+20=54字节
  • 平均大小估算:4 + 平均键值对数量 × (平均键大小 + 平均値大小)。例:平均3个键值对,平均键10字节、平均値15字节,平均大小=4+3×(10+15)=79字节

实际获取平均大小的方法

如果需要精确统计已有数据的平均大小,可以使用:

  • nodetool tablehistograms <keyspace>.<table>:查看目标列的大小分布直方图,提取平均值
  • 在cqlsh中通过SELECT blobAsText(column) FROM ...导出数据后,计算每个值的字节数再取平均

内容的提问来源于stack exchange,提问作者Panda153

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:03:09