powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
25 сообщений из 122, страница 1 из 5
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32840532
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32840533
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Example ?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32840535
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вложенные транзакции?
(аксес, фокс)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32840536
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя конечно интереснее не "откат закоммиченых транзакций", а как раз наоборот - "коммит зароллбеченых транзакий"
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841389
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegalloExample ?

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

Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841399
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопросы проектирования системы + политики прав доступа.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841449
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Vadim_Maximov!
Ты пишешь:

Vadim_MaximovЭто вопросы проектирования системы + политики прав доступа.
Поддерживаю.
Достаточно при проектировании базы чётко разграничить понятия
"изъятия документа из списка" и "уничтожения документа".

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841454
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще говоря, непонятно, как можно откатить из набора транзакций
T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл

restore database until <SCN>
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841476
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций
T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл

restore database until <SCN>
Угу, только откатятся ВСЕ транзакции.
Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя...
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841480
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim_Maximov Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций
T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл

restore database until <SCN>
Угу, только откатятся ВСЕ транзакции.
Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя...

Еще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Мне лень расписывать почему, но если хотите - можно привести массу примеров :)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841491
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex, мы имеем в виду одно и тоже, просто недопоняли друг друга.
Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие.
Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично..
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841521
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да. Я только хотел подчеркнуть что частичный откат выполнить невозможно даже не технически (никто такую фичу не сделал), а скорее по идейным соображениям.

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

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

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

Такую же функциональность можно сделать на любой СУБД - надо ничего не удалять и хранить историю изменений.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32841638
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99 Vadim_MaximovAlex, мы имеем в виду одно и тоже, просто недопоняли друг друга.
Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие.
Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично..

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

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

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

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

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

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

Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении.

При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842518
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www.fun4me.narod.ruВ седьмом постгресе была возможность посмотреть таблицу, какой она была в указанный момент времени. То есть, вы могли бы посмотреть этот треугольник, каким он был раньше и скопировать его в настоящее время.
Это и есть упомянутые flashback queries в Оракле.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842526
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже.
Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - ....
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842557
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже.
Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - ....

Гм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ? Ведь любой read в Оракл будет очень даже repeatable :)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842602
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex.CzechГм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ?
По умолчанию Oracle работает в режиме READ COMMITTED. Можно ли в настройках экземпляра задать другой уровень изоляции по умолчанию - наверное, можно (лень проверять), но это настолько не принято, что я назову это заведомо кривым подходом - надеюсь, понятно, какие проблемы вызывает "нестандартная настройка сервера".
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842839
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegallo
При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ?

Так ведь его отчет верен :-). У отчета есть дата/время его создания, соответственно верность/неверность отчета относится только к этому времени. Вы же не будете запрещать модификацию базы данных из-за того что сделанный когда то отчет становится при этом out-of-date.

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

То есть насколько я понял каких то простых возможностей пользователю откатить одну из своих уже закоммиченных транзакций существующие СУБД не предоставляют?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32842847
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных.
К примеру, отчет был - о клиентах, переводящих суммы больше $x.
И каким образом у вас в базе то исчезают, то появляются некоторые клиенты, и нет ли в этом преступного умысла - будете рассказывать прокурору :-)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843164
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оракле 9 и выше есть такая возможность. Посмотрите на workspace management.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843791
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegalloВы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных.


Это не противоречит выше названной идее. Как до транзакции так и после нее данные были целостные и непротиворечивые. Соответственно откат закомиченной транзакции это так же транзакция переводящая БД в целостное и непротиворечивое состояние при условии отмены действий вызванных откатываемой транзакцией.
...
Рейтинг: 0 / 0
25 сообщений из 122, страница 1 из 5
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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