powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
122 сообщений из 122, показаны все 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
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843814
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, serg99!
Ты пишешь:

serg99 vybegallos> Вы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой
идее транзакций, как
s> средству поддержки непротиворечивости и интегральной целостности данных.
s> Это не противоречит выше названной идее. Как до транзакции так и после нее данные были целостные и непротиворечивые.
s> Соответственно откат закомиченной транзакции это так же транзакция переводящая БД в целостное и непротиворечивое состояние
s> при условии отмены действий вызванных откатываемой транзакцией.
Тебе ехать, или шашечки? (С)
Читай Дейта и не городи чепуху.
Как там ваша супер-пупер ОО СУБД, уже создали?
Или так и не нашелся достойный "амбициозный руководитель
проекта"

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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843815
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIВ оракле 9 и выше есть такая возможность. Посмотрите на workspace management.

Взглянул очень кратко. Если речь идет о gotoDate, то это не совсем то о чем я говорю.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843830
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg99Это не противоречит выше названной идее.
Теоретически - не противоречит. Практически же транзакция опирается на данные предыдущих транзакций, и потому откат этих предыдущих транзакций имеет все шансы нарушить целостность последующей (и уже закоммиченной) транзакции. Для того, чтобы отследить это, необходимо построить механизм "глобального аудита", который будет строить что-то графа опирающихся друг на друга транзакций - и, полагаю, на сегодняшнем уровне это неадекватно сложная и неадекватно неэффективная постановка вопроса.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843854
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Читай Дейта и не городи чепуху.


Я думаю Вам надо перечитать Маршака, Барто и других детских писателей. Именно в детском нежном возрасте закладываются основы воспитанности и интеллигентности.

Мимопроходящий
Как там ваша супер-пупер ОО СУБД, уже создали?

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

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

Взглянул очень кратко. Если речь идет о gotoDate, то это не совсем то о чем я говорю.

Речь идет о savepoint, rollback workarea. Еще и о разрешении конфликтов.

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

Предположим такой механизм существует. Была бы такого рода функциональность востребована прикладными программистами и пользователями?

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

serg99 МимопроходящийЧитай Дейта и не городи чепуху.
Я думаю Вам надо перечитать Маршака, Барто и других детских писателей.
Именно в детском нежном возрасте закладываются основы
воспитанности и интеллигентности.
Обидел?
Ну поплачь.
Явный прогресс на лицо, от чайника,
до работодателя.

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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32843905
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
serg99Была бы такого рода функциональность востребована прикладными программистами и пользователями?
Пользователями - однозначно нет - они не знают что такое транзакция.

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


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

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

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

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

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

Сервер возвратит результат исполнения транзакци вместе с присвоенным этой транзакции уникальным номером. Приложение хранит список "своих" номеров. Далее UNDO(TransactionNumber).

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

PS: А не проще ли взять да и удалить этот треугольник, не заморачивась с поиском номера транзакции, котороя его создала?


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


Приложение шлет на сервер скажем транзакцию "Нарисовать треугольник". Сервер возвращает ответ с успехом тпранзакции и с ее уникальным номером. Приложение запоминает список исполненных транзакций вместе с их номерами. Пользователь нажимает как в Ворде кнопку UNDO и получает историю транзакций в виде списка
"Нарисовать треугольник (p1(х,y), p2(x,y) p3(x,y))"
"Нарисовать круг (center(x,y) radius(r))"
и т.п.
Он просто выбирает действие (набор действий) какое он хочет отменить и знать ему ничего не нужно про номер транзакции (об этом знает приложение).
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844168
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну делайте версионное хранение данных и не озадачивайтесь такими вот вопросами. Мало ли чего пользователь может вспомнить или сделать, в том числе задним числом. В БД у Вас должна лежать целостная копия чертежа. В клиенте на момент изменения поддерживаться откат. При сохранении изменений в БД туда должен чертеж полностью записываться как новая версия. Ну и т.д. и т.п. Зачем проблемы постановки сводить на сравнение СУБД ?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844192
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg99 softwarerНе думаю. Вернее, не думаю, что она будет востребована на уровне, оправдывающем даже простейшую разработку.
Почему же тогда любой мало мальски нормальный редактор (или в принципе приложение связанное с вводом пользователем каких либо данных) такую функциональность имеет. Ведь и в Word я могу просто в обратном порядке повторить свои операции.
Функциональность "отменить N последних операций" есть - не только в редакторах, но и в СУБД. А вот "отменить N-ю, не отменяя N-1-ю" - такого, признаться, в ворде не умею. И с глубоким интересом изучу, насколько целостные данные выходят у него из этой операции.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844203
lazy fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор"Нарисовать треугольник (p1(х,y), p2(x,y) p3(x,y))"
"Нарисовать круг (center(x,y) radius(r))"

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

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

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

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

