当前位置:  开发笔记 > 编程语言 > 正文

Hadoop Hbase:是否在表之间传播列族

如何解决《HadoopHbase:是否在表之间传播列族》经验,为你挑选了2个好方法。

Hbase文档清楚地表明,您应该将类​​似的列分组到列族中,因为物理存储是由列族完成的.

但是,将两个列族放在同一个表中是什么意思,而不是每个列组有单独的表?这种方式"分区"表更有意义,以及一个"宽"表工作得更好的情况下是否存在特定情况?

单独的表应该导致单独的"行区域",这在某些列族(作为一个整体)非常稀疏时可能是有益的.相反,何时将列族聚集在一起是否有利?



1> Chris Bunch..:

您已经了解了列系列的基本原理:基本上它只是提示HBase存储和复制这些项目以便更快地访问.

如果你将两个列系列放在同一个表中并且总是有不同的键来访问它们,那么将它们放在两个单独的表中就完全一样了.您只能通过在同一个表中使用相同的键访问两个列系列来获得.

例如:如果我有给定网站的综合浏览量总数的列,同一网站的唯一视图数,用户用来浏览网站的浏览器以及他们的互联网连接,我可以决定我想要前两个是列族,最后两个是列族.这里所有四个都是由相同的密钥访问,即相关的网站,所以我通过将它们放在同一个表中来获得.

如果他们在不同的表中,我最终将不得不对这两个表进行类似连接的操作.我真的不知道这些数字,所以我不能真正告诉你连接类操作有多慢(因为我不记得HBase有一个连接,因为它是非关系的)以及什么转折点是分裂的地方将它们放入单独的表中会比将它们放在同一个表中(反之亦然).

当然,这一切都取决于你试图存储的数据,所以如果你永远不需要在表中加入,你可能希望将它们保存在不同的表中,因为你可能会认为它们并不是彼此相关的首先.



2> Greg Cottman..:

列族是面向行的访问与面向列的访问之间的折衷.要扩展Chris的网页示例,行访问将获取单个网站的所有数据(列).面向列操作的一个示例是对所有站点的页面视图数进行求和.

后一种操作不需要浏览器和连接细节,这些细节远大于视图计数的数值,并且会显着影响查询性能.因此,HBase提供列族作为支持列操作的优化.

至于列是否应该在同一个表中...我只是遵循正常的数据建模指南,如果它们是同一个实体的属性,则将所有列放在同一个表中.列族是关于性能而不是模式.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有