Схема синхронизации SQlite

0

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

У меня есть 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

Теги:
sqlite3
iphone
synchronization

3 ответа

1

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

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

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

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

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

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

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

-t

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню