Clarion 6.0(ABC)
Всем привет.
Помогите мне решить вопрос с синхронизацией баз данных.
В чем суть: одна и та же СУБД установлена на двух несвязанных компах, которые наполняют базу каждый по-своему.
Необходимо иногда базы на этих компах синхронизировать с помощью промежуточного носителя(USB-шки), т.е. первый комп хочу синхронизировать с флэшкой, затем второй комп хочу синхронизировать с той же флэшкой(соответственно, используя данные с первого компа), а потом, то же самое в обратном порядке.
Можно ли реализовать эту процедуру?
Извините за сумбурность описания проблемы.
Вопрос о синхронизации
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 12 Декабрь 2008, 12:09
- Откуда: Верхний Уфалей
- Контактная информация:
Re: Вопрос о синхронизации
Все зависит от того как постороена бд.
Без особых проблем можно:
Если бд изначально задумана для таких манипуляций,
если нет пересечений в записях: одну и туже информацию НЕ правят на обоих компах, значения уникальных полей уникальны для всей бд (1я бд + 2я бд).
Можно если перепроектировать бд с учетом задачи синхронизации.
Без особых проблем можно:
Если бд изначально задумана для таких манипуляций,
если нет пересечений в записях: одну и туже информацию НЕ правят на обоих компах, значения уникальных полей уникальны для всей бд (1я бд + 2я бд).
Можно если перепроектировать бд с учетом задачи синхронизации.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8034
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Re: Вопрос о синхронизации
Привет !
Если говорить об общем случае, то по теории репликации БД все выглядит достаточно просто.
1. Каждая запись в БД должна иметь уникальный код, на практике используют GUID.
2. При "выгрузке на флешку" делается полная копия БД в файл, в котором указывается номер файла в БД, код записи в этом файле и ее содержание (например в BLOB).
3. При востановлении данных (синхронизации) проверяем наличие записи с кодом в файле с указанным номером. При ее отсутвии - добавляем.
В общем-то и все. На практике конечно будут мелкие ньюансы. Например, не должно быть других уникальных ключей, кроме как с использованием кода записи, иначе могут возникнуть ошибки при дублирования ключа при восстанвлении. Или эту проблему нужно как-то разруливать, не забывая о связях по ключу с другими списками БД.
Что делать если при восстановлении запись в БД есть, но она была изменена ? Что делать если при восстановлении записи нет, но она была раньше и была удалена ?
И т.д. и т.п. - но это уже рабочие вопросы ...
Если говорить об общем случае, то по теории репликации БД все выглядит достаточно просто.
1. Каждая запись в БД должна иметь уникальный код, на практике используют GUID.
2. При "выгрузке на флешку" делается полная копия БД в файл, в котором указывается номер файла в БД, код записи в этом файле и ее содержание (например в BLOB).
3. При востановлении данных (синхронизации) проверяем наличие записи с кодом в файле с указанным номером. При ее отсутвии - добавляем.
В общем-то и все. На практике конечно будут мелкие ньюансы. Например, не должно быть других уникальных ключей, кроме как с использованием кода записи, иначе могут возникнуть ошибки при дублирования ключа при восстанвлении. Или эту проблему нужно как-то разруливать, не забывая о связях по ключу с другими списками БД.
Что делать если при восстановлении запись в БД есть, но она была изменена ? Что делать если при восстановлении записи нет, но она была раньше и была удалена ?
И т.д. и т.п. - но это уже рабочие вопросы ...

Make Clarion Great Again ! 
Re: Вопрос о синхронизации
Здравствуйте.
Все записи уникальны. Процесс синхронизации потенциально для себя решил сразу (с помощью ADD в прямом и обратном порядке).
Вопрос задал неправильно - я имел ввиду, как открывать с компа базы на флэшке, путь к которым может быть разным и учитывая, что Буква диска у флэшки может быть тоже разная на разных компах.
Считал, что указание пути файла в NAME (DOS filename specification (PROP:NAME)) в описании файла должно быть строгим(наприимер, C:\BAZA\BAZA.TPS). Оказывается это не так.
Задачу для себя решил очень просто.
Спасибо всем за советы и рекомендации.
Все записи уникальны. Процесс синхронизации потенциально для себя решил сразу (с помощью ADD в прямом и обратном порядке).
Вопрос задал неправильно - я имел ввиду, как открывать с компа базы на флэшке, путь к которым может быть разным и учитывая, что Буква диска у флэшки может быть тоже разная на разных компах.
Считал, что указание пути файла в NAME (DOS filename specification (PROP:NAME)) в описании файла должно быть строгим(наприимер, C:\BAZA\BAZA.TPS). Оказывается это не так.
Задачу для себя решил очень просто.
Спасибо всем за советы и рекомендации.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'