2009-12-24 4 views
0

Я знаю, что это xmas eve, так что самое время найти хардкорных программистов онлайн :).Схема синхронизации SQlite

У меня есть sqlite db fiel, который содержит запись более 10 К, я генерирую db из базы данных mysql, я построил sqlite db в своем приложении iphone обычным способом.

Записи содержат информацию о товарах и их ценах, магазинах и т. Д., Эта информация, конечно, не статична, я использую автоматическую схему для заполнения и обновления моего mysql db.

Теперь, как я могу обновить базу данных sqlite приложения iphoen с помощью новой информации, доступной в mysql db, структура db по-прежнему остается прежней, но записи содержат новую информацию.

Спасибо. Ахед

информация: libsqlite3.0, iphone OS 3.1, MySQL 2005, Mac OS X 10.6.2

ответ

1

Существует вопрос, который вы должны ответить на первый; Как вы определяете набор измененных записей в базе данных MySQL?

Или, более конкретно, учитывая, что база данных MySQL находится в состоянии A, происходят некоторые транзакции и теперь она находится в состоянии B, откуда вы знаете, что изменилось между A и B?

Нижняя линия; вам нужна схема в MySQL, которая позволяет это. Как только вы ответили , что вопрос, вы можете ответить на вопрос «как мне синхронизировать проблему?».

0

Вы можете найти много других подобных вопросов путем поиска «синхронизации iPhone»:

https://stackoverflow.com/search?q=iphone+synchronization

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

Три - это несколько способов, которые я мог себе представить, делая это. Первый заключается в том, чтобы просто загрузить всю базу данных во время каждого обновления. Другим способом, который я описываю ниже, было бы создание таблицы «log» для записи изменений в основную таблицу, а затем загрузки только новых журналов при выполнении обновления.

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

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

Имея всего 10 тыс. Записей, я бы не ожидал, что эта таблица журналов станет такой огромной.

Вы бы в sqlite отслеживали последнюю версию, загруженную с mysql. Чтобы обновить таблицу, вы должны загрузить все записи журнала после последнего обновления, а затем применить их к своей таблице sqlite.

1

У меня есть аналогичное приложение.

Я использую Push Notification, чтобы мои пользователи знали, что есть новые или обновленные данные.

Каждый раз, когда обновляется запись на сервере, я сохраняю последовательный номер записи вместе с записью.

Каждый зарегистрированный UDID имеет связанный с ним «последний обновленный» номер, который содержит самый высокий номер записи, который он когда-либо загружал.

Когда какое-либо данное устройство приходит, чтобы получить его обновления, все данные базы данных, большие, чем последний обновленный номер записи UDID, хранящийся на сервере, отправляются на устройство. Если все будет хорошо, последний обновленный номер записи для UDID будет установлен на последний номер отправленной записи.

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

Кажется, что он хорошо работает.

-t

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