Теорема CAP - асинхронная запись и согласованность - PullRequest
1 голос
/ 14 апреля 2019

Говоря, что система является CP (последовательной и секционированной), означает ли это, что мы не можем использовать асинхронную синхронизацию между реплицированными узлами данных и что каждая запись должна копироваться синхронно (и даже транзакционно)?

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

1 Ответ

1 голос
/ 14 апреля 2019

Когда говорят, что система является CP (согласованной и секционированной), означает ли это, что мы не можем использовать асинхронную синхронизацию между реплицированными узлами данных

Да, невозможно построить CP систему на основе асинхронной репликации.

Также я не могу согласиться с тем, что в CP P означает «секционирован», потому что секционирование связано с проблемами масштабируемости базы данных. Я думаю, что CP следует рассматривать как "непротиворечивый в случае сетевого раздела".

и что каждая запись должна копироваться синхронно?

Верно, но есть оптимизация: реплицировать данные синхронно не на все узлы, а на большинство узлов, и асинхронно на остальные узлы.

(и даже транзакционно)

Я думаю, что это зависит от типа базы данных (поддерживает ли она транзакции или нет) и от того, как определить сам термин транзакции (например, совместимый с ACID или нет). С моей точки зрения это на самом деле не относится к основным пунктам теоремы CAP.

согласованность означает, что для каждой записи последующие чтения (с любого узла) будут получать последнее обновление.

Да, в общем, но существует гораздо больше моделей согласованности, см. https://jepsen.io/consistency

В случае, если мы выполняем запись в определенный узел и синхронизируем другие узлы асинхронно, чтения, которые произойдут до окончания синхронизации, могут не получить самую последнюю запись.

True.

...