【问题标题】:Why do we need column families in Hbase?为什么我们需要 Hbase 中的列族?
【发布时间】:2020-11-21 15:05:11
【问题描述】:

有列族的原因是什么?示例:

场景 1:

Table Row-Key ColumnFamily1 ColumnFamily2 ColumnFamily3

场景 2:

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

在场景一中,虽然一个表可以有很多列族,但是所有的列族都是分开存储的。那为什么本身就有列族的概念呢?为什么不能有简单的场景2?同样对于场景 2,我不会阻止 HBase 提供的任何功能。您仍然可以稍后添加动态列(以及其他功能)。

我唯一关心的是,如果列族是分开存储的,那么为什么它们在同一个表中?我只对拥有列族的意图(以及它解决了什么问题)感兴趣?

【问题讨论】:

    标签: java hdfs hbase column-family


    【解决方案1】:

    根据定义,表是逻辑上属于一起的数据的组织单位。列族为您提供了一种在表中创建子结构的方法,以便根据您的访问模式优化性能(这是它解决的问题)。

    实际上,尽管表中的列族“单独”存储在不同的文件中,但它们也“附近”存储,因为 HBase 将给定行的所有值存储在同一区域中。这包括列族的单独文件。尽管它们位于不同的文件中,但它们属于同一个 Region Server。

    相比之下,如果您将数据划分到不同的表中,同一“行”的部分将位于不同的 HBase 区域中,并且在访问它们时,您将支付在集群中不同区域服务器上查找的开销。

    因此,如果您选择将一些数据放在单独的表中而不是列族中,那么您不仅会以难以管理的方式组织数据,还会损失很多性能HBase 的优势。

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2017-02-26
      相关资源
      最近更新 更多