Существуют две основные базы данных и две копии только для чтения, обновляемые стандартной репликацией транзакций.Необходимо сопоставить некоторый объект из обеих баз данных только для чтения, допустим, что базы данных A содержат заказы, а базы данных B содержат строки.
Репликация http://i46.tinypic.com/1tacsx.png
Проблема заключается в том, что репликация в однуБаза данных может отставать от репликации второй базы данных, и в момент сопоставления R-базы данных будут иметь противоречивые данные.Например.
Мы сохранили 2 заказа со строками в 19:00 и 19:03.Процесс сопоставления начался в 19:05, но к моменту сопоставления Репликация базы данных обработала все изменения до 19:03, но репликация базы данных B обработала только изменения до 19:00.После отображения у нас будет сущность заказа с порядком на 19:03 и строками на 19:00.Проблемы гарантированы:)
В моем конкретном случае обе базы данных имеют временную модель, поэтому можно получать данные для каждого отрезка времени, но проблема заключается в определении времени последней репликации.
Вопрос: Как синхронизировать процессы репликации для нескольких баз данных, чтобы избежать ситуации, описанной выше?Или, другими словами, как сравнить последнее время репликации в каждой базе данных?
UPD:
Единственный способ синхронизации - непрерывная запись меток времени в служебные таблицы в каждой базе данных ипроверить эти метки времени на реплицированных серверах.Это приемлемое решение?