2008-11-30 3 views
2

Я разрабатываю приложение Adobe AIR, которое хранит данные локально с использованием базы данных SQLite. В любое время я хочу, чтобы конечный пользователь синхронизовал свои локальные данные с центральной базой данных MySQL.Синхронизация баз данных

Любые советы, советы по правильному праву? Производительность и стабильность является ключевым (помимо безопасности;))

+0

Предполагаю, вы хотите синхронизировать данные «в обоих направлениях»? – aaaidan 2008-12-08 03:27:01

ответ

1

Я могу придумать несколько способов:

  1. Периодически дамп базы данных MySQL и создать новую базу данных SQLite из дампа. Затем вы можете обслуживать базу данных SQLite (базы данных SQLite содержатся в одном файле) для вашего клиента для загрузки и замены текущей базы данных.

  2. Создайте скрипт diff, который генерирует необходимые операторы, чтобы довести текущую базу данных до скорости (различные инструкции INSERT, UPDATE и DELETE). Для этого вы должны постоянно записывать время каждого изменения в своей базе данных (время создания и обновления для каждой строки и сохранять историю удаленных строк). Клиент пользователя загрузит файл diff (текстовый файл различных операторов) и применит его в локальной базе данных.

Оба подхода имеют свои плюсы и минусы - путем сброса всей базы данных, вы убедитесь, что все данные проходят. Это также намного проще, чем создание diff, однако оно может увеличить нагрузку на сервер, в зависимости от того, как часто база данных обновляется между дампами.

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

1

Если вы просто синхронизируете сервер с клиентом, решение Eran должно работать.

Если вы просто синхронизируетесь с клиентом на сервере, просто отмените его.

Если вы синхронизируете оба способа, получайте удовольствие. Вероятно, вы, вероятно, захотите сохранить журналы изменений, и вам нужно выяснить, как бороться с конфликтами.

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