Хочется кому-то откатывать чего-то - ну пиши соответствующую структуру работы с данными, строй на ней всю систему, какие проблемы?

А задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата.....

Пора закрыть тему - из пустого в порожнее переливаем.
И если уж хочется - открыть новую тему: как в системе сделать произвольный откат произведенных действий - методы решения.

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

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

Если же кто то нарисовал женщину рядом с моим треугольником, почему же я не могу откатить свой треугольник?

Потому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844383
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99 lazy foxЭто просто праздник какой-то... А еще один имбицил от ООП сидя за соседним компом стер ваши треугольник и круг... И закоммитил. А потом вставил большую потную женщину

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

Если же кто то нарисовал женщину рядом с моим треугольником, почему же я не могу откатить свой треугольник?

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

Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844420
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99 lazy foxПотому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника.

Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано.

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

Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано.

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

Откат "удаления треугольника" ничем не будет отличаться от его перерисовки заново и т.п. Откат "удаления параграфа" в Ворде эквивалентно "заново его напечатать". Можно ли обойтись без откатов? Конечно можно. Зачем же тогда его везде, где возможно, реализуют?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844591
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraА задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата.....


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

tygra
Пора закрыть тему - из пустого в порожнее переливаем.
И если уж хочется - открыть новую тему: как в системе сделать произвольный откат произведенных действий - методы решения.

-- Tygra's --

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

Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано.

Никаких связей не добавлено ибо незакоммитчено...

Если женщина не закоммичена, то значит ее в базе нет и треугольник можно откатить. Зато тот кто ПОСЛЕ ЭТОГО будет коммитить женщину и ее связь с УЖЕ не существующим треугольником получит отлуп.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844623
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99 tygraА задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата.....


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


Вы не видите проблемы, потому что мыслите в терминах однопользовательской системы.

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

Отлуп - это когда кто-то нажимает на коммит и становится свидетелем внезапного исчезновения обоих объектов? )

Да, кстати, откуда ваш сервер знает что-то о связях объектов? Допустим, мой клиент смотрит на монитор и кладет в БД строчку 'баба сидит на треугольнике', а ваш клиент замечательно воспроизводит написанное. Как из этой строчки сервер вытащит связь двух объектов?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844664
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Serg99
Не пойму, что Вам запрещает реализовать Вам систему с треугольником, женщиной и откатом удалений на СУБД? Переходите на уровень выше. Понимаете о чем я? Как в стеке протокола TCP/IP, один уровень инкапсулируется в другой! СУБД не обязана поддерживать все прихоти пользователей сама, она должна предоставлять только платформу для организации хранения и доступа. Вся логика системы закладывается в БД ее разработчиком, а не разработчиком СУБД.

Вам нужно откатывать избранные транзакции? А кто Вам сказал, что эти транзакции должны быть транзакциями с СУБД? Девушка оператор случайно грохнула что-то - это транзакция верхнего уровня(она нажала кнопку), клиентский софт отослал на сервер комманду delete(СУБД потерла данные) - это транзакция более низкого уровня. Вот и моделируйте одни при помощи других. Пример реализации механизма - оператор удаляет, а в БД НЕ УДАЛЕНИЕ, а пометка. Вот и все, новые объекты можно цеплять только к тем, которые не помечены, если захочешь грохнуть что-то старое, то оно не грохнется, если к нему уже что-то подцеплено. Ссылочную целостность обеспечивает СУБД.
В очередной раз сталкиваюсь на этом форуме с людьми, которые не представляют себе процессов в системе (как на уровне СУБД, так и на прикладном уровне) и не могут разделить у себя в голове эти понятия. Заодно и разделите понятия СУБД и своей прикладной системы.
Если по ТЗ система должна позволять это, то надо реализовывать, если нет - то нет. Система должна делать только то, что написано в ТЗ. Все остальное в лог-файле.

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

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

Я нигде не упоминал однопользовательские системы. Я упоминал откат транзакций в контексте одного пользователя, но в многопользовательской системе.

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

