为什么HBase RowKey、ColumnKey和value是二进制值(字节),而不是String?
Why HBase RowKey, ColumnKey and value are binary values (bytes), but not String?
A HBase 值由 4 个键索引:TableName
、RowKey
, ColumnKey
, Timestamp
.
其中:
TableName
是一个字符串
RowKey
和 ColumnKey
是二进制值(Java type byte[])
Timestamp
是一个64位整数(Java类型long)
- value 是一个未解释的字节数组(Java™ type byte[])
二进制数据以 Base64 编码以通过网络传输。
为什么键和值使用字节而不是字符串存储?
因为您可能需要在限定符和值中存储二进制数据。例如,我们有这样的前缀限定符:'prefix[binary int64 id]' 并将 protobuf 序列化为值。您可以使用 ColumnPrefixFilter 来获取这些值。
在其他情况下,我们有一个列族 'i' 限定符 'binary 64int id' 和值二进制值。所以这个列族中的所有限定符都是二进制的,你可以只扫描这个族。
A HBase 值由 4 个键索引:TableName
、RowKey
, ColumnKey
, Timestamp
.
其中:
TableName
是一个字符串RowKey
和ColumnKey
是二进制值(Java type byte[])Timestamp
是一个64位整数(Java类型long)- value 是一个未解释的字节数组(Java™ type byte[])
二进制数据以 Base64 编码以通过网络传输。
为什么键和值使用字节而不是字符串存储?
因为您可能需要在限定符和值中存储二进制数据。例如,我们有这样的前缀限定符:'prefix[binary int64 id]' 并将 protobuf 序列化为值。您可以使用 ColumnPrefixFilter 来获取这些值。 在其他情况下,我们有一个列族 'i' 限定符 'binary 64int id' 和值二进制值。所以这个列族中的所有限定符都是二进制的,你可以只扫描这个族。