HBase中rowName和id有什么区别?

What is the difference between rowName and id in 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 作为 id 还是 rowName 不仅仅是 id

我认为,您将 row key 称为 row name

Row Key设计是HBaseTable设计的重要组成部分。

行键用于索引 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