powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
22 сообщений из 122, страница 5 из 5
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846430
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lazy foxПосле того, как вы обломались с предложенной мной объектной моделью и предложили мне абстрагироваться от подробностей реализации, в базе есть такой объект.

Я не заметил никакой объектной модели.

lazy foxДва разными приложения решают две разные задачи с двумя разными БД так, что структура и данные в БД совпадают в каждый момент времени. Напрягитесь.

Это не для среднего ума :-). Если хотите получить ответ по существу корректно поставьте задачу (и желательно без выражений типа "вкладывать смысл в цифры").
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846451
lazy fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99
Я не заметил никакой объектной модели.

Тогда вернитесь сюда и ответьте по существу.

serg99Это не для среднего ума :-).

Ok )
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846459
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey RovdoИ все таки мне кажется что реальная сложность реализации такого механизма будет очень велика, а издержки СУБД возрастут фантастически. СУБД прийдется отслеживать все дерево транзакций, причем делать это всякий раз при выполнении любой транзакции! Почему?

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

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

Сам откат закоммиченой транзакции можно рассматривать как новую транзакцию, которая (см. во-вторых).

И если мы говорим об откате закоммиченной транзакции, то логичным будет и требование о возможности "анти-отката", т.е. мы откатили закоммиченную транзакцию, а потом взяли и опять "закатили".

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

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


Alexey RovdoИнтересно было бы увидеть оценки производительности такой системы в сравнении с традиционными СУБД и оценки места на диске, занимаемого всей этой информацией.
И вот если оценки будут таковы, что традиционные системы окажутся в десятки раз производительнее системы с возможностью отката закоммиченых транзакций, то вряд ли найдутся желающие такими монстрами пользоваться.
Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846568
azhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована?
В Oracle 10g есть возможность отката таблиц или даже всей БД назад (FLASHBACK TABLE|DATABASE)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846602
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами.

Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846649
Alexey Rovdo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vybegallo serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами.

Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ?

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

И здесь мне совершенно непонятно как можно делать вывод об отсутствии проигрыша по сравнению с традиционными системами - объем вычислений увеличивается капитально.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846663
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность.

В общем, кричать то можно, а вот чтобы попробовать сделать, как-то смелости не хватает.......

-- Tygra's --
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846687
Yo!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yo!
Гость
авторИ это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность.

так слишком сложно, гораздо проще возвращать субд в консистентное состояние на конкретное время назад.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846690
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так сильно грубо - зачем откатывать работу других?

-- Tygra's --
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846785
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это потому, что вы пока совсем не думали над реализацией.

Нет, не поэтому.

Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ?

Есть способы. Но имеет смысл говорить, когда будет что показать.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846833
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99Это потому, что вы пока совсем не думали над реализацией.

Нет, не поэтому.

Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ?

Есть способы. Но имеет смысл говорить, когда будет что показать.

Это вам КАЖЕТСЯ, что вы знаете, что "есть способы".
Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц.
Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846863
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц.
Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах.

Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846875
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц.
Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах.

Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами?

"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-)

До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846924
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-)

Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать.

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

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

Другими словами логика откатов является частью логики приложения и закладывается в приложение тем же программистом у которого до выхода за сарай что то в голове было, и это "что то" собственно и было воплощено в приложении. Если приложение написано без применения дополнительной функциональности БД по откатам, то остается только последний вариант, когда проблемы решаются как правило администратором на уровне всей БД.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846932
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-)

Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать.

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

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

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

Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел.
Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы.
Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг !
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846936
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegallo Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ?
IMHO, очень удачный пример. Возможность отката отдельных транзакций еще с трудом можно представить в однопользовательской среде или, в крайнем случае, когда данные, с которыми работают отдельные пользователи в принципе не пересекаются. Это в Word-е можно сделать UNDO, а в многопользовательской среде, когда чтение и изменение одних и тех же данных выполняется достаточно хаотично и непредсказуемо, отследить что откатывать, а что нет, практически(!) нереально. Не говоря уж о том, что часть информации в виде отчетов выходит наружу и может фиксироваться различными органами, и они могут неправильно понять, когда им скажут, что отчет за 1 квартал отменен, так как там были ошибки, а теперь они исправлены и вот вам другая версия. В таких случаях, за сарай могут отвести не одного человека :)
Короче, любая попытка реализации обойдется чрезвычайно дорого, а польза будет не столь велика. Из разряда 1% возможностей, которые на 99% не будет использоватся на практике.

P.S. Резюм: хорошо бы попасть в рай, да грехи не пустят... :)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32847609
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
serg99А какая логика отката Вас бы устроила?В Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля.

Это меня не устроит даже на уровне read commited.
А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц.

Поэтому, если можно, приведите, пожалуйста, принципиальное описание алгоритма отката (о деталях реализации не спрашиваю - это наверно секрет фирмы :).
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32848712
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел.

И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются.

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

Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет.

Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг !

Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист.

Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32848715
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xВ Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля.

Это меня не устроит даже на уровне read commited.
А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц.

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

Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32848752
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел.

И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются.

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

Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет.

Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг !

Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист.

Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-)

Те возможности Оракла, которые вы считаете "откатами закоммиченных транзакций", правильно называть "восстановлением данных из сохраненных копий". Это есть фича полезная, но полезная именно для администратора, который понимает, что он делает, и каковы будут последствия. Ни о какой автоматической проверке целостности данных речь, естественно, не идет, и администратор несет всю ответственность за содеянное.
Вы же предлагаете встраивать подобную крайне опасную возможность в программу. Типа ткнул на кнопочку -и готово. Вы сначала научите юзеров правильно приложения закрывать ! :-)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32848754
curious.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сколько баксо-дней просят за эту лапшу на ваших ушах? Ж)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32848930
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
serg99Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается.Ну, если все, что надо отслеживается, то я за (правда приведенный пример этому противоречит).
...
Рейтинг: 0 / 0
22 сообщений из 122, страница 5 из 5
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]