为什么我们需要hbase中的列族?

9rnv2umw  于 2021-06-07  发布在  Hbase
关注(0)|答案(1)|浏览(376)

有柱族的原因是什么?例子:
场景1:

Table Row-Key ColumnFamily1 ColumnFamily2 ColumnFamily3

场景2:

Table1 Row-Key Column1...ColumnN
Table2 Row-Key Column1...ColumnN
Table3 Row-Key Column1...ColumnN

在场景1中,虽然一个表可以有许多列族,但所有列族都是分开存储的。那么为什么会有柱族本身的概念呢?为什么不能有简单的场景2?同样在场景2中,我不会阻止hbase提供的任何功能。以后仍然可以添加动态列(和其他功能)。
我唯一关心的是,如果列族是分开存储的,那么为什么它们在同一个表中?我只关心拥有列族的目的是什么(以及它解决了什么问题)?

vbopmzt1

vbopmzt11#

根据定义,表是逻辑上属于一起的数据的组织单位。列族提供了一种在表中创建子结构的方法,以便根据访问模式优化性能(这就是它解决的问题)。
实际上,虽然表中的列族“单独”存储在不同的文件中,但它们也存储在“附近”,即hbase将给定行的所有值存储在同一区域中。这包括柱族的单独文件。虽然它们位于不同的文件中,但它们属于同一个区域服务器。
相比之下,如果您将数据划分到不同的表中,那么同一“行”的一部分将位于不同的hbase区域中,并且在访问它们时,您将支付在集群中不同区域服务器上查找的开销。
因此,如果您选择将一些数据放在一个单独的表中,而不是列族中,那么您不仅以一种可能难以管理的方式组织数据,而且还丧失了hbase的许多性能优势。

相关问题