Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 19, 2008 10:10:48

Maximbo
От:
Зарегистрирован: 2006-11-04
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Приветствую.

Из водоворота задумок и идей возникла и затем материализовалась следующая проблема. Необходимо создать межофисную систему принятия и обработки заявок с распределённой иерархической БД, поддерживающей автономную работу с последующей синхронизацией накопленного. Примерно так, как это делается в 1С.

Поясню:
* Где-то в Интернете существует главное web-приложение (на Django, скорее всего);
* Где-то в локальной сети села Удмуртово так же запущено это, либо подобное web-приложение, с которым работает местный шаман;
* Связь между Москвой и Чукчистаном нестабильная, а потому синхронизация возможна только во время пролёта спутника над селом;
* Во время синхронизации локально наработанные данные чукчи отправляются в центральный офис, а данные из центрального офиса летят в Чукчистан;

Вопрос: как обычно решаются подобные задачи?



Офлайн

#2 Янв. 19, 2008 18:04:22

gdever
От:
Зарегистрирован: 2008-01-08
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Вариант номер один -
введение права на запись/чтение/изменение таблиц/записей, т.е. делаем так чтобы запись А могли править только пользователи из группы group_A, а запись B могли править только пользователи из группы group_B, работники села Удмуртово принадлежат одной группе внутри которой проблемы одновременной работы с данными организуются штатными средствами БД. ну и для таблиц аналогичная мулька.
Нюанс: придется дорабатывать клиентское ПО.
Итого: существенный трафик + сложная в настройке система + схема работы без “темных мест”

Вариант номер два -
из подчиненных подразделений высылать не данные а информацию о том какое поле какой записи как было изменено + время изменения. в центральной системе агрегируем все эти команды и коммитим их в порядке выполнения.
Нюанс: придется дорабатывать центральный сервер.
Итого: маленький трафик (до какого-то определённого времени) + иллюзия возможности доступа ко всем данными + проблема когда какую-то комманду закоммитить невозможно + проблемы с возможным нарушением целостности данных.

Вариант номер три -
Комбинировать предыдущие два варианта.
Нюанс: полная чума в реализации.
Итого:полная чума в реализации и поддержке.

ЗЫ как это делается в реальности не знаю, просто предложил свои варианты для обсуждения (т.к. самому эта тема интересна), может что-нибудь коллективно родим



Отредактировано (Янв. 19, 2008 18:08:44)

Офлайн

#3 Янв. 20, 2008 13:51:24

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Не знаю нюансов задачи. Вряд ли будет какое-то готовое универсальное решение. Расскажу как делается у нас.

У нас, правда, данные из Москвы в Чукчистан отправляются оленями ;) потому как местный шаман чаще работает с местными, из Москвы редко бывают гости. А вот в Москву, бывают, и чукчи заезжают, поэтому важно чтобы в Москву данные быстро поступали.

У шамана данные из Москвы лежат отдельно, и он их только читает, а записывает в отдельный набор таблиц. Когда близится время пролета спутника, шаман делает экспорт. В его наборе таблиц данные не удаляются, а помечаются как выгруженные с идентификатором выгрузки. Он данные пакует, шифрует, и в момент пролета спутника - отсылает. В Москве эти данные проверяют на непротиворечивость с данными от других шаманов (киргизских, башкирских) и загружают. Как олени собираются в Чукчистан, все данные в Москве выгружаются и посылкой оленями отсылаются шаману. Шаман по прибытию посылки, загружает данные, удаляя выгруженные локальные данные.

Как то так :)

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

P.S. У нас ни разу не джанго, не веб, даже местами не питон ;) но это, КМК, не важно. Зато важно, что в центре и периферии совсем разный софт.



Отредактировано (Янв. 20, 2008 14:00:28)

Офлайн

#4 Янв. 21, 2008 19:50:30

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

в идеале: чукчи неимеют доступа к БД на запись, а все свои пожелания к изменениям хранят локально, во время пролета спутника все коммитят на серв, где уже и происходит все действо.
это если сервы неравносильны по скорости прибытия информации =)

а если равносильны: высылаются только изменившиеся строчки, потом мержатся



Офлайн

#5 Янв. 22, 2008 20:23:41

dvs
От:
Зарегистрирован: 2006-05-22
Сообщения: 176
Репутация: +  3  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Офлайн

#6 Янв. 23, 2008 18:03:38

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

а репликацию наладить нельзя? и подымать её во время пролёта спутника)
или тупо дампы по фтп переливать и подымать у себя…

Офлайн

#7 Янв. 24, 2008 07:56:18

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

slav0nic
или тупо дампы по фтп переливать и подымать у себя…
или дамп некоторых таблиц, а может и сводных таблиц?



Офлайн

#8 Янв. 24, 2008 08:06:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Мне кажется это один из редких случаев, когда будет уместен XML



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

Офлайн

#9 Янв. 24, 2008 09:59:36

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Синхронизация автономно работающих БД

Maximbo
Связь между Москвой и Чукчистаном нестабильная, а потому синхронизация возможна только во время пролёта спутника над селом;
сколько это по времени?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version