powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм синхронизации БД
9 сообщений из 9, страница 1 из 1
Алгоритм синхронизации БД
    #38530675
wowow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть некая реляционная локальная БД, неважно какая.
В ней таблицы, все они имеют уникальный id и name (строка). id всегда уникальное для всех таблиц.
К БД есть локальное клиентское приложение, которое пишет и читает БД локально.
Необходимо синхронизировать периодически все эти БД (таблицы синхронизируются по полю name).
ИНТЕРЕСУЕТ АЛГОРИТМ СИНХРОНИЗАЦИИ ВСЕХ ЭТИХ БД!
Желательно такой алгоритм, который исключает потерю и искажение данных.
Можно привести несколько вариантов, если такие имеются. Их плюсы, минусы.

Сейчас тупо отслеживаю дату и время изменения, добавления, удаление записей. Но как то все это громозко и не красиво!

Пример, как только не запутывал dropbox, ан нет, все правильно синхронизирует. Надежно.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530677
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wowow,

Предполагается ли делать UPDATE в этой базе? Или только SELECT + INSERT+DELETE ?
wowowПример, как только не запутывал dropbox, ан нет, все правильно синхронизирует. Надежно.Повезло. Или показалось.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530680
wowow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftwowow,

Предполагается ли делать UPDATE в этой базе? Или только SELECT + INSERT+DELETE ?.

UPDATE будет конечно же. Обязательно, хотя предположу что можно удалять и добавлять в случае update. Но это опять же кривовато, хотя опять же приложение mail.cloud update делает только в новых версиях, а так до этого через удаление - добавление!
Облачные клиенты (dropbox, cloud.mail и т.д.) привожу только в качестве примера. У меня же учетная система.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530683
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wowowUPDATE будет конечно же.Тогда абстрактного идеального алгоритма не существует.
Будет нужно разбирать коллизии правок (т.е. когда правки одного объекта происходят одновременно в разных местах). Для чего нужно знание предметной области этих объектов.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530690
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wowowИНТЕРЕСУЕТ АЛГОРИТМ СИНХРОНИЗАЦИИ ВСЕХ ЭТИХ БД!Бери больше, кидай дальше, только надо предусмотреть либо контроль версий + 3-way merge, либо флажки "эта запись с такого-то момента времени редактируется таким-то клиентом" и 2-way merge, либо "контроль версий для бедных", когда приложение зовёт хранимку, и отдаёт ей и исходные и изменённые юзером значения полей, а хранимка делает 3-way merge текущего состояния строки в таблице БД, исходных значений полей и изменённых значений полей.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530699
wowow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruwowowИНТЕРЕСУЕТ АЛГОРИТМ СИНХРОНИЗАЦИИ ВСЕХ ЭТИХ БД!Бери больше, кидай дальше, только надо предусмотреть либо контроль версий + 3-way merge, либо флажки "эта запись с такого-то момента времени редактируется таким-то клиентом" и 2-way merge, либо "контроль версий для бедных", когда приложение зовёт хранимку, и отдаёт ей и исходные и изменённые юзером значения полей, а хранимка делает 3-way merge текущего состояния строки в таблице БД, исходных значений полей и изменённых значений полей.

Ок. Как то это все геморройно...
У 1с 7.7 например, есть бд, затем в любой момент, подчеркну в любой момент ее можно перевести
В распределенную бд и все синхронизируется!
И предметная область тут ни причем!
Как то же они сделали так!
Вот и спрашиваю может метода какая есть?
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530724
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wowowЕсть некая реляционная локальная БД, неважно какая.
Вот с этого момента - всё неправильно. Если тебе не важно
какая локальная БД то мы тебе и дадим не важно какие
советы под неважно какие условия. Вобщем делай триггеры
на все таблицы и т.д. Короче, пилите Шура...
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38530742
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wowowiv_an_ruпропущено...
Бери больше, кидай дальше, только надо предусмотреть либо контроль версий + 3-way merge, либо флажки "эта запись с такого-то момента времени редактируется таким-то клиентом" и 2-way merge, либо "контроль версий для бедных", когда приложение зовёт хранимку, и отдаёт ей и исходные и изменённые юзером значения полей, а хранимка делает 3-way merge текущего состояния строки в таблице БД, исходных значений полей и изменённых значений полей.

Ок. Как то это все геморройно...
У 1с 7.7 например, есть бд, затем в любой момент, подчеркну в любой момент ее можно перевести
В распределенную бд и все синхронизируется!
И предметная область тут ни причем!
Как то же они сделали так!
Вот и спрашиваю может метода какая есть?Есть. Использовать распределённую БД.

Понимаете, СУБД --- это не столько способ собрать все данные в одно место, сколько способ собрать все геморрои в одно место. Вместо того, чтобы заставлять апп-девелоперов разбираться с геморроями в каждой отдельной клиентской программе (и разбираться с ошибками, в силу недостаточной квалификации), геморрои переносятся меньшей частью в немногочисленные хитрые хранимки, где с ними разбираются специально обученные люди, а большей частью --- в движок СУБД, где с ними раз и навсегда разбираются ещё более обученные люди. Как только вы начинаете вешать на клиентское приложение хотя бы часть функций СУБД, вы начинаете процесс обратного переноса геморроев из БД в приложения.
Ваша задача --- прочитать, что такое распределённые транзакции и DTS, что такое репликация "публикатор--подписчики", что такое транзакционная репликация, и что такое двусторонняя репликация, выбрать более подходящий метод из поддердиваемых вашей СУБД, и сделать, как велит документация. Всё. Не надо пытаться сделать свой велосипед, это очень дорого. А именно: если описание алгоритма занимает в Дейте N страниц, то заметно более квалифицированный, чем вы, специалист ухлопает на это от N до N^2 месяцев.
...
Рейтинг: 0 / 0
Алгоритм синхронизации БД
    #38531066
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принципиально существует три способа репликации:
1) Клонирование (применимо только если редактируется исключительно одна копия)
2) Log Shipping (нужен хоть какой-то способ CDC)
3) Merge (прямая пропорциональность объёма работы от объёма БД)

Каждый их этих способов имеет свои достоинства и недостатки. Для сферических коней в вакууме абстрактных БД обычно используется log shipping, как наиболее универсальный способ (если, конечно, СУБД вообще позволяет организовать CDC хоть каким-то образом).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм синхронизации БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]