Могу ответить только за MongoDB.
MongoDB не имеет транзакций на стороне сервера. Это не означает, что ожидается, что все вставки будут одним документом, потому что многоуровневое вложение документов на 3 или 5 уровней может стать проблемой. Более того, в настоящее время он просто не поддерживается, и сообщество, использующее MongoDB, лично решило проголосовать и поддержать различные функции.
При этом MongoDB может выполнять транзакции на стороне клиента: http://docs.mongodb.org/manual/tutorial/perform-two-phase-commit/, однако, поскольку он не изолирован от самого сервера базы данных, он по-прежнему открыт для определенных сценариев сбоя, которые могут повлиять на его способность создавать целостную транзакцию.
При этом, если бы вы написали своего рода демона, который бы управлял вашими транзакционными запросами в кластере, я не вижу причин, по которым он был бы менее надежным, чем то, что может предложить HBase.
Я не могу говорить о согласованности HBase, поскольку я лично фактически не использовал HBase в производственной среде, однако MongoDB имеет все нормальные уровни согласованности чтения и записи для отдельных запросов, которые вы ожидаете от HBase и SQL, что позволяет обеспечить безопасный уровень вставки, который действительно может реплицироваться на другие узлы кластера до того, как ваше приложение получит успешный обратный вызов для операции. Фактически, настройка MongoDB по умолчанию не является согласованной, однако вы можете сделать это как таковой.
Я лично слышал здесь и в других местах, что предпочтение между согласованностью и репликацией между ними субъективно и сводится к вашему сценарию, оборудованию, платформе и другим особенностям, которые мы, вероятно, не можем здесь полностью рассмотреть.
person
Sammaye
schedule
25.10.2012