Я говорю о человеческих ошибках исправимых в рамках информационной системы. И при чем здесь таблицы недельной давности? Всю эту неделю проистекала только одна транзакция только одного пользователя работавшего с этой таблицей?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844732
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2iLLer
Насколько я понимаю, автор топика участвует как раз в разработке СУБД, так что слова "вашей прикладной системы" для него имхо оскорбительны :)
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844743
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму, что Вам запрещает реализовать Вам систему с треугольником, женщиной и откатом удалений на СУБД? Переходите на уровень выше. Понимаете о чем я? Как в стеке протокола TCP/IP, один уровень инкапсулируется в другой! СУБД не обязана поддерживать все прихоти пользователей сама, она должна предоставлять только платформу для организации хранения и доступа. Вся логика системы закладывается в БД ее разработчиком, а не разработчиком СУБД.

ОС Windows то же предоставляет платформу. Берем ассемблер и работаем напрямую через WIN32 API, реализуя прикладную логику. Но всех тянет почему то на готовенькое типа С и Forms.

Вам нужно откатывать избранные транзакции? А кто Вам сказал, что эти транзакции должны быть транзакциями с СУБД?

А с кем они еще могут быть транзакциями? Действие пользователя превращается в запрос приложения к СУБД, который выполняется или невыполняется этой самой СУБД как единое целое.

Девушка оператор случайно грохнула что-то - это транзакция верхнего уровня(она нажала кнопку), клиентский софт отослал на сервер комманду delete(СУБД потерла данные) - это транзакция более низкого уровня. Вот и моделируйте одни при помощи других.

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

Пример реализации механизма - оператор удаляет, а в БД НЕ УДАЛЕНИЕ, а пометка. Вот и все, новые объекты можно цеплять только к тем, которые не помечены, если захочешь грохнуть что-то старое, то оно не грохнется, если к нему уже что-то подцеплено. Ссылочную целостность обеспечивает СУБД.

Это все понятно. Еще надо удвоить число столбцов в каждой таблице, так как нужно помечать изменения каждого атрибута, написать свой сборщик мусора в БД и т.п. Я же спрашивал о существовании СУБД, где откат поддерживается прозрачно без кровавого надрыва со стороны прикладного программиста.

В очередной раз сталкиваюсь на этом форуме с людьми, которые не представляют себе процессов в системе (как на уровне СУБД, так и на прикладном уровне) и не могут разделить у себя в голове эти понятия. Заодно и разделите понятия СУБД и своей прикладной системы.

Куда уж нам с суконным рылом в сермяжный ряд.

Если по ТЗ система должна позволять это, то надо реализовывать, если нет - то нет. Система должна делать только то, что написано в ТЗ. Все остальное в лог-файле.

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

Читайте Дейта, вообщем.

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

А я положу в БД строчку `компания купила компьютер`. Как Ваш сервер из этой строчки вытащит связь двух объектов? И почему эта связь должна вытаскиваться из строчки? И куда в БД я должен положить эту строчку, что бы это чудо произошло?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32844838
lazy fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99 lazy fox Да, кстати, откуда ваш сервер знает что-то о связях объектов? Допустим, мой клиент смотрит на монитор и кладет в БД строчку 'баба сидит на треугольнике', а ваш клиент замечательно воспроизводит написанное. Как из этой строчки сервер вытащит связь двух объектов?

А я положу в БД строчку `компания купила компьютер`. Как Ваш сервер из этой строчки вытащит связь двух объектов? И почему эта связь должна вытаскиваться из строчки? И куда в БД я должен положить эту строчку, что бы это чудо произошло?

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

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

Я нигде не упоминал однопользовательские системы. Я упоминал откат транзакций в контексте одного пользователя, но в многопользовательской системе.

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

Я говорю о человеческих ошибках исправимых в рамках информационной системы. И при чем здесь таблицы недельной давности? Всю эту неделю проистекала только одна транзакция только одного пользователя работавшего с этой таблицей?

Еще раз поясняю : при выборочном откате транзакций в больших системах бардак неизбежен.
Оператор удалил клиента. Отчет №1 заполнил таблицу №1 итогами по клиентам. Отчет №2, используя первую таблицу, заполнил таблицы №2 и 3.
И так далее.
Теперь малой кровью восстановить клиента не получится - с учетом того, никто не представляет всей системы. Это можно сделать либо тщательно распутывая каждую связь, либо восстановив систему на момент непосредственно предшествующий удалению.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845000
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg99И заодно самостоятельно напишите систему репликации БД, потому что лог-файл предоставляет для нее достаточную платформу.
Уже как два года назад написал. И годится для любой СУБД, поддерживающей триггеры.)))
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845025
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lazy foxНет, это я вас спрашиваю: как мне теперь определять связи между объектами, хранить эти связи в вашей БД, чтобы вы имели возможность блокировать произвольные откаты с учетом семантики связей и что такое вообще "связь между объектами" с точки зрения ООП?

