On 01.07.2011 23:55, A K wrote:
Транзакций существенно меньше чем CRUD операций как правило.
я понимаю, что в общем случае их будет меньше. Но, например, накопил я
в логе десять изменений в разных таблицах. Идет комит транзакции.
Мне все равно придется выполнить десять EXECUTE STATEMENT к внешней
базе, причем каждый EXECUTE STATEMENT будет открывать-закрывать коннект.
так?
Можно и в одном соединении это делать.
Но реальная причина в другом - в другую(-ие) БД должны попадать только
те изменения, которые подтверждены в данной БД. В противном случае при
любом откате транзакции базы начнут разбегаться. В отличии от того же MS
SQL в Firebird одно удовольствие лог транзакций вести, не полагаясь на
всякие там часы и т.п. Причем если текущая транзакция отвалится, то из
записей в журнале не будет (а можно использовать и временные таблицы).
Да и такую модель можно развить в асинхронную оффлайн репликацию если
понадобиться.
А вот с синхронной репликацией на уровне триггеров есть реальный шанс
получить большие проблемы (по моему скромному мнению это путь в никуда).
Т.к. стабильные соединения бывают только в "сферическом вакууме". И
порой достаточно одного сбоя на миллион операций, чтобы случилась
"непоправимая" разбежка и лавинообразное возрастание количества ошибок.