Hbase是否以十六进制格式存储数据?

时间:2013-04-26 06:33:29

标签: hbase

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

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

1 个答案:

答案 0 :(得分:2)

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

此外,与以原始格式存储相同值相比,有时以序列化byte []形式存储值可节省几个字节。当你处理BigData时,这种轻微的节省变得非常重要。

因此,这背后的概念是Hbase将everthing存储为byte []以加快速度并提高存储效率,将内部数据结构的开销保持在最低水平。

希望这能回答你的问题。