Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxПосле того, как вы обломались с предложенной мной объектной моделью и предложили мне абстрагироваться от подробностей реализации, в базе есть такой объект. Я не заметил никакой объектной модели. lazy foxДва разными приложения решают две разные задачи с двумя разными БД так, что структура и данные в БД совпадают в каждый момент времени. Напрягитесь. Это не для среднего ума :-). Если хотите получить ответ по существу корректно поставьте задачу (и желательно без выражений типа "вкладывать смысл в цифры"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:13 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Я не заметил никакой объектной модели. Тогда вернитесь сюда и ответьте по существу. serg99Это не для среднего ума :-). Ok ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:23 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoИ все таки мне кажется что реальная сложность реализации такого механизма будет очень велика, а издержки СУБД возрастут фантастически. СУБД прийдется отслеживать все дерево транзакций, причем делать это всякий раз при выполнении любой транзакции! Почему? Во-первых, нам как-то прийдется разделять транзакции на те, которые можно откатить и на те, которые откатить нельзя никогда (если я что-то хочу удалить навсегда, то я должен иметь такую возможность). Во-вторых при выполнении любой транзакции нам прийдется вычислять (находить) все другие транзакции, откат которых она перекрывает (откат этих транзакций станет невозможен после выполнения текущей транзакции) и помечать их как зависящие от текущей транзакции. Если этого не делать, то откат любой закоммиченой транзакции должен сопровождаться анализом ВСЕХ имевших место после нее транзакций на предмет того, не блокируют ли они возможность отката именно этой транзакции. Сам откат закоммиченой транзакции можно рассматривать как новую транзакцию, которая (см. во-вторых). И если мы говорим об откате закоммиченной транзакции, то логичным будет и требование о возможности "анти-отката", т.е. мы откатили закоммиченную транзакцию, а потом взяли и опять "закатили". Следует учесть возможность, когда откат какой-либо одной закоммиченой транзакции делает невозможным откат другой закоммиченой транзакции (а в исходном виде они откатываемы обе), т.е. откатить можно только одну из двух (или набора) транзакций (откатить обе нельзя ни при каких условиях). И т.д. и т.п.. Все правильно в том числе про REDO. Кроме последнего абзаца. Встретив при откате конфликтную транзакцию можно попросить ее автора откатиться и "освободить дорогу". С тем же можно обратиться к администратору, который может откатить всех куда надо. Alexey RovdoИнтересно было бы увидеть оценки производительности такой системы в сравнении с традиционными СУБД и оценки места на диске, занимаемого всей этой информацией. И вот если оценки будут таковы, что традиционные системы окажутся в десятки раз производительнее системы с возможностью отката закоммиченых транзакций, то вряд ли найдутся желающие такими монстрами пользоваться. Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:26 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована? В Oracle 10g есть возможность отката таблиц или даже всей БД назад (FLASHBACK TABLE|DATABASE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:24 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? В том то и дело, что во время выполнения второй транзакции прийдется все тщательно проанализировать, т.е. найти ту транзакцию(ии), которая вписала эти опорные данные в таблицу Б и сделать в ней пометку, что теперь ее нельзя откатить без отката этой второй транзации (т.е. оператор не сможет откатить изменения в таблице Б без отката изменений, внесенных в таблицу А). И здесь мне совершенно непонятно как можно делать вывод об отсутствии проигрыша по сравнению с традиционными системами - объем вычислений увеличивается капитально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:49 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
И это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность. В общем, кричать то можно, а вот чтобы попробовать сделать, как-то смелости не хватает....... -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:54 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
авторИ это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность. так слишком сложно, гораздо проще возвращать субд в консистентное состояние на конкретное время назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:06 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
А так сильно грубо - зачем откатывать работу других? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:08 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Это потому, что вы пока совсем не думали над реализацией. Нет, не поэтому. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? Есть способы. Но имеет смысл говорить, когда будет что показать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:56 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Это потому, что вы пока совсем не думали над реализацией. Нет, не поэтому. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? Есть способы. Но имеет смысл говорить, когда будет что показать. Это вам КАЖЕТСЯ, что вы знаете, что "есть способы". Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 20:05 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 20:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами? "Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 21:43 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать. До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. Да нет здесь ничего плохого. Просто есть разные уровни связности алгоритмов. При непосредственной связи, когда например задания по зачистке вызываются как триггера по изменению даты в рамках одной транзакции, откат всего происходит откатом основной транзакции. Если связь опосредованная (разные приложения), но хотя бы известно какое приложение смотрит в дату и может что то плохое делать, то откаты организуются независимо для связанных приложений (одно откатывает изменение даты, другие откатывают свои зачистки). Если вы уже поубивали всех разработчиков и вообще не понятно что и почему в базе происходит, но видно, что с такого то времени произошло что то плохое, то администратор откатывает всех к этому времени. Другими словами логика откатов является частью логики приложения и закладывается в приложение тем же программистом у которого до выхода за сарай что то в голове было, и это "что то" собственно и было воплощено в приложении. Если приложение написано без применения дополнительной функциональности БД по откатам, то остается только последний вариант, когда проблемы решаются как правило администратором на уровне всей БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 01:31 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать. До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. Да нет здесь ничего плохого. Просто есть разные уровни связности алгоритмов. При непосредственной связи, когда например задания по зачистке вызываются как триггера по изменению даты в рамках одной транзакции, откат всего происходит откатом основной транзакции. Если связь опосредованная (разные приложения), но хотя бы известно какое приложение смотрит в дату и может что то плохое делать, то откаты организуются независимо для связанных приложений (одно откатывает изменение даты, другие откатывают свои зачистки). Если вы уже поубивали всех разработчиков и вообще не понятно что и почему в базе происходит, но видно, что с такого то времени произошло что то плохое, то администратор откатывает всех к этому времени. Другими словами логика откатов является частью логики приложения и закладывается в приложение тем же программистом у которого до выхода за сарай что то в голове было, и это "что то" собственно и было воплощено в приложении. Если приложение написано без применения дополнительной функциональности БД по откатам, то остается только последний вариант, когда проблемы решаются как правило администратором на уровне всей БД. Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 02:49 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? IMHO, очень удачный пример. Возможность отката отдельных транзакций еще с трудом можно представить в однопользовательской среде или, в крайнем случае, когда данные, с которыми работают отдельные пользователи в принципе не пересекаются. Это в Word-е можно сделать UNDO, а в многопользовательской среде, когда чтение и изменение одних и тех же данных выполняется достаточно хаотично и непредсказуемо, отследить что откатывать, а что нет, практически(!) нереально. Не говоря уж о том, что часть информации в виде отчетов выходит наружу и может фиксироваться различными органами, и они могут неправильно понять, когда им скажут, что отчет за 1 квартал отменен, так как там были ошибки, а теперь они исправлены и вот вам другая версия. В таких случаях, за сарай могут отвести не одного человека :) Короче, любая попытка реализации обойдется чрезвычайно дорого, а польза будет не столь велика. Из разряда 1% возможностей, которые на 99% не будет использоватся на практике. P.S. Резюм: хорошо бы попасть в рай, да грехи не пустят... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 03:18 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99А какая логика отката Вас бы устроила?В Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля. Это меня не устроит даже на уровне read commited. А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц. Поэтому, если можно, приведите, пожалуйста, принципиальное описание алгоритма отката (о деталях реализации не спрашиваю - это наверно секрет фирмы :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 13:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист. Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 22:34 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
xВ Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля. Это меня не устроит даже на уровне read commited. А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц. Поэтому, если можно, приведите, пожалуйста, принципиальное описание алгоритма отката (о деталях реализации не спрашиваю - это наверно секрет фирмы :). Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 22:41 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист. Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-) Те возможности Оракла, которые вы считаете "откатами закоммиченных транзакций", правильно называть "восстановлением данных из сохраненных копий". Это есть фича полезная, но полезная именно для администратора, который понимает, что он делает, и каковы будут последствия. Ни о какой автоматической проверке целостности данных речь, естественно, не идет, и администратор несет всю ответственность за содеянное. Вы же предлагаете встраивать подобную крайне опасную возможность в программу. Типа ткнул на кнопочку -и готово. Вы сначала научите юзеров правильно приложения закрывать ! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 00:50 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
А сколько баксо-дней просят за эту лапшу на ваших ушах? Ж) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 01:01 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается.Ну, если все, что надо отслеживается, то я за (правда приведенный пример этому противоречит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 09:51 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32846602&tid=1553976]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 400ms |

| 0 / 0 |
