Я хочу построить систему со следующими требованиями к репликации данных.
На картинке прикреплено:
- Узел 1 имеет 2 сущности: сущность 1 и сущность 2.
- Каждая сущность имеет несколько строк данных, скажем (Row1, Row2, Row3)
- Узел 2 и Узел 3 являются полной копией Узла 1 и, возможно, в одном центре обработки данных.
- Узел 4 находится в другом месте и имеет только Строку 1 от Entity1 и Entity2.
- Узел 5 находится в другом месте и имеет только Row2 от Entity 1 и Entity2.
Идея заключается в том, что Node4 и Node5 будут находиться в географической близости от системы-потребителя, и потребитель может обмениваться данными с локальными копиями в Node 4 и Node5, если сеть не работает.
В обычный рабочий день - допустимо ограничить все записи для Узла 1 и разрешить Узлу 4 или Узлу 5 выполнять запись только тогда, когда Узел 1 не работает.
Я не уверен, какая база данных может поддерживать это без расширенного управления через код.
Репликация модели данных
Пока я нашел это:
- Cassandra может выполнять репликацию на основе пространства ключей, но это может быть сложно, так как у меня более 2000 удаленных мест для частичных данных. Я могу подумать о том, чтобы сказать 200 пространств клавиш с 10 расположениями, совместно использующими одно и то же пространство клавиш, что создает меньшие издержки, даже если данные, скопированные на локальные узлы, не всегда будут им полезны.
- Mongodb имеет открытый запрос на эту функцию (https://jira.mongodb.org/browse/SERVER-1559)
- Couchbase имеет фильтрацию на основе XDCR, которая выглядит как потенциальное решение.
Подскажите, пожалуйста, верно ли мое понимание?