Найти - Пользователи
Полная версия: Синхронизация автономно работающих БД
Начало » Базы данных » Синхронизация автономно работающих БД
1
Maximbo
Приветствую.

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

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

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

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

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

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

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

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

Как то так :)

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

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

а если равносильны: высылаются только изменившиеся строчки, потом мержатся
slav0nic
а репликацию наладить нельзя? и подымать её во время пролёта спутника)
или тупо дампы по фтп переливать и подымать у себя…
pythonwin
slav0nic
или тупо дампы по фтп переливать и подымать у себя…
или дамп некоторых таблиц, а может и сводных таблиц?
PooH
Мне кажется это один из редких случаев, когда будет уместен XML
pythonwin
Maximbo
Связь между Москвой и Чукчистаном нестабильная, а потому синхронизация возможна только во время пролёта спутника над селом;
сколько это по времени?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB