Как HBase гарантирует атомарность на уровне строк? - PullRequest
8 голосов
/ 31 июля 2011

Учитывая тот факт, что HBase хранит каждое семейство столбцов в отдельном HFile, а также тот факт, что строка может охватывать множество семейств столбцов.Как HBase гарантирует, что операция ввода / удаления в строке, охватывающей несколько семейств столбцов, действительно атомарна?

Ответы [ 2 ]

7 голосов
/ 01 августа 2011

Все записи в строку, независимо от того, сколько семейств столбцов может быть в этой строке, идут на один регион-сервер, и этот регион-сервер затем записывает изменения в регионы WAL (Hlog), затем записи синхронизируются, затем данные добавляются в хранилище, чтобы их можно было обслуживать. Затем, как только хранилище данных достигнет своего предела, оно будет записано на диск. Если с сервером региона возникают какие-либо проблемы, и он выходит из строя / умирает / выдернул штепсельную вилку, можно выполнить WAL, чтобы сохранить целостность. Для получения дополнительной информации см. HBASE-2283 и Hbase Architecture 101 .

1 голос
/ 04 августа 2011

HBase в настоящее время достигает атомарности на уровне строк, несмотря на запись нескольких файлов HFile путем одновременной очистки всех семейств столбцов. Сброс срабатывает, когда наибольшее семейство столбцов достигает настроенного размера сброса. Существует дополнительная временная метка уровня MemStore, которая позволяет выполнять многовариантный контроль параллелизма для операций чтения MemStore, но ее нет для ключей / значений, записываемых в HFiles. Переключение на сброс для каждого семейства столбцов (желательная функция для повышения эффективности) потребовало бы добавления аналогичной отметки времени в формат файла.

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