2010-07-20 3 views
3

Возможно ли это, и если да, то как я могу эффективно синхронизировать локальную базу данных с глобальным, так что когда действие выполняется в локальной версии, оно также выполняется на глобальном база данных. Простое использование контроля версий для подрыва глобального недопустимо, так как может быть несколько локальных копий базы данных в соответствии с количеством людей, вносящих изменения в базу данных. Другими словами, можно просто иметь зеркало базы данных, чтобы его можно было получить локально, даже если он находится где-то в сети.Синхронизация локальной базы данных SQLite с сервером SQLite DB

ответ

4

Синхронизация баз данных, если очень сложная тема. Самый простой подход - сохранить запись на уровне приложения (или, несмотря на то, что пользовательская оболочка sqlite) всех запросов выполняется против каждой системы, а затем запускать их снова при синхронизации.

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

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

Смежные вопросы