Как вы управляете двусторонней синхронизацией между «основным» сервером базы данных и многими «вторичными» серверами, в частности разрешением конфликтов, при условии, что соединение не всегда доступно?
Например, у меня есть мобильное приложение, которое использует CoreData в качестве «базы данных» на iOS, и я хотел бы позволить пользователям редактировать содержимое без подключения к Интернету. В то же время эта информация доступна на веб-сайте, к которому будут подключаться устройства. Что мне делать, если / когда данные на двух серверах БД конфликтуют?
(Я называю CoreData сервером БД, хотя я знаю, что это немного другое.)
Существуют ли какие-либо общие стратегии для решения этой проблемы? Вот варианты, которые я могу придумать:
1. Всегда использовать данные на стороне клиента в качестве более высокого приоритета.
2. То же самое для стороны на сервере.
3. Попробуйте разрешить конфликты, отметив метку времени для каждого поля и выполнив последнее изменение.
Хотя я уверен, что третий вариант откроет место для разрушительного повреждения данных.
Я знаю, что теорема CAP касается этого, но мне нужна только возможная последовательность, поэтому она не исключает ее полностью, верно?
Смежный вопрос: Лучшие практики для двусторонней синхронизации данных . Второй ответ на этот вопрос говорит, что это, вероятно, не может быть сделано.