Bigtable / HBase:富列系列与单个JSON对象

For*_*ick 5 json hbase bigdata nosql google-cloud-bigtable

我想在Google Cloud Bigtable(几个PetaBytes)上存储大量数据以用于服务目的。我计划使用主键来访问数据,有时通过键前缀查询来访问。

没有计划进行数据更新。仅追加到现有表。

我的问题是:由于我不使用任何列来对查询进行过滤/查询/排序(无论如何在Bigtable中是不可能的),将数据存储在单独的列中而不是每行存储一个JSON文档是否有好处?

谢谢!

Mis*_*man 9

披露:我负责Cloud Bigtable的产品管理。

如果您不打算按每个列的粒度来检索或更新数据,那么将JSON文档存储为单个值的计划就可以了,特别是因为如果您存储每个列的数据,则列族名称本身(以及限定符)也需要存储在每一行中,从而增加了存储开销,该开销与值的数量成比例,因此在您的规模上可能有意义。在模型中,您将Bigtable用作键值存储。

如果您决定将来将JSON分为许多列,则可以将其他列族添加到现有的Bigtable表中(或仅使用现有列族中的其他列限定符),并通过并行过程(例如,Hadoop MapReduceGoogle Cloud Dataflow

旁注:JSON非常冗长,占用一些空间;虽然您可以自己进行预压缩,但Cloud Bigtable会原生(透明地)压缩数据以帮助缓解这种情况。就是说,要考虑的一个替代方案是协议缓冲区或另一种二进制编码,这样可以更有效地利用空间。

鉴于您计划存储多个PB的数据,您可能会需要超过默认配额的30个Bigtable节点-如果是这样,请为您的用例请求额外的配额

请查看“大表性能”页面,了解每个大表服务器节点应达到的性能指标,但是您应该对特定的读/写模式进行基准测试,以建立基准规范并相应地进行扩展。

祝您项目顺利!