BigTable 中的每一行中的列族名称是否重复?

问题描述 投票:0回答:1

BigTable 文档引用了每行重复的

column qualifier
,并建议使用数据本身作为限定符。但对于
column family
空间使用方面却没有类似的提及。

所以我很困惑 BigTable 是否在每一行中存储列族,或者 Google 是否有一些技术不在每一行中存储

column family
。列族需要使用 UI 控制台或 cbt CLI 工具(或 SDK 和 API)创建,而列限定符是在写入数据时动态创建的。因此,可能会对列族存储进行一些优化,因为在写入数据之前 BigTable 引擎已经知道了。

这是我迄今为止检查过的一些参考资料,

  1. 列限定符在每行中重复,但在描述或示例中没有提及列族 - ref

将列限定符视为数据。由于您必须为每列存储列限定符,因此您可以通过用值命名列来节省空间。

  1. 未使用的列空间使用中提到的关键结构有一个隐含的含义,即
    column family
    存储在每一行中,因为关键结构似乎是(列族+列限定符+时间戳)-ref

行本质上是键/值条目的集合,其中键是列族、列限定符和时间戳的组合。

  1. 对于 HBase,列族也存储在每一行中,建议使用短名称和列限定符。由于HBase是在BigTable论文之后创建的项目,因此BigTable有可能也在每一行中存储列族。 - 参考

每行重复列族和列限定符名称。因此,名称尽可能短,以减少 HBase 存储和读取的数据量。

目前,我计划使用列族名称作为单个字母,例如,

d
用于默认,或
m
用于元数据等。但想检查是否可以使用全名本身,以防列族不占用每一行的存储空间。

google-cloud-bigtable bigtable
1个回答
0
投票

Bigtable 为每个列族创建一个内部整数 id,这个整数存储在底层 SSTable 中。因此,不必担心较长列族名称的存储影响 - 它只是元数据。

© www.soinside.com 2019 - 2024. All rights reserved.