HBase中的rowName和id有什么区别?

时间:2019-01-21 17:53:12

标签: hbase

说,我有一个要保留到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作为idrowName来使用,而不是id

1 个答案:

答案 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