关于列族数量的大表设计和查询

Posted

技术标签:

【中文标题】关于列族数量的大表设计和查询【英文标题】:Bigtable design and querying with respect to number of column families 【发布时间】:2017-05-15 10:06:54 【问题描述】:

来自 Cloud Bigtable 架构设计文档: 将数据分组到列族允许您从单个族或多个族中检索数据,而不是检索每行中的所有数据。尽可能紧密地对数据进行分组,以便在最频繁的 API 调用中只获取您需要的信息,而不是更多信息。

在我的用例中,我可以将所有数据分组到一个列族(当前访问模式是检索所有字段),或者将它们分组为 3 个逻辑列族,并在查询时始终指定这些列族。这两种设计之间有性能差异吗?推荐哪种设计?

【问题讨论】:

【参考方案1】:

在您的情况下,无论哪种方式都没有性能优势。我会使用 3 个逻辑列族,这样你的代码就更清晰了。

【讨论】:

在对列族进行逻辑分组的情况下,只使用行键查询而不指定列族是否是一种好习惯?正如我所提到的,主要的访问模式是检索大部分字段。 这真的取决于情况。如果行很小,您不太可能看到任何一种方式的性能下降。你可以做一些实验,看看cloud.google.com/bigtable/docs/hbase-metrics提供的指标。

以上是关于关于列族数量的大表设计和查询的主要内容,如果未能解决你的问题,请参考以下文章

如何设计或优化千万级别的大表?

记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案

列族数据库的设计

HBASE表设计

MySQL提升课程 全面讲解MySQL架构设计

BigQuery 无法查询滞后的大表