powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Необычная реализация "синхронизации" (без конфликтов). Оцените идею
6 сообщений из 6, страница 1 из 1
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37384955
MADem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле не совсем синхронизация, поскольку в этой схеме не будет конфликтов.
Предыстория, есть программа на VB6(с корнями глубоко в прошлом) и на Access. Сейчас программа полностью переписывается под .Net4.0 со всеми наворотами. Но новая версия опаздывает, и потому нужно чтобы версия VB6 имела возможность работать параллельно с .Net, который будет использовать SQLExpress2008
Проблема в том что старая версия использовала систему обновления данных восходящую еще ко временам текстовых файлов на дискетах, и сменила только способ доставки этих текстовых файлов...
Задача.
Три сотни клиентов с локальными базами, один центральный сервер, клиенты подключаются очень нерегулярно(в течении года), актуальность обновления не критична.
Данные (таблицы) трех групп - глобальные (общие для всех клиентов, изменяются ОДНИМ администратором), региональные (изменяются ОДНИМ ответственным в каждом регионе) и клиентские (сохраняются в центральный сервер, но их там никто не меняет)
С такими ограничениями необходимости разрешать конфликты вроде бы нет.
Потому была выдвинута идея простого способа обновлять данные - по логу.
Иначе говоря, в функции, которая выполняет запрос, каждый запрос не только исполняется, но и сохраняется в таблицу в виде (ID int,Request string).
При "синхронизации" админ досылает на сервер новые рекеты, а юзеры при подключении получают рекеты с новыми айдишниками и применяют их. Так же админ исполняет запросы на центральном сервере, чтобы иметь там актуальную базу, и не портить старый механизм обновления.
Способ странный, но он много проще в реализации чем, например, добавлять в каждую таблицу дату обновления-удаления, и много легче по ресурсам(прежде всего сети) чем настоящая синхронизация(массивы данных могут быть приличными, до полумиллиона записей).
Я, может быть по неопытности, не вижу минусов в такой реализации, но не нашел нигде упоминаний такого способа, поэтому хочу спросить у знающих людей - в чем может быть подвох?
...
Рейтинг: 0 / 0
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37385121
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MADem, вопросы:
1. Последовательность выполнения запросов влияет на результат? если - да - сможете ли вы обеспечить ту же последовательность запросов при обновлениях?

2. Место применения запросов (1, 2, 3) не повлияет на результат выполнения каждого запроса?

Минус: запросы модификации можно разделить на простые (учётные) и сложные (сохранение результатов расчётов). При вашей схеме "логирование запросов" на второй тип запросов понадобятся ресурсы на всех серверах. Если у вас такиз запросов нет или пренебрежительно мало - проблем нет.

По поводу новизны идеи: в куче СУБД используются куча разных механизмов репликации. В том числе и описанный Вами.
Например, http://msdn.microsoft.com/en-us/library/ms152565.aspx
...
Рейтинг: 0 / 0
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37385223
MADem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой,

1. Последовательность обеспечивается ID, иначе упадем на foreign_key. Запросы будут выполнятся просто по возрастанию ID, удаления не предусмотрено. Клиенты друг на друга не влияют, а вот порядок обновления Глобальные->Региональные->Клиентские строгий, там уже зависимости, но опять же - не должно оставаться возможности его нарушить.

2. Место выполнения влиять не должно, поскольку в исходном положении базы(их соответствующие части) должны быть одинаковы(например все таблицы что относятся к глобальным, и к которым мы применяем запросы из группы "глобальные"). На старых клиентах это будет обеспечиваться старым механизмом обновления... и вы правы, надо быть внимательнее, чтобы обновить совсем старые базы до момента когда будет запущен новый механизм и не дальше, подумаю над этим, спасибо.

По сложным запросом не совсем понял, имеется ввиду вычисления на стороне сервера? Таких запросов вроде бы нету.

И спасибо за ссылку, видимо не так искал :)
...
Рейтинг: 0 / 0
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37386795
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MADemПо сложным запросом не совсем понял, имеется ввиду вычисления на стороне сервера? Таких запросов вроде бы нету.

Да, с одним нюансом - сложные запросы модификации , т.е. не просто вычисления, а вычисления, результаты которых сохраняются в БД, а не просто отдаются клиенту...
Ну нет - и слава Богу :).
...
Рейтинг: 0 / 0
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37386917
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MADem,

Велосипед давно изобретен в системе репликации Sybase Anywhere
...
Рейтинг: 0 / 0
Необычная реализация "синхронизации" (без конфликтов). Оцените идею
    #37387102
MADem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ARTURV,

С такими ценами, да при существующей инфраструктуре...
И вам приятного дня.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Необычная реализация "синхронизации" (без конфликтов). Оцените идею
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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