Как синхронизировать локальную базу данных iPhone с онлайн-базой данных, когда онлайн-база данных изменилась? - PullRequest
1 голос
/ 08 января 2011

В настоящее время мое приложение извлекает данные из базы данных Microsoft SQL 2005 через веб-службы ASP.NET XML, используя SOAP, когда ему нужны данные.

Я хотел бы изменить свое приложение, чтобы оно имело локальную базу данных, и эта база данных проверит, изменились ли данные, и синхронизируется с любыми новыми данными.

Как мне узнать, есть ли новые данные?

Должен ли я просто подсчитать количество строк в таблице SQL и, если оно меньше числа строк в базе данных CoreData, переписать базу данных CoreData?

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

Должен ли я синхронизировать все данные при запуске приложения или синхронизировать только таблицу, соответствующую представлению загрузки?

Любая помощь очень ценится!

Спасибо, -Mike

Ответы [ 2 ]

1 голос
/ 08 января 2011

Если вы умны с дизайном схемы, чем можете. Наилучшим вариантом, вероятно, является добавление полей даты «create_at» и «updated_at» в таблицы базы данных (и их установка при каждом изменении или создании записей). Затем в запросе на синхронизацию выберите все записи с датой, превышающей максимальную дату в вашей локальной базе данных. Это будет работать для ОДНОГО пути синхронизации. Двухсторонняя синхронизация намного сложнее и требует тщательного разрешения контактов.

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

0 голосов
/ 08 января 2011

Вам нужен способ определить, что изменилось в базе данных с момента вашего последнего подключения. SQL Server предлагает две платформы для этого: Отслеживание изменений и Сбор данных изменений . Для сравнения этих двух параметров см. Сравнение сбора данных об изменениях и отслеживания изменений . Эти платформы используются .Net Sync Framework для автоматизации синхронизации данных.

К сожалению, ни один из них не доступен в SQL Server 2005. Все они являются функциями SQL Server 2008, поэтому вам придется обновить.

В SQL Server 2005 вы можете отслеживать изменения только вручную. Есть несколько подходов, все несовершенные, и все они вращаются вокруг триггеров и таблиц отслеживания или вокруг отслеживания версий строк с помощью TIMESTAMP (проблема всегда заключается в том, как отслеживать удаленные строки).

Хотя в Core-Data имеется встроенная поддержка синхронизации (см. Синхронизация приложений с основными данными ), в вашем сценарии это невозможно.

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