Возможно ли по-прежнему совершать транзакцию, которая включает операции чтения и записи в реплицированной базе данных? - PullRequest
0 голосов
/ 10 января 2020

У меня есть вопрос, который я не смог найти, хотя я прочитал всю книгу. Рассмотрим распределенную систему, в которой база данных реплицируется на пять серверов. В какой-то момент сеть между реплицированными серверами делает три сервера изолированными от оставшихся двух. Возможно ли по-прежнему совершать транзакцию, которая включает операции чтения и записи в реплицированной базе данных? Мотивировать

Буду признателен, если вы ответите на этот вопрос

1 Ответ

0 голосов
/ 20 января 2020

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

И ответ - это зависит; -)

Действительно. Это зависит от типа распределенной базы данных, с которой вы работаете. С точки зрения высокого уровня, это зависит от того, какой компромисс от CAP выбрана базой данных - это база данных CA или система CP? (Я использую это различие для краткости, см. https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html)

Если это система CA, то вы наверняка можете читать и записывать в любой раздел. Когда разделение мозга разрешено, тогда в базе данных есть некоторый инструмент восстановления, который восстанавливает разделы в согласованное состояние. Или база данных может оставить эту ответственность за пользователя, который получит набор возможных значений, и он должен решить, какое из них является правильным.

Если это система CP, то мы можем сказать, что это зависит от того, будете ли вы работать с раздел, состоящий из 3 серверов по 5 (вы работаете с большинством). Тогда вы можете читать и писать. Если ваш клиент подключается к второстепенному разделу (2 сервера из 5), вам, вероятно, не разрешено читать и писать. Но это зависит от последовательности, которую вы требуете. Если вам требуется возможность линеаризации, клиент не может ни читать, ни записывать.

...