Я не очень понимаю причем здесь ООП и вообще не хотелось бы вдаваться в подробности реализации. Представим что такая функциональность (типа savepoints в Workspace, но "прозрачно" для пользователя) реализована. То есть
1) Администратор может откатить всех в любую точку в прошлом (в рамках задаваемого временнОго окна).
2) Конкретный пользователь может при определенных условиях откатить "свои" транзакции обратным порядком или даже выборочно откатить прошлые транзакции не трогая последующие.

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

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

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

Я не очень понимаю причем здесь ООП и вообще не хотелось бы вдаваться в подробности реализации. Представим что такая функциональность (типа savepoints в Workspace, но "прозрачно" для пользователя) реализована. То есть
1) Администратор может откатить всех в любую точку в прошлом (в рамках задаваемого временнОго окна).
2) Конкретный пользователь может при определенных условиях откатить "свои" транзакции обратным порядком или даже выборочно откатить прошлые транзакции не трогая последующие.

Вопрос был в том насколько такая возможность будет востребована программистами БД.

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

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

Вы главное не волнуйтесь. Если баба от клиента ушла, то и бог с ней. В базе то она еще осталась :-).

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

Проблема правда в том что за соседним компьютером в Вашем же приложении баба например взяла и легла на треугольник поспать. Возникает вопрос "что на самом деле делает баба - вообще ушла (клиент1), спит (клиент2) или курит (БД)?". Клиента которому безразлично что происходит в базе, я не могу отнести к программе БД, а программиста который такие клиенты пишет - к программистам БД.

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

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

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

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

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

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

Берите в руки инструмент - и вперед, сделать самому проблем нет. Если так сильно нужно.

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

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

-- Tygra's --
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845752
lazy fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
serg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845757
serg99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra авторВопрос в том можно ли в принципе удалить клиента по логике приложения? Допустим можно. Можно ли ввести нового клиента? Разумеется. Если приложение корректно отрабатает ситуацию когда я вручную удаляю клиента, а затем вручную добавляю клиента эквивалентного удаленному, то не вижу основы для бардака.
И что, где тут откат чего-либо?
Я полагал что здесь ясно о чем я говорю. Если в приведенном примере новый клиент появляется как откат операции "удалить клиента", то бардака не получается.

tygra авторЕсли какие то отчеты должны соответствовать первичным данным, то они периодически перезапускаются.
Т.е. если вы запустите отчет за один и тот же день. но попадете то на откат транзакции, то на "закат" :) то окажется, что один и тот же отчет за один и тот же момент содержит разные данные. И какой из ни правильный?
Вы определитесь о чем Вы говорите - об одном и том же дне, или об одном и том же моменте. Работа с отчетами ничем не отличается от обычной ситуации когда во время отчета операторы то добавляют что нибудь в базу, то удаляют что нибудь из базы.

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

Я естественно говорю не о конфликте транзакций в смысле их изоляции. Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому.
Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций.

tygra Это ваша проблема. Уже скоро неделя будет, как вам это вдалбливают в голову

-- Tygra's --

Вы главное не волнуйтесь так сильно. Нервные клетки не восстанавливаются.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845775
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существуют разные модели транзакций
Подробнее, например - http://www.vsu.ru/~reb/library/devel/dbms2_95_1/18.htm

Хроники (sagas) ИМХО решают поставленную задачу
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32845777
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ полагал что здесь ясно о чем я говорю. Если в приведенном примере новый клиент появляется как откат операции "удалить клиента", то бардака не получается.
Получается. Хотя-бы потому, что у клиента будет новый ID. А если на клиенте ничего не было навешено - то и откатывать нечего, добавляй нового.
авторВы определитесь о чем Вы говорите - об одном и том же дне, или об одном и том же моменте. Работа с отчетами ничем не отличается от обычной ситуации когда во время отчета операторы то добавляют что нибудь в базу, то удаляют что нибудь из базы.
Не важно, о чем, но уже прошедшем. И получится, что за позавчерашний день сегодня отчет будет один, а завтра другой. И оба правильные
авторЯ естественно говорю не о конфликте транзакций в смысле их изоляции. Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому.
Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций.
Еще раз: это не конфликт транзакций, более того, это вообще никак не относится к транзакциям. Это конфликт логики вашей системы. И вы сами, своими руками, и только вы можете реализовать откаты и все, чего еще захочется. Вот когда наконец вы это поймете, то никаких вопросов к СУБД не отсанется. А пока-что я уже и не понимаю, о чем идет разговор, из пустого в порожнее переливаете
авторВы главное не волнуйтесь так сильно. Нервные клетки не восстанавливаются.
А я не волнуюсь - мне наоборот весело

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

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

Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна.

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

