1

我正在为从不同来源生成的数据开发 Hbase 存储。通常,来自同一来源的列更有可能同时被检索到。预期的写入/读取比率大致在 1/10 到 1/100 之间(取决于不同的来源)。

所以我有两个选择:

  • 多列族:只需创建一个表和多个列族,同一来源的每种数据将形成一个列族。
  • 多个表:为每个源创建一个表(具有一个列族)。

以上是我的一些理解,如有错误请指正。

  • 多表解决方案适用于动态添加新源。而多列系列解决方案可能会有停机时间。
  • 如果不同来源的rowkey具有不同的分布(例如,int user_id vs image GUID)或基数,也​​许最好拆分成不同的表?
  • 我们可能有一些要求来同时从不同来源检索同一行键的列。这样,多列族可能会更快(不确定)?

在做出决定之前有什么建议或者我需要考虑任何其他因素吗?有没有典型案例多表/多列族优于其他?

谢谢

4

1 回答 1

1

您的观点是正确的,只需遵循简单的规则:

如果来自不同来源的数据相关并且具有相同的键或键可以转换为相同的键,则将其放在不同列族的同一张表中。您将获得更好的扫描和更好的数据排列。

如果数据不能粘在一起,把它放在单独的表中。一张大表只会导致问题:您将进行更长的扫描,并且大多数列族将是空的。

于 2017-09-11T09:33:23.807 回答