BigTable 设计 - BigTable 单元格大小的上限

Posted

技术标签:

【中文标题】BigTable 设计 - BigTable 单元格大小的上限【英文标题】:BigTable Design - Upper Limit of the size of a BigTable cell 【发布时间】:2012-01-14 14:56:57 【问题描述】:

我想知道 BigTable 是否对单元格内容的大小有上限。我所说的 BigTable 单元格是指表的特定列族、特定行和特定时间戳中的单元格。如果是,那么上限是多少,如果不是,那么在不影响性能的情况下,cell 的大小可以扩大到多少?

BigTable 论文说每个 SSTable 文件内部都有 64Kb 块和一个索引。这是否意味着索引的键是row+column+timestamp(其中+表示连接),并且某个键映射的值是64kb的对应单元格?那么这是否意味着 BigTable 单元格不能超过 64 Kb?

谢谢

【问题讨论】:

好吧,先生。聪明的裤子......如果你没有什么可说的,你最好别这样......usenix.org/event/osdi06/tech/chang/chang_html 【参考方案1】:

你指的是google对大表的具体实现吗?我想只有谷歌的人才可以回答这个问题。

论文本身并没有将单元格限制为 64 kb。虽然没有提到,但我想单元格可以跨越多个 sstable 块。

大表数据模型的两个主要开源实现都允许大于 64kb 的单元格。 Apache Cassandra 的技术限制为 2gb,尽管实际限制要小得多。 Apache HBase 常见问题解答建议不要使用超过 10mb 的单元大小,但我不确定实际的技术限制。

【讨论】:

这很有帮助。谢谢!【参考方案2】:

根据 BigTable 文档中的Designing Your Schema,有个别值的建议限制和硬限制。

建议限制:~10 兆字节(10.4858 兆字节)

硬限制:100 MB

但值得注意的是,对于行也有推荐和硬限制,并且有足够的满足推荐/硬限制的单元格很可能会超过行限制。

【讨论】:

以上是关于BigTable 设计 - BigTable 单元格大小的上限的主要内容,如果未能解决你的问题,请参考以下文章

用于描述 BigTable 数据模型的词语的含义

我应该在我的 Bigtable 单元格时间戳中添加啥?

尝试在 bigtable 中模拟单元级 TTL,但整个列族数据被垃圾收集删除

Bigtable 数据库设计理论

如何从 bigtable 获取最近的数据?

Bigtable中稀疏表的稀疏和目的是啥?