代码之家  ›  专栏  ›  技术社区  ›  Pasha

hbase中rowname和id的区别是什么?

  •  0
  • Pasha  · 技术社区  · 6 年前

    比如说,我有这样的实体,我想坚持到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 作为一个 身份证件 行名 有什么比 身份证件 ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nishu Tayal    6 年前

    我想,你指的是 row key 作为一个 row name .

    行键设计是HBase表设计的重要组成部分。

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