metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-10-28 06:52 am
Entry tags:

Синхронизация содержимого баз

«Штирлиц бежал по Цветочной улице, а Плейшнеры все падали и падали»

Народ срется наобсуждает вечную тему - реализация синхронизации/репликации содержимого баз, применительно к Firebird. Вообще говоря, существуют готовые решения для такого, но, насколько я помню, любое подобное решение в итоге накладывает какие-то не совсем вменяемые ограничения на дизайн базы.
В принципе, мне это тоже предстоит реализовывать, но по той причине, что основную обезъянью работу за меня будет делать кодогенератор, меня больше волнуют теоретические и высокоуровненые аспекты, а думать я над ними сейчас не в состоянии. Скорее всего, сделаю составной ключ "ID базы, ID записи".

[identity profile] gds.livejournal.com 2010-10-28 08:26 am (UTC)(link)
только рекомендую тщательно продумать откат "логов" в случае ошибок, генерируемых бд. Это не rocket science и тут нет "вызова", просто надо продумать.

[identity profile] metaclass.livejournal.com 2010-10-28 08:41 am (UTC)(link)
Откат транзакции к херам, какие еще там ошибки? Логи ж тоже в БД лежат, они тоже откатятся.
Между двумя базами - 2PC, у FB оно штатно работает.

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