Как справиться с синхронизацией пользовательской базы данных с главной базой данных на сервере? - PullRequest
1 голос
/ 15 декабря 2010

Итак, я планирую приложение, которое будет включать в себя основную базу данных на сервере, скажем, 3000 компакт-дисков с колонками Title, Artist и Date Release.

1) Когда пользователь добавляетCD к их коллекции, он добавит его в приложения локальной базы данных SQLite.Но, допустим, я неправильно написала название компакт-диска, поэтому я обновляю его.Когда пользователь идет на синхронизацию, как мне поступить с обработкой обновленной строки?Должен ли я иметь столбец IsUpdated, представляющий собой просто числовое значение, которое увеличивается на единицу при каждом обновлении этой строки?Таким образом, когда приложение видит IsUpdated на сервере больше, чем локальное IsUpdated для этого конкретного элемента, оно теперь будет заменять содержимое.Имеет ли это смысл?Это даже практично?Какой еще вариант будет?

2) Как мне поступить с добавлением новых столбцов?Как добавить штрих-код или цену?Должен ли я просто загрузить обновление для приложения, которое добавляет новые столбцы локально, затем сделать то же самое на сервере, и позволить остальным запустить его?Что также дало бы номер 1 с проблемой синхронизации.

1 Ответ

1 голос
/ 15 декабря 2010

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

Звучит так.

Хорошо, так что если это так, то это не проблема проектирования БД, а репликация.

Плохая идея обновлять каждую строку в таблице, особенно ту, которая увеличивает длину строки. Вам будет лучше просто уронить стол и воссоздать. <--- вот как это работает в RDBMS на серверах, не знаю, изменится ли эта концепция на клиентской базе данных. И теперь мы переходим к вопросам репликации iPhone больше, чем к простой репликации БД. Будет ли лучше просто переиздать приложение? Данные пользователя отделены от данных сервера. Можно ли выполнить DDL для локальных / удаленных таблиц после публикации? </p>

Вместо поиска во всем списке изменений, как вы обрисовали в общих чертах в # 1. Я бы держал устаревшую таблицу дельты. Локальное приложение будет хранить last_updated_Datetime, любые записи в дельта-таблице после этого datetime должны быть сброшены. После загрузки локальная система может определить, как их применять. Опять же, это не подходит для массовых изменений.

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