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
说,我有这样的实体,我想坚持到 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