1

我是 Hbase dbms 的新手。在尝试 hbase 的命令行 shell 时,我发现我可以读取 rowkey 、 col 系列和 col 限定符,因为它们以 String 打印出来,但值是以十六进制格式(或类似的格式)打印的。这背后的确切概念是什么?

hbase(main):045:0* scan 'testtable'
ROW                                    COLUMN+CELL                                                                                                     
 19992                                 column=info:ismember, timestamp=1366957536788, value=\x00
4

1 回答 1

2

No..Hbase 将所有内容存储为“字节数组”。这样一来,我们就可以毫不费力地存储任何类型的数据。例如,假设您必须将产品相关数据存储到您的 hbase 表中,例如 ID、品牌、国家/地区、价格等。要存储这些参数中的每一个,您必须提前处理每个参数的各个数据类型这肯定会增加一些开销。与 RDBMS 不同,hbase 在创建表时不会要求所有这些。因此,即使这些参数的数据类型明天发生变化,或者您决定添加一些参数(使用一些新数据类型),您所要做的就是将值包装在 Bytes.ToBytes() 中并将其推送到您的表中。所有这些都使插入更快。

此外,有时以序列化的 byte[] 形式存储值与以本机格式存储相同的值相比可以节省几个字节。当您处理大数据时,这种微小的节省变得非常重要。

因此,这背后的概念是 Hbase 将所有内容存储为 byte[] 以使事情更快并提高存储效率,从而将内部数据结构的开销保持在最低限度。

希望这能回答你的问题。

于 2013-04-28T22:53:22.127 回答