Почему RDBMS Partition Tolerant в теореме CAP и почему она доступна?

Две точки, которые я не понимаю о RDBMS, являющихся CA в теореме CAP:

1) В нем говорится, что RDBMS не Толерантность разделов, но как RDBMS менее разделяет Tolerant, чем другие технологии, такие как MongoDB или Cassandra? Есть ли установка RDBMS, где мы отказываемся от CA, чтобы сделать ее AP или CP?

2) Как это доступно CAP? Это через мастер-подчиненную настройку? Как и в случае, когда мастер умирает, подчиненный берет на себя записи?

Я новичок в архитектуре БД и теореме CAP, поэтому, пожалуйста, несите меня.

Ответ 1

В настоящее время множество баз данных имеют разные конфигурации и в зависимости от настроек, которые вы устанавливаете, это могут быть CA, CP, AP и т.д., но не могут одновременно выполнять все три. Некоторые базы данных на самом деле прилагают усилия для поддержки всех трех, но по-прежнему уделяют приоритетное внимание их определенному пути.

Например, MySQL может быть CP и CA в зависимости от конфигураций. По умолчанию это CA, потому что он следует парадигме ведущего подчиненного, данные которой реплицируются на подчиненные. Толерантность разделяется на то, что набор подчиненных устройств теряет соединение с мастером и поэтому решает избрать нового мастера, создающего два мастера с собственным набором подчиненных устройств.

Однако MySQL также имеет другую конфигурацию, которая представляет собой кластерную конфигурацию. Он определяет приоритет CP по доступности, например. кластер отключится, если для обслуживания всех данных недостаточно активных узлов.

Вероятно, для MySQL существует больше конфигураций, что позволяет удовлетворить другие комбинации теорем CAP, но в целом я просто хотел сказать, что это зависит от того, что требует ваша система. Иногда базы данных лучше подходят для одной конфигурации и другой, поэтому лучше всего увидеть, какие проблемы могут возникать при использовании определенной конфигурации.

Что касается реализации теоремы CAP, я бы посоветовал более подробно изучить различные базы данных и как они реализуют приоритеты для теоремы CAP. Существует слишком много разных способов их реализации, например. как правило, основная ведомая модель используется для систем CA, хеш-кольца для систем AP и т.д.

Ответ 2

Я согласен, что RDBMS может иметь все свойства CAP. Я начал изучать базы данных noSQL и имел опыт работы с IBM DB2.

Вот как IBM DB2 удовлетворяет всем 3 свойствам CAP

  1. C: Согласованность: каждая реляционная база данных удовлетворяет этому из-за транзакционной природы СУБД.

  2. A: Доступность: Доступность означает, что когда выполняется запрос к существующим данным, они должны быть возвращены. Опять же, реляционная база данных разработана, чтобы сделать это легко.

  3. П: Толерантность к разделу: это самый интересный. С точки зрения DB2, в приложении, над которым я работал, у нас было 2 базы данных, распределенные по разным центрам обработки данных. Один был первичным и общался со вторичным через сердцебиение. Каждая из этих первичных и вторичных баз данных имела 12 физических экземпляров, где данные распространялись на основе некоторой предопределенной логики. Если первичный выходит из строя, вторичный обнаруживает это и занимает место первичного. Поскольку первичный и вторичный всегда были синхронизированы, данные также остаются согласованными.

Вот как я думаю, что СУБД удовлетворяет всем 3 свойствам теоремы CAP.

Я могу ошибаться и открыта для обсуждения по этому вопросу.

Ответ 4

СУБД - это система CA, она не терпит допусков разделов. В случае автономного сервера нет сети узлов для хранения. Таким образом, машина БД является согласованной (записи, сделанные кем-то, сразу видны для чтения другими) и доступной (пока машина БД работает, данные доступны), но не терпит разбиения (если соединение с одиночной машиной базы данных недоступно, данные недоступны).

Даже с конфигурациями AlwaysOn и master-slave RDBMS не гарантирует большей устойчивости к разделам, чем в противном случае. Всегда есть один основной компьютер для запросов на запись, и можно потерять соединение с основным компьютером.

По сути, в RDBMS - на одном узле, что означает, что не нужно беспокоиться о разделах. Перегородки находятся между узлами.

Ответ 5

Теорема CAP проблематична и применима только к системам распределенных баз данных. Когда у вас есть распределенные базы данных, могут произойти сбой сетевого раздела и узла. И когда происходит разделение сети, вы должны иметь допуск раздела (P вашего CAP).

Итак, чтобы ответить на ваш вопрос № 1) Это либо СР, либо АР. Это может быть настроено как будет сказано.

Подробнее о том, почему допуск раздела является обязательным: https://codahale.com/you-cant-sacrifice-partition-tolerance/

Подробнее о проблемах, связанных с теоремой CAP: https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html