hbase如何面向列?

时间:2017-03-28 18:44:11

标签: hbase

我正在学习HBase在与RDBMS比较时我无法理解。

  1. hbase如何面向列,我们使用rowid和column系列将数据插入到hbase中。
  2. 例如,如果我有两个员工记录,我将为所有列族插入row1(cf:id,name,salary) 对于第二行,我将为所有列族插入row2 id

    这里我们也插入了像RDBMS这样的数据,那么为什么我们将其称为面向列?

    你的帮助非常感谢。

    由于 文卡塔

1 个答案:

答案 0 :(得分:0)

在RDMBS中,您有一个固定的架构,这意味着每一行都有相同的列。在HBase中并非如此,每行可以有不同的(列数)列。这就是它被认为是柱状存储的原因。

例如,你可以有一个这样的表:

row1key, cf1:c1, cf1:c2, cf1:c5, cf2:col1, cf2:col5
row2key, cf1:c2, cf1:c3, cf2:col1, cf2:col7, cf2:col8

正如您所看到的,这里有两行包含两个列族(cf1和cf2)的值,但是对于不同的(多个)单元格。在关系数据库中,这是不可能的。唯一的方法是预测所有可能的列并提前包含它们,但在这种情况下,每个没有值的单元格都会有NULL值。

对于您的示例,您可以拥有以下记录:

employee1, id1, name1, salary1
employee2, id2, salary2
employee3, id3, name3
employee4, id4

这些都是有效的记录。