目前,我正在学习HBase,与关系数据库管理系统相比,我无法理解。
例如,如果我有两条雇员记录,我将为所有列族(cf: id、name、薪水)插入row1,对于第二行,我将为所有列族插入row2 id。
这里我们还插入了类似于RDBMS的数据,那么为什么我们称之为面向列的数据呢?
你的帮助真的很感激。
谢谢文卡塔
发布于 2017-06-22 05:51:28
在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)的值,但是对于不同的单元格(数量)。在关系数据库中,这是不可能的。唯一的方法是预先预测所有潜在的列,并预先包含它们,但在这种情况下,对于每个没有值的单元格,您将有空值。
对于您的例子,您可以拥有这样的记录:
employee1, id1, name1, salary1
employee2, id2, salary2
employee3, id3, name3
employee4, id4
这些都是有效的记录。
https://stackoverflow.com/questions/43077513
复制