Arioch wrote:

Подскажите пожалуйста, как лучше реализовать следующую схему:

Имеется центральный сервер СУБД и несколько филиальских.
В каждом филиале запущено несколько программ, работающих с базой данных.
Хочется добиться такого, чтобы при потере соединения, филиальские программы продолжали работать с базой, а при появлении база синхронизировалась с основной.


Много ли филиальских программ? нужна ли им промежуточная база, или проще каждую переводить в offline-режим, как почтовый киент ?

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


Работа в основном ведется по введению/созданию документов (т.е. insert'ы в какую-то таблицу и может чтение из каких-то справочных таблиц).


Справочные таблицы кэшируются-реплицируются на филиальный сервер, оттуда на клиентов и хранятся у них на винте в DBF.

ну зачем dbf?
есть же hsqldb, sqlite -- вполне себе sql решение.
от этих dbf уже одни только проблемы в распределенной сети (у нас еще осталась гетерогенная схема, SQL + DBF и куча софта который таскает данные туда/обратно)

insert'ы оормляются как e-mail, и могут сидеть Исходящих сколько угодно, пока сеть не появится. Еще лучше - оформлять их как nws (форумный NNTP-протокол - вот вам и способ доступа к БД. В том же ibexpert.com на базе писем с доп. заголовками сделан встроенный в прогу багтрэкер - похожа его модель на то, что нужно? )

что-то мне это напоминает изобретение велосипеда... или даже самоката
а как быть если письмо (insert == email) потеряется?

Я правда не верю, что этим действительно ограничивается работа программы, просто описать в двух строках ее вряд ли возможно :-)


Можно ли сделать это средствами СУБД? Или есть уже готовые решения?
Что посоветуете, куда смотреть?


в конфе по файрберду на ibase.ru года два назад было перечисленно три схенмы репликации (одна из них встроенна в ibexpert.com) и резюмированно что выбор и допилка сильно зависят от задачи.

а про interbase я и забыл ;)
посмотрю, что у них есть


Простой такой вопрос - что делать у идентификаторами записей в таблицах? :-)

делать их уникальными, т.е. привязанными к каждому филиальскому серверу.
ну, раздать например всем номера


В любом случае спасибо за свежую мысль!!!!

--
У каждого в башке свои тараканы...
_______________________________________________
smoke-room mailing list
[email protected]
https://lists.altlinux.ru/mailman/listinfo/smoke-room

Ответить