Как синхронизировать базу данных сервера MySQL и базу данных SQLite на сервере? - PullRequest
2 голосов
/ 09 марта 2010

Я разрабатываю приложение для iPhone, которое извлекает данные с удаленного сервера MySQL. Поскольку база данных огромна, я не хочу загружать данные при каждом запуске приложения, а просто хочу загрузить данные только один раз, а затем синхронизировать с базой данных SQLite. (Нет необходимости загружать снова и снова)

Если на удаленном сервере MySQL есть обновление, загружайте только обновленные данные.

Если на удаленном сервере MySQL есть операция вставки, то я могу определить по последнему вставленному идентификатору таблицы базы данных путем сравнения значений первичного ключа. Но как проверить операцию удаления и обновления с максимальной эффективностью, поэтому мне просто нужно загрузить минимум данные в результате операции удаления или обновления?

Любая помощь и предложение будут оценены.

Спасибо,
Джим.

1 Ответ

3 голосов
/ 09 марта 2010

Прежде всего, я бы сказал, вместо того, чтобы делать большую загрузку в первый раз, почему бы не поставлять ваше приложение вместо копии базы данных? Тогда вам нужно беспокоиться только о дополнительных обновлениях.

Если база данных не изменяется постоянно, я думаю, что самый простой способ сделать это - использовать журнал запросов. Включите ведение журнала запросов в БД MySQL, чтобы все операции записывались в файл. Затем, когда iPhone запрашивает обновленные данные, вы можете просто проанализировать файл журнала и подготовить ответ, который описывает вставки, обновления и удаления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...