metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-09-28 09:14 pm

Опердень и undo

А вот скажите мне, как истинные оперденьщики, модно ли сейчас делать в оперденях функцию "откатить изменения в паре сотен документов на неделю назад, потому что пользователи сошли с ума и сделали что-то не то"?

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

[identity profile] falcrum.livejournal.com 2012-09-28 06:17 pm (UTC)(link)
А документы не уходят в сторонние системы за неделю-то? Как откатывать?

[identity profile] vp.livejournal.com 2012-09-28 06:18 pm (UTC)(link)
откатить изменения все или откатить изменения какие-то определенные? если все, то это таки да, резервная копия.

[identity profile] avnik.livejournal.com 2012-09-28 06:31 pm (UTC)(link)
git же.
Вам и иммутабельность, и версионность и пауки.

PS appendonly еще очень можно и инстаграмно.

[identity profile] denisioru.livejournal.com 2012-09-28 06:55 pm (UTC)(link)
В опердени не бывает откатов. Документ, попавший в систему остается в ней навсегда. Коррекция выполнется новыми документами (как сторнирование в бухгалтерии).

[identity profile] vit-r.livejournal.com 2012-09-28 06:59 pm (UTC)(link)
Undo работает только в форме, которая не зарегистрирована. Всё, что попало в двойную бухгалтерию может исправляться только корректирующими проводками.

[identity profile] berezovsky.livejournal.com 2012-09-28 07:06 pm (UTC)(link)
ещё должна быть кнопка, чтоб пространство и время сворачивались и разворачивались из нужного места, ну, чтоб наверняка

[identity profile] x-a-e-p.livejournal.com 2012-09-28 07:18 pm (UTC)(link)
Ну если потребность возникает нечасто, то делать версионность смысла нету. Достаточно бекапов.

[identity profile] chumpa.livejournal.com 2012-09-28 08:55 pm (UTC)(link)
такое популярно и требуется. Если готовая система (SAP, 1c) это не умеет, её ломают/"энханцируют" на предмет. Ибо нефиг.

[identity profile] rssh.livejournal.com 2012-09-29 05:08 am (UTC)(link)
после закрытия периода -- только сторнирование

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

[identity profile] mudasobwa.livejournal.com 2012-09-29 05:27 am (UTC)(link)
У меня была похожая задача. Я в соседней базе хранил «дельты» (ну, не дельты, а предыдущие версии, повторять систему контроля версий как-то странно) с датами (типа: doc_id, date_of_change, old_version). С индексом по дате.

Есть два варианта отката: иногда нужно, чтобы документ откатился назад, но стал «новой версией» (откат на две недели от версии 20 к версии 3 создает не версию 3, но версию 21 с содержимым 3), а иногда можно просто «вернуться к бэкапу».

Соседняя база никак не влияет на работоспособность системы без нее, пурджится по крону и позволяет элегантно откатиться куда угодно. От оригинальной базы нужен один несложный триггер со слабым приоритетом.

[identity profile] molnij.livejournal.com 2012-09-29 09:06 am (UTC)(link)
в самом общем случае - только руками. ибо выясняется что в половине случаев надо откатить, в половине заодно поправить в учетных, вот тут вообще не трогать и т.п. но история всех изменений ведется. да.

[identity profile] ng67.livejournal.com 2012-09-30 02:59 pm (UTC)(link)
Журнал транзакций в SQL плюс архивирование этого журнала раз в сутки.
Откатываем до резервной копии за нужный день, потом по журналу транзакций смотрим что было до нужного нам момента.

В 1С есть кстати версионирование объектов, то есть можно узнать какая сволочь поменяла дебет с кредитом.

[identity profile] Дмитрий Васильев (from livejournal.com) 2012-09-30 06:56 pm (UTC)(link)
http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm
http://www.postgresql.org/docs/8.3/static/contrib-spi.html#AEN107671

[identity profile] dennab.livejournal.com 2012-10-01 04:35 pm (UTC)(link)
Lotus Domino?
FileNet?
IBM Content Manager?