说,我有一个要保留到HBase中的实体
public class Message {
private final String id;
private final String chatId;
private final String from;
private final String to;
private final long when;
}
我是否应该删除id
字段并仅生成rowName
作为id
或rowName
来使用,而不是id
?
答案 0 :(得分:1)
我认为,您将row key
称为row name
。
行键设计是HBase Table设计的关键部分。
行键用于索引HBase表。 HBase中的行按行键按字典顺序排序。该设计针对扫描进行了优化,使您可以将相关行存储在同一区域,或者将彼此相邻的行一起存储。
HBase可以确定记录将转到哪个区域。
在示例中,ID
是记录类型Message
的一部分。它可以作为列存储在列族中。但这不会决定应将记录写入哪个区域。
此外,如果您有多个具有相同消息类型但具有不同ID的列族,则可以将全部存储在一行中(使用一行键)。每行都有与列族和列限定符相关的时间戳。
<Row1, CF1<ID:1,Chat:abc,To:A1,From:B1>>,timestamp
<Row1, CF2<ID:1,Chat:abc,To:A1,From:B1>>,timestamp
您可以阅读更多有关它的内容: http://hbase.apache.org/0.94/book/rowkey.design.html