#database #hbase #google-cloud-bigtable #bigtable
#База данных #hbase #google-облако-bigtable #bigtable
Вопрос:
В настоящее время я просматриваю семь баз данных за семь недель и наткнулся на это утверждение.
HBase также обеспечивает надежные гарантии согласованности, упрощая переход от реляционных баз данных к некоторым вариантам использования. Наконец, HBase гарантирует атомарность на уровне строк, что означает, что вы можете иметь надежные гарантии согласованности на важнейшем уровне модели данных HBase.
У меня возникли некоторые проблемы с пониманием этого.
Мое поверхностное понимание заключается в том, что Apache HBase — это распределенная база данных, так что это что-то вроде Master-Slave?
Итак, когда вы выполняете запись, вы сначала делаете это на главном сервере, а затем мастер копирует записи на подчиненные устройства. Гарантия согласованности заключается в том, что все подчиненные устройства имеют одинаковые одинаковые значения для своих записей? Итак, высокая гарантия согласованности означает, что все они будут иметь одинаковые значения, тогда как низкая гарантия согласованности означает, что мастер, возможно, записал изменения в некоторые из подчиненных устройств, но не во все (поэтому, если вы считываете значения с одного из подчиненных устройств, вы можете получить разные результаты, основанные на том, какиеподчиненный, с которого вы читаете)?
Это правильно до сих пор?
Итак, с HBase … «гарантирование атомарности на уровне строк» означает, что транзакция будет завершена только тогда, когда мастер записал все подчиненные устройства? И это обеспечивает высокую согласованность?
Я на правильном пути? Если нет, я был бы очень признателен за некоторые разъяснения относительно того, что означает этот абзац.
Большое вам спасибо!
Ответ №1:
Если под «master» вы подразумеваете region / shard / partition master, то вы на правильном пути. Каждый ключ строки связан ровно с одним регионом (терминология HBase для сегментов), и каждый регион реплицируется на нескольких серверах / дисках / стойках / что угодно. Существует только один сервер основного региона (или «главный»), с которым клиент взаимодействует в соответствии с каждым ключом строки.
Итак, с HBase … «гарантирование атомарности на уровне строк» означает, что транзакция будет завершена только тогда, когда мастер записал все подчиненные устройства? И это обеспечивает высокую согласованность?
Нет, согласованность и атомарность — это две разные вещи. HBase обеспечивает атомарность на уровне строк, что означает, что когда вы записываете в строку, то вся операция записи полностью завершена или ничего не изменилось — между ними нет (частичное обновление). Это не тот случай, когда вы записываете несколько строк в одной команде — некоторые могут меняться, а некоторые нет, но ни одна строка не будет частично обновлена или изменена. Согласованность (в данном контексте) означает, что обновления должны сначала подтверждаться удаленными репликами, прежде чем клиенты получат одобрение. Это делается в основном с помощью файла журнала транзакций на основе HDFS. Вы можете прочитать о HBase WAL для получения более подробной информации.