我目前正在学习hbase,但与rdbms相比,我无法理解它。hbase是如何面向列的,我们使用rowid和列族将数据插入hbase。例如,如果我有两个员工记录,我将为所有列族(cf:id,name,salary)插入第1行,为所有列族插入第2行id这里我们还插入了rdbms之类的数据,为什么我们称之为面向列的呢?非常感谢你的帮助。谢谢文卡塔
wnavrhmk1#
在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
这些都是有效的记录。
1条答案
按热度按时间wnavrhmk1#
在rdmbs中,您有一个固定的模式,这意味着每一行都有相同的列。在hbase中,并非如此,每行可以有不同的(列数)。这就是为什么它被认为是一个柱状存储。
例如,您可以有这样一个表:
如您所见,这里有两行包含两个列族(cf1和cf2)的值,但单元格的数量不同。在关系数据库中,这是不可能的。唯一的方法是预先预测所有可能的列并包含它们,但是在这种情况下,对于没有值的每个单元格,都会有空值。
例如,您可以有如下记录:
这些都是有效的记录。