gpt4 book ai didi

java - 为什么我们需要在 Hbase 中使用列族?

转载 作者:行者123 更新时间:2023-12-04 14:10:25 25 4
gpt4 key购买 nike

有列族的原因是什么?例子:
场景一:

Table Row-Key ColumnFamily1 ColumnFamily2 ColumnFamily3
场景二:
Table1 Row-Key Column1...ColumnN
Table2 Row-Key Column1...ColumnN
Table3 Row-Key Column1...ColumnN
场景一,虽然一个表可以有很多列族,但是所有的列族都是分开存放的。那为什么会有列族本身的概念呢?为什么不能有简单的场景 2?同样在场景 2 中,我不会阻止 HBase 提供的任何功能。您仍然可以稍后添加动态列(和其他功能)。
我唯一关心的是,如果列族是分开存储的,那么为什么它们在同一个表中?我只对列族的意图是什么(以及它解决什么问题)感兴趣?

最佳答案

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

关于java - 为什么我们需要在 Hbase 中使用列族?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64944559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com