HBase-考虑表中的列数时的任何严重影响性能,大小等

问题描述

当我现在真的不需要此数据时,是否应该避免在HBase表中添加其他列?我的意思是,今天我在过程中有很多细节,一些需要保存到HBase的属性,而某些则不是必需的。我是否应该只保存我收到的所有输入,以防万一将来需要它?这会产生什么影响?为了帮助更好地理解查询,保存400个属性(在400列中)而不是200个属性将如何影响我的系统? 关于可用大小,可以肯定的是,我将需要两倍的大小(这会对成本产生影响,无论是在AWS还是在内部部署)。从表中读取(使用某些API查询它或将数据提取到某个文件中)怎么样?那写桌子呢?还有吗?

谢谢!

解决方法

对系统的影响可能很大,具体取决于:

  1. 您的查询模式是什么
  2. 您如何设计行键
  3. 您如何将列划分为列族

...还有其他因素。 HBase可以处理400列,但是您必须事先就表的设计做出明智的决定。

例如,如果您建议只使用一个列族并将所有列放入其中,那么在查询从200到400时,肯定会对性能产生影响。

另一方面,如果创建两个列族(“ A”和“ B”)并将最常查询的列放在A中,而最常查询的列放在B中,那么您将获得更多可能会看到您的查询有效执行。

如果您还没有的话,建议您阅读《 HBase参考指南》中的本节:

https://hbase.apache.org/book.html#schema

了解在设计表时所做的选择如何影响性能和效率。