Так что проще нажать кнопку UNDO или заново набивать целую страницу реквизитов клиента?

Не важно, о чем, но уже прошедшем. И получится, что за позавчерашний день сегодня отчет будет один, а завтра другой. И оба правильные

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

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

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

Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна.

Она известна и совпадает в обоих базах. Но клиенты разные.

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

Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна.

Она известна и совпадает в обоих базах. Но клиенты разные.

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

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

авторТак что проще нажать кнопку UNDO или заново набивать целую страницу реквизитов клиента?
Нет кнопки такой и по определению быть не может. Оператор сам лох. А если он не просто клиента удалил, а пару проводок или еще чего, то его за шиворот и за дверь.
авторЕстественно. Один правильный по состоянию на позавчерашний день, другой - на завтрашний. Если у Вас сегодня в базу оператор вручную (безо всяких откатов) ввел новые данные, то ведь завтрашний отчет у Вас будет отличаться от позавчерашнего. Он что неправильный будет? У Вас в базу вообще никаких изменений вводить нельзя? Тогда достаточно одного отчета на всю жизнь.
В десятый раз: отчет за ту же дату, только сделан завтра и послезавтра. Вы это-то хоть можете понять? Отчет за 15 число, а делали его 16 и 17. Так понятно?

авторНе видел приложений БД где бы логика приложения не была связана с теми запросами, которое приложение шлет в СУБД.
А при чем тут это? Запросы при чем?
Как вам объяснить то? Ну попробую в последний раз:
Логика приложения - это логика приложения .
А логика работы СУБД - это логика СУБД, и никак не связана с логикой приложения, никак!!! . СУБД по барабану. сколько у вас таблиц, как вы строете между ними отношения, кроликов вы учитываете или кирпичи, раз в год информацию меняете или раз в секунду. Задача СУБД - хранить данные, которые будут непротиворечивы в любой момент времени . И в ее задачи никак не входит контроль за тем, что ввел оператор, удалил он клиента и рвет волосы на жопе - это ваши проблемы, только ваши и ничьи больше ! Делайте структуру системы такой, чтобы можно было откатывать чего хотите куда хотите.
авторНе вижу так же как без поддержки со стороны СУБД "прозрачным" образом могут быть решены проблемы отмены действий пользователей работающих с одним набром данных в многопользовательских системах.
Руками и головой - не слыхали о таких инструментах? Или вы хотите, чтобы СУБД за вас еще и за таблицей клиентов присматривала? Чтобы проводки знала куда можно а куда нет, какие можно откатить - вместе с кучей других действий, а какие нельзя. Это в научно-фантастических романах покачто только есть, говоришь голосом: хачу информацию на такого-то, а она отвечает: а вот, пожалуйте, а ты ей: удали нафиг, а она: готово, а ты ей: верни в зад.....
авторНо у меня нет цели Вас переубеждать, так что можете оставться при своем мнении.
А в чем вы не хотите меня переубеждать? Я не вижу ничего такого

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

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

в оракле мусорную карзину сделали, т.е. в течении некоторого времени из нее можно вернуть удаленые записи и таблички + можно делать запросы на какой-то момент времени, т.е. запрос вернет данные которые на данный момент уже давно изменились и двадцать раз закомитились. однако полезность таких инструментов в боевой системе маловата ... дорого слишком.
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846052
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
serg99Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому.
Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций.
А вот если это и есть описание логики отката, то я вряд ли смогу его использовать
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #32846055
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg99
Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала".

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


После того, как вы обломались с предложенной мной объектной моделью и предложили мне абстрагироваться от подробностей реализации, в базе есть такой объект.

serg99
у которого есть атрибут "Статус отбытия".


Глупости. Нет у него статуса объекта. Я же вам русским по белому - у него есть расписание, а статуса объекта нет. Читай - ТАК НАДО .

serg99
Значение этого атрибута определяет пришел поезд или не пришел. То есть приложения должны правильно и одинаково понимать семантику модели данных (постольку поскольку они пользуются единой БД).

У них разная семантика и они не пользуются единой БД . Вы читаете или где??

serg99
Если одно приложение понимает семантику так, а другое - эдак, то это большая беда.

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

serg99
При этом откаты будут работать как надо.

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

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

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

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

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

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

И т.д. и т.п.

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

Мы рождены что бы сказку сделать былью :-).

А в чем вы не хотите меня переубеждать? Я не вижу ничего такого

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

А какая логика отката Вас бы устроила?
...
Рейтинг: 0 / 0
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
    #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
122 сообщений из 122, показаны все 5 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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