В чем разница между rowName и id в HBase? - PullRequest
0 голосов
/ 21 января 2019

Скажите, у меня есть такая сущность, которую я хочу сохранить в 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?

1 Ответ

0 голосов
/ 22 января 2019

Я думаю, вы ссылаетесь на row key как row name.

Конструкция ключа строки является важной частью дизайна HBase Table.

Ключ строки используется для индексации таблиц HBase.Строки в HBase сортируются лексикографически по ключу строки.Эта схема оптимизирует сканирование, позволяя хранить связанные строки в одной и той же области или строки, которые будут считываться вместе, рядом друг с другом.

HBase определяет, в какую область будет поступать запись.

Хотя ID как часть вашего примера является частью типа записи Message.Он может храниться в семействе столбцов в виде столбца.Но это не повлияет на решение, в какой регион должна быть записана запись.

Также, если у вас есть несколько семейств столбцов с одним и тем же типом сообщения, но с разными идентификаторами, вы можете хранить все в одной строке (с одним ключом строки).Каждая строка имеет временную метку, связанную с семейством столбцов и квалификатором столбца.

<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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...