Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:12 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Example ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:16 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вложенные транзакции? (аксес, фокс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
хотя конечно интереснее не "откат закоммиченых транзакций", а как раз наоборот - "коммит зароллбеченых транзакий" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloExample ? Сюда относятся в первую очередь инженерные задачи, приложения связанные с проектированием (допустим архитектура, строительство, ...) и т.п. Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 12:58 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Это вопросы проектирования системы + политики прав доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:01 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Привет, Vadim_Maximov! Ты пишешь: Vadim_MaximovЭто вопросы проектирования системы + политики прав доступа. Поддерживаю. Достаточно при проектировании базы чётко разграничить понятия "изъятия документа из списка" и "уничтожения документа". -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:12 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:13 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> Угу, только откатятся ВСЕ транзакции. Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:18 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Vadim_Maximov Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> Угу, только откатятся ВСЕ транзакции. Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя... Еще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Мне лень расписывать почему, но если хотите - можно привести массу примеров :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Ну да. Я только хотел подчеркнуть что частичный откат выполнить невозможно даже не технически (никто такую фичу не сделал), а скорее по идейным соображениям. С другой стороны, в Оракл есть возможность выполнять т.н. flashback-запросы, так что можно сказать что нужная автору фича там есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:30 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Vadim_MaximovAlex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. Приведу другой пример. Допустим в базе хранится чертеж над которым коллективно работают несколько клиентских приложений. Я условно говоря нарисовал треугольничек потом круг и потом квадрат. Затем вспомнил что треугольник я нарисовал зря и хочу откатить именно "рисование этого треугольника", при этом естественно мой круг и квадрат должны оставаться на месте, и этот откат так же не должен затрагивать то, что после моего неправильного треугольника нарисовали другие клиенты. Естественно если до того как я хочу откатить свой треугольник в него уже кто то другой залез (скажем поменял форму), то откат не должен дозволяться так как треугольник стал "продуктом" двух пользователей и не может быть просто так откатан одним из них. Пример условный, поэтому не надо советовать взять этот треугольник и просто удалить (это можно сделать всегда, даже если треугольник редактировался до этого многими клиентами). При этом кстати тот же вопрос: удалив треугольник и сделав еще что нибудь я вспоминаю что зря я удалил треугольник и хочу его восстановить (не затрагивая то что сделано другими клиентами после неудачного удаления). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:53 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
В седьмом постгресе была возможность посмотреть таблицу, какой она была в указанный момент времени. То есть, вы могли бы посмотреть этот треугольник, каким он был раньше и скопировать его в настоящее время. Такую же функциональность можно сделать на любой СУБД - надо ничего не удалять и хранить историю изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Vadim_MaximovAlex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. Приведу другой пример. Допустим в базе хранится чертеж над которым коллективно работают несколько клиентских приложений. Я условно говоря нарисовал треугольничек потом круг и потом квадрат. Затем вспомнил что треугольник я нарисовал зря и хочу откатить именно "рисование этого треугольника", при этом естественно мой круг и квадрат должны оставаться на месте, и этот откат так же не должен затрагивать то, что после моего неправильного треугольника нарисовали другие клиенты. Естественно если до того как я хочу откатить свой треугольник в него уже кто то другой залез (скажем поменял форму), то откат не должен дозволяться так как треугольник стал "продуктом" двух пользователей и не может быть просто так откатан одним из них. Пример условный, поэтому не надо советовать взять этот треугольник и просто удалить (это можно сделать всегда, даже если треугольник редактировался до этого многими клиентами). При этом кстати тот же вопрос: удалив треугольник и сделав еще что нибудь я вспоминаю что зря я удалил треугольник и хочу его восстановить (не затрагивая то что сделано другими клиентами после неудачного удаления). Видите ли... во-первых, БД это не чертеж, ну это впрочем и так понятно :) Но даже если продолжать чертежную аналогию - возможно, есть такое правило, которое должно неукоснительно соблюдаться, а не то: число кругов на рисунке должно быть не меньше числа треугольников. И есть две операции - рисования фигуры и стирания фигуры. И проверяется это правило только при рисовании фигуры, потому как предполагается что от стирания фигуры правило нарушено быть не может - ведь мы возвращаемся к какому-то уже существовавшему состоянию Возвращаясь к СУБД - если мы откатываем транзакцию, мы должны быть уверены что переходим в целостное состояние БД так же как и при накате оной. Однако механизма проверки, так ли это, для отката транзакции не существует (в тех БД которые я знаю, я уверен что и в тех что я не знаю - тоже) - гарантом этого факта является существующий механизм проверки этого при накате транзакции. Таким образом, ради внедрения такой, неясно насколько нужной, фичи потребуется очень серьезная доработка ядра системы, приводящая вдобавок к перманентному замедлению любой операции отката ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 14:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Думаю, что проблема решается, если вы не удаляете/изменяете из базы записи, а только помечаете их как удаленные/измененные (возможно также уточняете кем). Вопрос правда в том, что предлагаемая задача требует наличия сложных механизмов (написанных вами приложений) для управления (кто и как будет задавать параметры отката, коих будет очень много). В Versant VDS (объектная база данных) есть возможность работы с версионностью объектов. Т.е. для каждого объекта, хранимого в базе, можно отследить граф его различных версий (к каждой версии можно получить доступ). Можно создавать новые версии на базе любых старых и сливать несколько старых версий в одну новую. Но проблемы интерфейса для управления столь замысловатыми откатами это не решает - его все равно прийдется писать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 15:00 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 vybegalloExample ? Сюда относятся в первую очередь инженерные задачи, приложения связанные с проектированием (допустим архитектура, строительство, ...) и т.п. Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении. При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:00 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
www.fun4me.narod.ruВ седьмом постгресе была возможность посмотреть таблицу, какой она была в указанный момент времени. То есть, вы могли бы посмотреть этот треугольник, каким он был раньше и скопировать его в настоящее время. Это и есть упомянутые flashback queries в Оракле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
softwarer Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - .... Гм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ? Ведь любой read в Оракл будет очень даже repeatable :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechГм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ? По умолчанию Oracle работает в режиме READ COMMITTED. Можно ли в настройках экземпляра задать другой уровень изоляции по умолчанию - наверное, можно (лень проверять), но это настолько не принято, что я назову это заведомо кривым подходом - надеюсь, понятно, какие проблемы вызывает "нестандартная настройка сервера". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:43 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ? Так ведь его отчет верен :-). У отчета есть дата/время его создания, соответственно верность/неверность отчета относится только к этому времени. Вы же не будете запрещать модификацию базы данных из-за того что сделанный когда то отчет становится при этом out-of-date. Верность/неверность отчета поределяется его соответствием/несоответствием текущему состоянию данных в БД (подразумевается что данные целостны и логически не противоречивы). БД не имеет каких либо механизмов определить верность/неверность собственно своих данных (в смысле их соответствия объективной реальности). Соответственно девочка поубивавшая записи, вместо того что бы бежать к администратору просить исправить ее ошибку (за что у нее могут понизить премию), скорее всего просто никому ничего не скажет и никакой менеджер никогда ничего не заметит (разве что случайно). Была бы кнопка UNDO, то этой проблемы не было бы. Разграничение доступа решает проблему частично, потому что любой человек может ошибиться в рамках предоставленных ему прав. То есть насколько я понял каких то простых возможностей пользователю откатить одну из своих уже закоммиченных транзакций существующие СУБД не предоставляют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 22:48 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных. К примеру, отчет был - о клиентах, переводящих суммы больше $x. И каким образом у вас в базе то исчезают, то появляются некоторые клиенты, и нет ли в этом преступного умысла - будете рассказывать прокурору :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 23:08 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
В оракле 9 и выше есть такая возможность. Посмотрите на workspace management. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloВы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных. Это не противоречит выше названной идее. Как до транзакции так и после нее данные были целостные и непротиворечивые. Соответственно откат закомиченной транзакции это так же транзакция переводящая БД в целостное и непротиворечивое состояние при условии отмены действий вызванных откатываемой транзакцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:46 |
|
||
|
|

start [/forum/topic.php?fid=35&tid=1553976]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 347ms |

| 0 / 0 |
