Синхронизация баз данных - PullRequest
2 голосов
/ 30 ноября 2008

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

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

Ответы [ 2 ]

1 голос
/ 09 декабря 2008

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

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

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

1 голос
/ 30 ноября 2008

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

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

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

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

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

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