bigtable/hbase:富列族与单个json对象的比较

r6hnlfcb  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(345)

我想在googlecloudbigtable(几PB)上存储大量的数据以供服务。我计划使用主键访问数据,有时通过键前缀查询。
未计划数据更新。仅附加到现有表。
我的问题是:既然我不使用任何列来过滤/查询/排序我的查询(这在bigtable中无论如何都是不可能的),那么将数据存储在单独的列而不是每行一个json文档中有什么好处吗?
谢谢!

yqlxgs2m

yqlxgs2m1#

披露:我负责云bigtable的产品管理。
如果您不打算按每列粒度检索或更新数据,那么将json文档存储为单个值的计划是很好的,特别是因为如果您存储每列数据,则列族名称本身(和限定符)也需要存储在每行中,从而增加存储开销,它与值的数量成比例,因此在你的尺度上可能是有意义的。在您的模型中,您将使用bigtable作为一个简单的键值存储。
如果您决定在将来将json拆分为许多列,那么可以向现有bigtable表中添加其他列族(或者只在现有列族中使用其他列限定符),并通过并行过程(如hadoop mapreduce或google cloud dataflow)重写数据。
旁注:json非常冗长,占用了一点空间;虽然您可以自己预压缩它,但cloudbigtable本机压缩数据(透明地)以帮助缓解这种情况。也就是说,要考虑的一个替代方案是协议缓冲区或另一个二进制编码,以便更有效地利用空间。
考虑到您计划存储多PB的数据,您可能需要超过30个bigtable节点的默认配额。如果需要,请为您的用例请求额外配额。
请参阅bigtable性能页面,了解每个bigtable服务器节点的大致性能度量,但是您应该对特定的读/写模式进行基准测试,以建立基准规范,并相应地进行扩展。
祝你的项目好运!

相关问题