Re[3]: Журнал изменений базы данных
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.02.20 15:49
Оценка:
Здравствуйте, afkos, Вы писали:

A>С table-level update lock мы фактически ограним число одновременно выполняющихся (изменяющих) транзакций до 1, увы, это не приемлимо в нашем случае.

Спасибо за подробный и обоснованный ответ. Ок, неприемлемо так неприемлемо.

A>Спасибо, ознакомился

A>Мы не можем использовать специфичные механизмы СУБД, т.к. поддерживаем сразу несколько СУБД: SQLServer, PostgreSql, Oracle, но полезно разобраться как там решаются те же проблемы.
Ок, ясно.
A>Вот что я выяснил:
A>Любопытно, что изменения сделанные в транзакции, не видны через CHANGETABLE даже внутри этой самой транзакции, что наталкивает на мысль, что номер версии таблицы увеличивается не в момент изменения, а в момент фиксации транзакции.
Да, это очевидное решение задачи упорядочивания изменений. К сожалению, я не вижу другого способа, при котором лог будет отштампован в порядке завершения транзакций, а не в порядке их начала .
Я даже не вижу способа сделать это в рамках прикладного кода, за пределами ядра СУБД.
A>Пока что пришел к нескольким решениям:
Ограничить бесконтрольное разрастание можно
а) регулярно обрезая все логи по таймстампу — например, всё, что старше 48 часов. Клиент, который пришёл позже, обязан начать синхронизацию "с нуля".
б) либо регулярно прибивая сами подписки, если за ними долго не приходят.
A>Буду рад новым идеям
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Журнал изменений базы данных
От: alexanderfedin США http://alexander-fedin.pixels.com/
Дата: 13.02.20 22:01
Оценка:
Здравствуйте, afkos, Вы писали:
A>Разрабатываем такую специфическую систему средних размеров для управления данными, для промышленности, в основном.
A>Столкнулись с необходимостью иметь в БД какой-то журнал со сведениями об изменениях различных сущностей,
A>чтобы внешние системы с которыми настроена интеграция (штатная или силами клиента) могли понимать какие сущности удалены, изменены, добавлены в системе, для того чтобы их подтянуть себе.

A>Первое что приходит в голову — табличка в бд:

A>TABLE EventLog (eventId, eventType, entityId, ... )
Вы изобретаете свою репликацию?

A>Можно ли что-то сделать в предложенной схеме?

A>Буду очень благодарен любым советам!
Возьмите готовую!
Respectfully,
Alexander Fedin.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.