Синхронизировать локальную БД SQLite с серверной БД SQLite - PullRequest
3 голосов
/ 20 июля 2010

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

1 Ответ

4 голосов
/ 20 июля 2010

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

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

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

...