我正在学习HBase在与RDBMS比较时我无法理解。
例如,如果我有两个员工记录,我将为所有列族插入row1(cf:id,name,salary) 对于第二行,我将为所有列族插入row2 id
这里我们也插入了像RDBMS这样的数据,那么为什么我们将其称为面向列?
你的帮助非常感谢。
由于 文卡塔
答案 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
这些都是有效的记录。