在hbase、多个相同结构的表或一个包含大量数据的表的性能方面,什么更有效?

6kkfgxo0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(321)

我之前创建了一个在rdms中存储特定实体的每日数据的项目,方法是为每天创建一个表,而不是将当天的数据存储在此表中。
但是现在我想把我的数据库从rdms转移到hbase。所以我的问题是,我是应该创建一个表并在该表中存储所有日期的数据,还是应该使用我以前的概念为每天创建一个单独的表,我想根据hbase的性能来比较这两种情况。
对不起,如果你觉得这个问题很愚蠢的话。谢谢

dgenwo3n

dgenwo3n1#

正如你提到的,有两种选择
选项1:所有日期数据的单一表格
选项2:多个表
我更喜欢名称空间(在版本0.96中引入是一个非常重要的特性)和选项2,如果你有一天的巨大数据。这将支持多租户的要求也。。。
参见hbase手册
命名空间是表的逻辑分组,类似于关系数据库系统中的数据库。这个抽象为即将推出的多租户相关特性奠定了基础:配额管理(hbase-8410)
限制命名空间可以使用的资源量(即区域、表)。
命名空间安全管理(hbase-9206)-为租户提供另一级别的安全管理。
区域服务器组(hbase-6721)-可以将命名空间/表固定到区域服务器的子集上,从而保证课程级别的隔离。
下面是命令w.r.t.名称空间

alter_namespace, create_namespace, describe_namespace, 
drop_namespace, list_namespace, list_namespace_tables

优势:
即使使用列过滤器,由于它的数据较少(每天的数据),与单表方法相比,全表扫描的数据检索速度会更快(在大表上进行全扫描的成本很高)
如果您希望在特定表上进行身份验证和授权,那么也可以实现。
限制:您将使用多个脚本来管理表,而不是使用单个脚本(选项1)

注意:在上述任何选项中,您的rowkey设计都非常重要,可以提高性能并防止热点。

有关更多详细信息,请参阅hbase系列

相关问题