2013-07-29 2 views
5

У меня есть база данных Web Service и sqlite. В этом случае веб-служба будет использоваться для хранения данных внутри базы данных. Теперь я хочу включить функции синхронизации, поскольку - когда приложение запускается в это время, база данных начнет загружать данные своей таблицы через веб-службу.Синхронизация базы данных (sqlite) из WebService (Json/XML) для iOS

Теперь, после того, как я обновляю свой веб-сервис, база данных будет соответствующим образом обновлена. Мой вопрос в том, какие лучшие практики я должен соблюдать для этого обновления. Должен ли я очистить всю БД и снова добавить все строки (я знаю, что это займет много времени), но если это не так, то как моя база данных будет добавлять только определенные данные из веб-службы?

спасибо.

ответ

3

То, что я предлагаю вам это:

  1. магазин все ваше содержание вебсервис в дб первым при запуске приложения.
  2. отображает ваш контент на экране только из db.
  3. еще раз, когда вам нужно обновить или отозвать свои данные, просто обновите базу данных.

Таким образом, вы всегда сможете найти все свои свежие данные в базе данных.

+0

Я согласен с вами, и я делаю это в первый раз. Но мой вопрос заключается в том, когда база данных обновляется в соответствии с вашим 3-мя очками, в то время я должен заменить только новый контент или заменить все данные на новый. Замена старых данных на новый займет гораздо больше времени. – Vish

+1

Это зависит от потребностей человека. Да, конечно, замена займет больше времени, чем обновление. Но если есть изменение во всем веб-сервисе, вам нужно заменить базу данных. –

+0

Никаких изменений не во всем веб-сервисе, а только для определенных объектов. Так что же для этого делать? – Vish

3

Загрузка и обновление данных всего сервера окажется дорогостоящим. Он будет использовать большую пропускную способность и окажется дорогостоящим для вашего клиента. Вместо того, чтобы нажимать всю нагрузку (даже при незначительном обновлении), отправьте дельта. Я предлагаю вам поддерживать информацию о версии.

  1. Когда приложение загружает данные из веб-службы для указанной версии и успешно сохраняет ее в базе данных, установите текущую обновленную версию и в БД.
  2. Когда приложение запустится в следующий раз, сделайте запрос заголовка легкого веса, чтобы получить только информацию о версии с сервера. Сервер должен ответить на этот запрос заголовка с последним номером версии данных.
  3. Проверьте версию WS с текущей версией данных приложения, хранящейся в БД. Если на сервере установлена ​​обновленная версия, запустите синхронизацию.
  4. Информация об изменении версии должна быть дельта i.e.
    • Для новой версии сервер должен отправлять только информацию, которая была изменена с версии, доступной с устройством.
    • У вас должен быть способ расчета дельта между двумя версиями.
    • Информация о Delta обычно имеет такие разделы, как новые данные, обновленные данные, удаленные данные и т. Д.
    • Исходя из этого, приложение iOS сделает необходимые операции CRUD (создание, чтение, обновление и удаление) данных БД ,
  5. После обновления приложения iOS, вы можете обновить версию БД до последней полученной версии с сервера. До тех пор пусть он останется грязным для правильной обработки ошибок.

Надеюсь, что это поможет.

0

Прежде всего вам нужно установить весь контент webservice в ваш SQLITE. И то, что вы хотите отобразить, получит эти данные из SQLITE.и выполните opertaion в эту таблицу sqlite, и когда после всего этого вам нужно внести изменения, они будут сохранены в веб-сервис.

Следуйте за этим путем.

1

Я бы порекомендовал вам использовать превосходную поддержку Core Data 10.

Используя RKEntityMapping, вы можете отображать удаленные объекты из JSON или XML непосредственно в объекты Core Data в базе данных.

RestKit автоматически будет поддерживать базу данных для вас, вставляя и обновляя записи в зависимости от вашего веб-сервиса. (По моему опыту, я обнаружил, что удаление объектов требует крошечной дополнительной работы в зависимости от того, как RESTful работает ваш веб-сервис).

У RestKit определенно есть кривая обучения, но это стоит того: развернув ее несколько раз сейчас, это, безусловно, гораздо лучшее решение, чем ручная запись собственного кода синхронизации SQLite/Web Service.

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