Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:12 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Example ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:16 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вложенные транзакции? (аксес, фокс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
хотя конечно интереснее не "откат закоммиченых транзакций", а как раз наоборот - "коммит зароллбеченых транзакий" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 01:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloExample ? Сюда относятся в первую очередь инженерные задачи, приложения связанные с проектированием (допустим архитектура, строительство, ...) и т.п. Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 12:58 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Это вопросы проектирования системы + политики прав доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:01 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Привет, Vadim_Maximov! Ты пишешь: Vadim_MaximovЭто вопросы проектирования системы + политики прав доступа. Поддерживаю. Достаточно при проектировании базы чётко разграничить понятия "изъятия документа из списка" и "уничтожения документа". -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:12 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:13 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> Угу, только откатятся ВСЕ транзакции. Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:18 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Vadim_Maximov Alex.CzechВообще говоря, непонятно, как можно откатить из набора транзакций T1, T2, T3, T4, ..., TN, последовательных по моменту коммита, транзакцию T3, не откатив T4 и все что за ней следует. Возможность откатиться до тразакции T3 есть во многих СУБД, например в Оракл restore database until <SCN> Угу, только откатятся ВСЕ транзакции. Да и операция восстановления - сама по себе довольно дорогостоящая по времени простоя... Еще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Мне лень расписывать почему, но если хотите - можно привести массу примеров :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Ну да. Я только хотел подчеркнуть что частичный откат выполнить невозможно даже не технически (никто такую фичу не сделал), а скорее по идейным соображениям. С другой стороны, в Оракл есть возможность выполнять т.н. flashback-запросы, так что можно сказать что нужная автору фича там есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:30 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Vadim_MaximovAlex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. Приведу другой пример. Допустим в базе хранится чертеж над которым коллективно работают несколько клиентских приложений. Я условно говоря нарисовал треугольничек потом круг и потом квадрат. Затем вспомнил что треугольник я нарисовал зря и хочу откатить именно "рисование этого треугольника", при этом естественно мой круг и квадрат должны оставаться на месте, и этот откат так же не должен затрагивать то, что после моего неправильного треугольника нарисовали другие клиенты. Естественно если до того как я хочу откатить свой треугольник в него уже кто то другой залез (скажем поменял форму), то откат не должен дозволяться так как треугольник стал "продуктом" двух пользователей и не может быть просто так откатан одним из них. Пример условный, поэтому не надо советовать взять этот треугольник и просто удалить (это можно сделать всегда, даже если треугольник редактировался до этого многими клиентами). При этом кстати тот же вопрос: удалив треугольник и сделав еще что нибудь я вспоминаю что зря я удалил треугольник и хочу его восстановить (не затрагивая то что сделано другими клиентами после неудачного удаления). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:53 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
В седьмом постгресе была возможность посмотреть таблицу, какой она была в указанный момент времени. То есть, вы могли бы посмотреть этот треугольник, каким он был раньше и скопировать его в настоящее время. Такую же функциональность можно сделать на любой СУБД - надо ничего не удалять и хранить историю изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 13:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Vadim_MaximovAlex, мы имеем в виду одно и тоже, просто недопоняли друг друга. Я и имел в виду, что откатившись до T3 мы теряем T4 и все последующие. Т.е. частичный откат (T4 не откатываем, а Т3 - да) выполнить невозможно. Что вообщем-то и логично.. Приведу другой пример. Допустим в базе хранится чертеж над которым коллективно работают несколько клиентских приложений. Я условно говоря нарисовал треугольничек потом круг и потом квадрат. Затем вспомнил что треугольник я нарисовал зря и хочу откатить именно "рисование этого треугольника", при этом естественно мой круг и квадрат должны оставаться на месте, и этот откат так же не должен затрагивать то, что после моего неправильного треугольника нарисовали другие клиенты. Естественно если до того как я хочу откатить свой треугольник в него уже кто то другой залез (скажем поменял форму), то откат не должен дозволяться так как треугольник стал "продуктом" двух пользователей и не может быть просто так откатан одним из них. Пример условный, поэтому не надо советовать взять этот треугольник и просто удалить (это можно сделать всегда, даже если треугольник редактировался до этого многими клиентами). При этом кстати тот же вопрос: удалив треугольник и сделав еще что нибудь я вспоминаю что зря я удалил треугольник и хочу его восстановить (не затрагивая то что сделано другими клиентами после неудачного удаления). Видите ли... во-первых, БД это не чертеж, ну это впрочем и так понятно :) Но даже если продолжать чертежную аналогию - возможно, есть такое правило, которое должно неукоснительно соблюдаться, а не то: число кругов на рисунке должно быть не меньше числа треугольников. И есть две операции - рисования фигуры и стирания фигуры. И проверяется это правило только при рисовании фигуры, потому как предполагается что от стирания фигуры правило нарушено быть не может - ведь мы возвращаемся к какому-то уже существовавшему состоянию Возвращаясь к СУБД - если мы откатываем транзакцию, мы должны быть уверены что переходим в целостное состояние БД так же как и при накате оной. Однако механизма проверки, так ли это, для отката транзакции не существует (в тех БД которые я знаю, я уверен что и в тех что я не знаю - тоже) - гарантом этого факта является существующий механизм проверки этого при накате транзакции. Таким образом, ради внедрения такой, неясно насколько нужной, фичи потребуется очень серьезная доработка ядра системы, приводящая вдобавок к перманентному замедлению любой операции отката ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 14:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Думаю, что проблема решается, если вы не удаляете/изменяете из базы записи, а только помечаете их как удаленные/измененные (возможно также уточняете кем). Вопрос правда в том, что предлагаемая задача требует наличия сложных механизмов (написанных вами приложений) для управления (кто и как будет задавать параметры отката, коих будет очень много). В Versant VDS (объектная база данных) есть возможность работы с версионностью объектов. Т.е. для каждого объекта, хранимого в базе, можно отследить граф его различных версий (к каждой версии можно получить доступ). Можно создавать новые версии на базе любых старых и сливать несколько старых версий в одну новую. Но проблемы интерфейса для управления столь замысловатыми откатами это не решает - его все равно прийдется писать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 15:00 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 vybegalloExample ? Сюда относятся в первую очередь инженерные задачи, приложения связанные с проектированием (допустим архитектура, строительство, ...) и т.п. Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Если бы у нее была кнопка "Undo" облегчило бы это задачу восстановления удаленных данных? В общем случае пользователь может вспомнить, что он сделал что то не так несколько транзакций назад и может захотеть отменить действия именно этой транзакции (или нескольких). То есть речь идет о поддержке UNDO/REDO на уровне сервера БД, а не в приложении. При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:00 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
www.fun4me.narod.ruВ седьмом постгресе была возможность посмотреть таблицу, какой она была в указанный момент времени. То есть, вы могли бы посмотреть этот треугольник, каким он был раньше и скопировать его в настоящее время. Это и есть упомянутые flashback queries в Оракле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
softwarer Alex.CzechЕще раз - вообще говоря непонятно как можно откатить транзакцию T3, не откатив транзакцию T4, если T4 была закоммичена позже. Чисто технически - понятно, что существуют случаи, когда это возможно. Вопрос в том, что вряд ли в обычном режиме сохраняется необходимая для этого информация - например, в Oracle для теоретической возможности выполнения этого, полагаю, придется выставлять каждой транзакции уровень изоляции repeatable read, а возможно - даже serializable. Поскольку реальные приложения такой архитектуры вряд ли существуют - .... Гм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ? Ведь любой read в Оракл будет очень даже repeatable :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechГм. Я полагал что в Оракле и так все работает в режиме REPEATABLE READ всегда... разве я неправ ? По умолчанию Oracle работает в режиме READ COMMITTED. Можно ли в настройках экземпляра задать другой уровень изоляции по умолчанию - наверное, можно (лень проверять), но это настолько не принято, что я назову это заведомо кривым подходом - надеюсь, понятно, какие проблемы вызывает "нестандартная настройка сервера". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 18:43 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo При этом после того, как девочка поубивала клиентов, но перед тем, как спохватилась, менеджером другого подразделения был выполнен отчет по клиентам. Девочка откатила транзакцию. Откуда менеждер узнает, что его отчет неверен ? Так ведь его отчет верен :-). У отчета есть дата/время его создания, соответственно верность/неверность отчета относится только к этому времени. Вы же не будете запрещать модификацию базы данных из-за того что сделанный когда то отчет становится при этом out-of-date. Верность/неверность отчета поределяется его соответствием/несоответствием текущему состоянию данных в БД (подразумевается что данные целостны и логически не противоречивы). БД не имеет каких либо механизмов определить верность/неверность собственно своих данных (в смысле их соответствия объективной реальности). Соответственно девочка поубивавшая записи, вместо того что бы бежать к администратору просить исправить ее ошибку (за что у нее могут понизить премию), скорее всего просто никому ничего не скажет и никакой менеджер никогда ничего не заметит (разве что случайно). Была бы кнопка UNDO, то этой проблемы не было бы. Разграничение доступа решает проблему частично, потому что любой человек может ошибиться в рамках предоставленных ему прав. То есть насколько я понял каких то простых возможностей пользователю откатить одну из своих уже закоммиченных транзакций существующие СУБД не предоставляют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 22:48 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных. К примеру, отчет был - о клиентах, переводящих суммы больше $x. И каким образом у вас в базе то исчезают, то появляются некоторые клиенты, и нет ли в этом преступного умысла - будете рассказывать прокурору :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 23:08 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
В оракле 9 и выше есть такая возможность. Посмотрите на workspace management. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:22 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloВы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как средству поддержки непротиворечивости и интегральной целостности данных. Это не противоречит выше названной идее. Как до транзакции так и после нее данные были целостные и непротиворечивые. Соответственно откат закомиченной транзакции это так же транзакция переводящая БД в целостное и непротиворечивое состояние при условии отмены действий вызванных откатываемой транзакцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:46 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Привет, serg99! Ты пишешь: serg99 vybegallos> Вы правильно поняли - стандартных средств нет и быть не должно. ПОскольку это противоречит самой идее транзакций, как s> средству поддержки непротиворечивости и интегральной целостности данных. s> Это не противоречит выше названной идее. Как до транзакции так и после нее данные были целостные и непротиворечивые. s> Соответственно откат закомиченной транзакции это так же транзакция переводящая БД в целостное и непротиворечивое состояние s> при условии отмены действий вызванных откатываемой транзакцией. Тебе ехать, или шашечки? (С) Читай Дейта и не городи чепуху. Как там ваша супер-пупер ОО СУБД, уже создали? Или так и не нашелся достойный "амбициозный руководитель проекта" -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:58 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
AIВ оракле 9 и выше есть такая возможность. Посмотрите на workspace management. Взглянул очень кратко. Если речь идет о gotoDate, то это не совсем то о чем я говорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:59 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Это не противоречит выше названной идее. Теоретически - не противоречит. Практически же транзакция опирается на данные предыдущих транзакций, и потому откат этих предыдущих транзакций имеет все шансы нарушить целостность последующей (и уже закоммиченной) транзакции. Для того, чтобы отследить это, необходимо построить механизм "глобального аудита", который будет строить что-то графа опирающихся друг на друга транзакций - и, полагаю, на сегодняшнем уровне это неадекватно сложная и неадекватно неэффективная постановка вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Читай Дейта и не городи чепуху. Я думаю Вам надо перечитать Маршака, Барто и других детских писателей. Именно в детском нежном возрасте закладываются основы воспитанности и интеллигентности. Мимопроходящий Как там ваша супер-пупер ОО СУБД, уже создали? Сейчас идет этап прототипирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:13 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
softwarerТеоретически - не противоречит. Практически же транзакция опирается на данные предыдущих транзакций, и потому откат этих предыдущих транзакций имеет все шансы нарушить целостность последующей (и уже закоммиченной) транзакции. Для того, чтобы отследить это, необходимо построить механизм "глобального аудита", который будет строить что-то графа опирающихся друг на друга транзакций - и, полагаю, на сегодняшнем уровне это неадекватно сложная и неадекватно неэффективная постановка вопроса. Предположим такой механизм существует. Была бы такого рода функциональность востребована прикладными программистами и пользователями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 AIВ оракле 9 и выше есть такая возможность. Посмотрите на workspace management. Взглянул очень кратко. Если речь идет о gotoDate, то это не совсем то о чем я говорю. Речь идет о savepoint, rollback workarea. Еще и о разрешении конфликтов. Таблицы разбиваются на несколько рабочих областей, в которых выполняется сколько угодно транзакций. После проверки правильности рабочей области, ее можно слить с основной, а можно и откатить все изменения или их часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:28 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 softwarerТеоретически - не противоречит. Практически же транзакция опирается на данные предыдущих транзакций, и потому откат этих предыдущих транзакций имеет все шансы нарушить целостность последующей (и уже закоммиченной) транзакции. Для того, чтобы отследить это, необходимо построить механизм "глобального аудита", который будет строить что-то графа опирающихся друг на друга транзакций - и, полагаю, на сегодняшнем уровне это неадекватно сложная и неадекватно неэффективная постановка вопроса. Предположим такой механизм существует. Была бы такого рода функциональность востребована прикладными программистами и пользователями? Думаю нет. Проще повторить операцию "задом наперед" самому, чем разгребать потом последствия такого ловкого отката ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:28 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Привет, serg99! Ты пишешь: serg99 МимопроходящийЧитай Дейта и не городи чепуху. Я думаю Вам надо перечитать Маршака, Барто и других детских писателей. Именно в детском нежном возрасте закладываются основы воспитанности и интеллигентности. Обидел? Ну поплачь. Явный прогресс на лицо, от чайника, до работодателя. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:29 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Была бы такого рода функциональность востребована прикладными программистами и пользователями? Пользователями - однозначно нет - они не знают что такое транзакция. Программистами - может быть, хотя я не представляю как я (программист) буду определять номер транзакции, которую мне нужно откатить, чтобы выполнить undo какой-то операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:31 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Предположим такой механизм существует. Была бы такого рода функциональность востребована прикладными программистами и пользователями? Не думаю. Вернее, не думаю, что она будет востребована на уровне, оправдывающем даже простейшую разработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:47 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Обидел? Ну поплачь. Явный прогресс на лицо, от чайника, до работодателя. Все таки удивляет внутренняя потребность некоторых юношей похамить. Если Вы юноша посмотрите на цвет которым отображаются авторы постов, то заметите что зарегистрированные пользователи отображаются голубым цветом, а незарегистрированные Guest черным. Так что если у Вас руки чешутся, то Вы можете как Guest под именем serg99 написать любую гадость, а потом говорить, что ее написал я. Флаг Вам в руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:56 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
xПрограммистами - может быть, хотя я не представляю как я (программист) буду определять номер транзакции, которую мне нужно откатить, чтобы выполнить undo какой-то операции. Сервер возвратит результат исполнения транзакци вместе с присвоенным этой транзакции уникальным номером. Приложение хранит список "своих" номеров. Далее UNDO(TransactionNumber). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:03 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
softwarerНе думаю. Вернее, не думаю, что она будет востребована на уровне, оправдывающем даже простейшую разработку. Почему же тогда любой мало мальски нормальный редактор (или в принципе приложение связанное с вводом пользователем каких либо данных) такую функциональность имеет. Ведь и в Word я могу просто в обратном порядке повторить свои операции. Получается, что эта функциональность в данных случаях оправдывает совсем даже не простую разработку. Многие приложения БД - это по сути ведь то же редакторы различных бизнес-данных и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:10 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 softwarerНе думаю. Вернее, не думаю, что она будет востребована на уровне, оправдывающем даже простейшую разработку. Почему же тогда любой мало мальски нормальный редактор (или в принципе приложение связанное с вводом пользователем каких либо данных) такую функциональность имеет. Ведь и в Word я могу просто в обратном порядке повторить свои операции. Получается, что эта функциональность в данных случаях оправдывает совсем даже не простую разработку. Многие приложения БД - это по сути ведь то же редакторы различных бизнес-данных и т.п. В данном примере коммитом можно считать выход из Ворда. Попробуй отменить или повторить свои действия после данного действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Excel с СУБД уже сравнили, теперь настала очередь Word??? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:31 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 xПрограммистами - может быть, хотя я не представляю как я (программист) буду определять номер транзакции, которую мне нужно откатить, чтобы выполнить undo какой-то операции. Сервер возвратит результат исполнения транзакци вместе с присвоенным этой транзакции уникальным номером. Приложение хранит список "своих" номеров. Далее UNDO(TransactionNumber). А откуда возмется этот TransactionNumber. Ведь пользователь его не скажет. Он будет тыкать пальзем в свой треугольник на чертеже и говорить что он ему не нужен. PS: А не проще ли взять да и удалить этот треугольник, не заморачивась с поиском номера транзакции, котороя его создала? PS2: А про Word все таки интересное сравнение. Там ведь есть режим сохранения изменений и их действительно можно индивидуально отменять (в т.ч. и после закрыти/открытия). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:54 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вот еще подумал. Пример с удалением достаточно очевиден. А вот пример с восстановлением удаленного ранее. Т.е. через три часа (дня) после удаления треугольника из чертежа пользователь вдруг вспоминает, что он ему нужен. И что? Они вместе с программистом садятся рассматривать все транзакции, которые он с тех пор совершил, чтобы найти номер той единственной, которую нужно откатить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:56 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoА откуда возмется этот TransactionNumber. Ведь пользователь его не скажет. Он будет тыкать пальзем в свой треугольник на чертеже и говорить что он ему не нужен. Приложение шлет на сервер скажем транзакцию "Нарисовать треугольник". Сервер возвращает ответ с успехом тпранзакции и с ее уникальным номером. Приложение запоминает список исполненных транзакций вместе с их номерами. Пользователь нажимает как в Ворде кнопку UNDO и получает историю транзакций в виде списка "Нарисовать треугольник (p1(х,y), p2(x,y) p3(x,y))" "Нарисовать круг (center(x,y) radius(r))" и т.п. Он просто выбирает действие (набор действий) какое он хочет отменить и знать ему ничего не нужно про номер транзакции (об этом знает приложение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 16:14 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Ну делайте версионное хранение данных и не озадачивайтесь такими вот вопросами. Мало ли чего пользователь может вспомнить или сделать, в том числе задним числом. В БД у Вас должна лежать целостная копия чертежа. В клиенте на момент изменения поддерживаться откат. При сохранении изменений в БД туда должен чертеж полностью записываться как новая версия. Ну и т.д. и т.п. Зачем проблемы постановки сводить на сравнение СУБД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 16:15 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 softwarerНе думаю. Вернее, не думаю, что она будет востребована на уровне, оправдывающем даже простейшую разработку. Почему же тогда любой мало мальски нормальный редактор (или в принципе приложение связанное с вводом пользователем каких либо данных) такую функциональность имеет. Ведь и в Word я могу просто в обратном порядке повторить свои операции. Функциональность "отменить N последних операций" есть - не только в редакторах, но и в СУБД. А вот "отменить N-ю, не отменяя N-1-ю" - такого, признаться, в ворде не умею. И с глубоким интересом изучу, насколько целостные данные выходят у него из этой операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 16:25 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
автор"Нарисовать треугольник (p1(х,y), p2(x,y) p3(x,y))" "Нарисовать круг (center(x,y) radius(r))" Это просто праздник какой-то... А еще один имбицил от ООП сидя за соседним компом стер ваши треугольник и круг... И закоммитил. А потом вставил большую потную женщину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 16:30 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
ASCRUSНу делайте версионное хранение данных и не озадачивайтесь такими вот вопросами. Мало ли чего пользователь может вспомнить или сделать, в том числе задним числом. В БД у Вас должна лежать целостная копия чертежа. В клиенте на момент изменения поддерживаться откат. При сохранении изменений в БД туда должен чертеж полностью записываться как новая версия. Ну и т.д. и т.п. Зачем проблемы постановки сводить на сравнение СУБД ? Ну в общем случае конечно такие проблемы должны решаться в рамках приложений и соотвествующего построения модели данных. Но в некоторых частных случаях я с автором топика согласен. Какие-то элементы отката закоммиченых транзакций теоретически моглы бы и присутствовать в составе функциональности СУБД. В каком виде - другой вопрос. Возможно при закрытии транзакции ее можно было бы помечать особым образом. Т.е. только помеченные транзакции были бы откатываемыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxЭто просто праздник какой-то... А еще один имбицил от ООП сидя за соседним компом стер ваши треугольник и круг... И закоммитил. А потом вставил большую потную женщину Я уже об этом писал. Если кто нибудь после меня изменил параметры треугольника, а тем более убил его, то это конфликт пользователей и откат запрещается. Если же кто то нарисовал женщину рядом с моим треугольником, почему же я не могу откатить свой треугольник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:10 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Я чего-то все же не пойму - а при чем тут СУБД вообще???!!! Хочется кому-то откатывать чего-то - ну пиши соответствующую структуру работы с данными, строй на ней всю систему, какие проблемы? А задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата..... Пора закрыть тему - из пустого в порожнее переливаем. И если уж хочется - открыть новую тему: как в системе сделать произвольный откат произведенных действий - методы решения. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:12 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxЭто просто праздник какой-то... А еще один имбицил от ООП сидя за соседним компом стер ваши треугольник и круг... И закоммитил. А потом вставил большую потную женщину Я уже об этом писал. Если кто нибудь после меня изменил параметры треугольника, а тем более убил его, то это конфликт пользователей и откат запрещается. Если же кто то нарисовал женщину рядом с моим треугольником, почему же я не могу откатить свой треугольник? Потому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxЭто просто праздник какой-то... А еще один имбицил от ООП сидя за соседним компом стер ваши треугольник и круг... И закоммитил. А потом вставил большую потную женщину Я уже об этом писал. Если кто нибудь после меня изменил параметры треугольника, а тем более убил его, то это конфликт пользователей и откат запрещается. Если же кто то нарисовал женщину рядом с моим треугольником, почему же я не могу откатить свой треугольник? Потому что женщина сидит на этом треугольнике и если его "откатить" - у нее задница в воздухе повиснет, что противоречит всем законам физики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:39 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxПотому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника. Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:42 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxПотому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника. Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано. А это означает что операция "отката" треугольника ничем не будет отличаться от его удаления - ну и зачем тогда ее нужно реализовывать отдельно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:50 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxПотому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника. Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано. Никаких связей не добавлено ибо незакоммитчено... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:58 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alex.CzechА это означает что операция "отката" треугольника ничем не будет отличаться от его удаления - ну и зачем тогда ее нужно реализовывать отдельно ? Откат "удаления треугольника" ничем не будет отличаться от его перерисовки заново и т.п. Откат "удаления параграфа" в Ворде эквивалентно "заново его напечатать". Можно ли обойтись без откатов? Конечно можно. Зачем же тогда его везде, где возможно, реализуют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 20:21 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
tygraА задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата..... Я не очень понимаю в чем Вы видите проблему. Если я вручную произведу действия обратные тому что я сделал несколько транзакций назад, никакого бардака ведь не получится. Почему же он получится если то же самое будет сделано автоматически. tygra Пора закрыть тему - из пустого в порожнее переливаем. И если уж хочется - открыть новую тему: как в системе сделать произвольный откат произведенных действий - методы решения. -- Tygra's -- Я то знаю как это сделать. Меня интересует насколько эта функциональность может быть востребована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 20:32 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy fox serg99 lazy foxПотому, что женщина нарисована не рядом, а на 5см северо-западнее одной из вершин треугольника. Ну и что? Если имеется в виду что теперь при перемещении треугольника женщина так же должна переместиться, или что при удалении треугольника женщина так же должна удалиться, то это значит что к треугольнику ДОБАВЛЕНА СВЯЗЬ с женщиной. То есть параметры треугольника изменились другим пользователем и в откате опять же будет отказано. Никаких связей не добавлено ибо незакоммитчено... Если женщина не закоммичена, то значит ее в базе нет и треугольник можно откатить. Зато тот кто ПОСЛЕ ЭТОГО будет коммитить женщину и ее связь с УЖЕ не существующим треугольником получит отлуп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 20:36 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 tygraА задача СУБД - чтобы всегда в любой момент времени (закоммиченные) данные были достоверные. Интересно, как сюда можно воткнуть откат транзакций, причем не просто откат всего состояния назад, а откат выборочно. Тогда у вас в БД будет даже не бардак - хаос. И потом все бы орали: да эта СУБД дрянь, данные пропадают, не понять чего творится, вчера было - сегодня нет, все перепутано..... И опять какая-нибудь MS была бы виновата..... Я не очень понимаю в чем Вы видите проблему. Если я вручную произведу действия обратные тому что я сделал несколько транзакций назад, никакого бардака ведь не получится. Почему же он получится если то же самое будет сделано автоматически. Вы не видите проблемы, потому что мыслите в терминах однопользовательской системы. Бардака не получится, если вы ясно представляете, какие из последующих действий используют результаты транзакции, которую вы хотите откатить. Если вы этого не представляете (а в больших системах этого никто не представляет), то бардак получится прекрасным образом, уверяю вас. Попробуйте в финансовой системе заменить таблицу ее копией недельной давности и посмотрите, что выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 22:03 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Если женщина не закоммичена, то значит ее в базе нет и треугольник можно откатить. Зато тот кто ПОСЛЕ ЭТОГО будет коммитить женщину и ее связь с УЖЕ не существующим треугольником получит отлуп. Отлуп - это когда кто-то нажимает на коммит и становится свидетелем внезапного исчезновения обоих объектов? ) Да, кстати, откуда ваш сервер знает что-то о связях объектов? Допустим, мой клиент смотрит на монитор и кладет в БД строчку 'баба сидит на треугольнике', а ваш клиент замечательно воспроизводит написанное. Как из этой строчки сервер вытащит связь двух объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 22:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
To Serg99 Не пойму, что Вам запрещает реализовать Вам систему с треугольником, женщиной и откатом удалений на СУБД? Переходите на уровень выше. Понимаете о чем я? Как в стеке протокола TCP/IP, один уровень инкапсулируется в другой! СУБД не обязана поддерживать все прихоти пользователей сама, она должна предоставлять только платформу для организации хранения и доступа. Вся логика системы закладывается в БД ее разработчиком, а не разработчиком СУБД. Вам нужно откатывать избранные транзакции? А кто Вам сказал, что эти транзакции должны быть транзакциями с СУБД? Девушка оператор случайно грохнула что-то - это транзакция верхнего уровня(она нажала кнопку), клиентский софт отослал на сервер комманду delete(СУБД потерла данные) - это транзакция более низкого уровня. Вот и моделируйте одни при помощи других. Пример реализации механизма - оператор удаляет, а в БД НЕ УДАЛЕНИЕ, а пометка. Вот и все, новые объекты можно цеплять только к тем, которые не помечены, если захочешь грохнуть что-то старое, то оно не грохнется, если к нему уже что-то подцеплено. Ссылочную целостность обеспечивает СУБД. В очередной раз сталкиваюсь на этом форуме с людьми, которые не представляют себе процессов в системе (как на уровне СУБД, так и на прикладном уровне) и не могут разделить у себя в голове эти понятия. Заодно и разделите понятия СУБД и своей прикладной системы. Если по ТЗ система должна позволять это, то надо реализовывать, если нет - то нет. Система должна делать только то, что написано в ТЗ. Все остальное в лог-файле. Читайте Дейта, вообщем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 23:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloВы не видите проблемы, потому что мыслите в терминах однопользовательской системы. Бардака не получится, если вы ясно представляете, какие из последующих действий используют результаты транзакции, которую вы хотите откатить. Если вы этого не представляете (а в больших системах этого никто не представляет), то бардак получится прекрасным образом, уверяю вас. Попробуйте в финансовой системе заменить таблицу ее копией недельной давности и посмотрите, что выйдет. Я нигде не упоминал однопользовательские системы. Я упоминал откат транзакций в контексте одного пользователя, но в многопользовательской системе. Естественно существуют так называемые закрытые периоды или неоткатываемые транзакции, когда результаты действий пользователя вышли за пределы информационной системы (отчеты переданы в фискальные органы, банкомат уже выдал деньги, закрыт операционный день и т.п.). Здесь что бы что то изменить нужно либо выкрасть отчеты из налоговой инспекции, либо сторнировать проводки в следующем балансе, а тот кто сидит в банкомате должен догнать и отобрать деньги у клиента :-). То есть исправление ошибок в этих случаях так же требует выхода за пределы информационной системы и подключения к этому организационно-административных ресурсов. Я говорю о человеческих ошибках исправимых в рамках информационной системы. И при чем здесь таблицы недельной давности? Всю эту неделю проистекала только одна транзакция только одного пользователя работавшего с этой таблицей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 23:17 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
2iLLer Насколько я понимаю, автор топика участвует как раз в разработке СУБД, так что слова "вашей прикладной системы" для него имхо оскорбительны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 01:46 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Не пойму, что Вам запрещает реализовать Вам систему с треугольником, женщиной и откатом удалений на СУБД? Переходите на уровень выше. Понимаете о чем я? Как в стеке протокола TCP/IP, один уровень инкапсулируется в другой! СУБД не обязана поддерживать все прихоти пользователей сама, она должна предоставлять только платформу для организации хранения и доступа. Вся логика системы закладывается в БД ее разработчиком, а не разработчиком СУБД. ОС Windows то же предоставляет платформу. Берем ассемблер и работаем напрямую через WIN32 API, реализуя прикладную логику. Но всех тянет почему то на готовенькое типа С и Forms. Вам нужно откатывать избранные транзакции? А кто Вам сказал, что эти транзакции должны быть транзакциями с СУБД? А с кем они еще могут быть транзакциями? Действие пользователя превращается в запрос приложения к СУБД, который выполняется или невыполняется этой самой СУБД как единое целое. Девушка оператор случайно грохнула что-то - это транзакция верхнего уровня(она нажала кнопку), клиентский софт отослал на сервер комманду delete(СУБД потерла данные) - это транзакция более низкого уровня. Вот и моделируйте одни при помощи других. Странные у Вас определения транзакций. Если все это транзакции, то значит можно сказать "откат нажатия кнопки" или "откат отсылки команды". Но что это значит я представить не могу. Разве что длинная рука приложения лезет в кабель, хватает отосланный только что пакет данных и засовывает его обратно в буфер контроллера Ethernet. Пример реализации механизма - оператор удаляет, а в БД НЕ УДАЛЕНИЕ, а пометка. Вот и все, новые объекты можно цеплять только к тем, которые не помечены, если захочешь грохнуть что-то старое, то оно не грохнется, если к нему уже что-то подцеплено. Ссылочную целостность обеспечивает СУБД. Это все понятно. Еще надо удвоить число столбцов в каждой таблице, так как нужно помечать изменения каждого атрибута, написать свой сборщик мусора в БД и т.п. Я же спрашивал о существовании СУБД, где откат поддерживается прозрачно без кровавого надрыва со стороны прикладного программиста. В очередной раз сталкиваюсь на этом форуме с людьми, которые не представляют себе процессов в системе (как на уровне СУБД, так и на прикладном уровне) и не могут разделить у себя в голове эти понятия. Заодно и разделите понятия СУБД и своей прикладной системы. Куда уж нам с суконным рылом в сермяжный ряд. Если по ТЗ система должна позволять это, то надо реализовывать, если нет - то нет. Система должна делать только то, что написано в ТЗ. Все остальное в лог-файле. Да, да - все в сад. И заодно самостоятельно напишите систему репликации БД, потому что лог-файл предоставляет для нее достаточную платформу. Читайте Дейта, вообщем. Если он писал что то про откат закоммиченных транзакций, то дайте пожалуйста ссылку. Надеюсь это не бессмысленное упоминание первоисточников в стиле "читайте материалы ХХV Съезда КПСС". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 03:14 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy fox Да, кстати, откуда ваш сервер знает что-то о связях объектов? Допустим, мой клиент смотрит на монитор и кладет в БД строчку 'баба сидит на треугольнике', а ваш клиент замечательно воспроизводит написанное. Как из этой строчки сервер вытащит связь двух объектов? А я положу в БД строчку `компания купила компьютер`. Как Ваш сервер из этой строчки вытащит связь двух объектов? И почему эта связь должна вытаскиваться из строчки? И куда в БД я должен положить эту строчку, что бы это чудо произошло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 03:25 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy fox Да, кстати, откуда ваш сервер знает что-то о связях объектов? Допустим, мой клиент смотрит на монитор и кладет в БД строчку 'баба сидит на треугольнике', а ваш клиент замечательно воспроизводит написанное. Как из этой строчки сервер вытащит связь двух объектов? А я положу в БД строчку `компания купила компьютер`. Как Ваш сервер из этой строчки вытащит связь двух объектов? И почему эта связь должна вытаскиваться из строчки? И куда в БД я должен положить эту строчку, что бы это чудо произошло? Нет, это я вас спрашиваю: как мне теперь определять связи между объектами, хранить эти связи в вашей БД, чтобы вы имели возможность блокировать произвольные откаты с учетом семантики связей и что такое вообще "связь между объектами" с точки зрения ООП? Мой _клиент_ вытащит связь из строчки `компания купила компьютер`, можете не сомневаться, подобно тому, как ваш браузер сейчас сходил за аналогичной строчкой на сервер и изобразил кучу взаимосвязанных объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 13:32 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 vybegalloВы не видите проблемы, потому что мыслите в терминах однопользовательской системы. Бардака не получится, если вы ясно представляете, какие из последующих действий используют результаты транзакции, которую вы хотите откатить. Если вы этого не представляете (а в больших системах этого никто не представляет), то бардак получится прекрасным образом, уверяю вас. Попробуйте в финансовой системе заменить таблицу ее копией недельной давности и посмотрите, что выйдет. Я нигде не упоминал однопользовательские системы. Я упоминал откат транзакций в контексте одного пользователя, но в многопользовательской системе. Естественно существуют так называемые закрытые периоды или неоткатываемые транзакции, когда результаты действий пользователя вышли за пределы информационной системы (отчеты переданы в фискальные органы, банкомат уже выдал деньги, закрыт операционный день и т.п.). Здесь что бы что то изменить нужно либо выкрасть отчеты из налоговой инспекции, либо сторнировать проводки в следующем балансе, а тот кто сидит в банкомате должен догнать и отобрать деньги у клиента :-). То есть исправление ошибок в этих случаях так же требует выхода за пределы информационной системы и подключения к этому организационно-административных ресурсов. Я говорю о человеческих ошибках исправимых в рамках информационной системы. И при чем здесь таблицы недельной давности? Всю эту неделю проистекала только одна транзакция только одного пользователя работавшего с этой таблицей? Еще раз поясняю : при выборочном откате транзакций в больших системах бардак неизбежен. Оператор удалил клиента. Отчет №1 заполнил таблицу №1 итогами по клиентам. Отчет №2, используя первую таблицу, заполнил таблицы №2 и 3. И так далее. Теперь малой кровью восстановить клиента не получится - с учетом того, никто не представляет всей системы. Это можно сделать либо тщательно распутывая каждую связь, либо восстановив систему на момент непосредственно предшествующий удалению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 21:53 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99И заодно самостоятельно напишите систему репликации БД, потому что лог-файл предоставляет для нее достаточную платформу. Уже как два года назад написал. И годится для любой СУБД, поддерживающей триггеры.))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 22:28 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxНет, это я вас спрашиваю: как мне теперь определять связи между объектами, хранить эти связи в вашей БД, чтобы вы имели возможность блокировать произвольные откаты с учетом семантики связей и что такое вообще "связь между объектами" с точки зрения ООП? Я не очень понимаю причем здесь ООП и вообще не хотелось бы вдаваться в подробности реализации. Представим что такая функциональность (типа savepoints в Workspace, но "прозрачно" для пользователя) реализована. То есть 1) Администратор может откатить всех в любую точку в прошлом (в рамках задаваемого временнОго окна). 2) Конкретный пользователь может при определенных условиях откатить "свои" транзакции обратным порядком или даже выборочно откатить прошлые транзакции не трогая последующие. Вопрос был в том насколько такая возможность будет востребована программистами БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 00:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloЕще раз поясняю : при выборочном откате транзакций в больших системах бардак неизбежен. Оператор удалил клиента. Отчет №1 заполнил таблицу №1 итогами по клиентам. Отчет №2, используя первую таблицу, заполнил таблицы №2 и 3. И так далее. Теперь малой кровью восстановить клиента не получится - с учетом того, никто не представляет всей системы. Это можно сделать либо тщательно распутывая каждую связь, либо восстановив систему на момент непосредственно предшествующий удалению. Вопрос в том можно ли в принципе удалить клиента по логике приложения? Допустим можно. Можно ли ввести нового клиента? Разумеется. Если приложение корректно отрабатает ситуацию когда я вручную удаляю клиента, а затем вручную добавляю клиента эквивалентного удаленному, то не вижу основы для бардака. Если какие то отчеты должны соответствовать первичным данным, то они периодически перезапускаются. Если соответствие нужно в реальном времени, то отчеты запускаются по триггерам по изменению первичных данных. Если по клиенту скажем уже прошли торговые операции, то приложение с самого начала просто запретит удаление такого клиента, иначе эти операции "повиснут". То есть при выборочном откате транзакций приложения разрешается откат только тех транзакций которые не "конфликтуют" с транзакциями других приложений или со своими более поздними транзакциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 00:25 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
iLLerУже как два года назад написал. И годится для любой СУБД, поддерживающей триггеры.))) Я всегда говорил, что не перевелись еще таланты на земле Русской. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 00:26 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxНет, это я вас спрашиваю: как мне теперь определять связи между объектами, хранить эти связи в вашей БД, чтобы вы имели возможность блокировать произвольные откаты с учетом семантики связей и что такое вообще "связь между объектами" с точки зрения ООП? Я не очень понимаю причем здесь ООП и вообще не хотелось бы вдаваться в подробности реализации. Представим что такая функциональность (типа savepoints в Workspace, но "прозрачно" для пользователя) реализована. То есть 1) Администратор может откатить всех в любую точку в прошлом (в рамках задаваемого временнОго окна). 2) Конкретный пользователь может при определенных условиях откатить "свои" транзакции обратным порядком или даже выборочно откатить прошлые транзакции не трогая последующие. Вопрос был в том насколько такая возможность будет востребована программистами БД. По второму пункту: вы _не_знаете_ этих "определенных условий". Эти условия определяются логикой _моего_ приложения. А поскольку я с хорошей вероятностью запарюсь вам объяснять, что баба присела на треугольник просто покурить, а потом встанет и уйдет, _сама_ без транзакций уйдет, у меня так написано - встала и ушла, а в базе есть, а мне пох, только на клиенте ушла... Так вот по этой причине не будет такая возможность востребована программистами БД )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 01:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
В принципе можно долго обсуждать смысл введения в СУБД той или иной функциональности. Но следует признать, что в любой конкретной СУБД вполне достаточно совершенно на первый взгляд бессмысленной функциональности, которая тем не менее бывает востребованной. Причем востребована она не в последнюю очередь из-за неграмотности/непродвинутости/несистематического подхода/и т.п. самих разработчиков. Все может быть. Возможно кому-то кажется, что откат закоммиченных транзакций - глупое и приводящее к хаосу действие. Но наверняка найдутся и желающие этим воспользоваться. Следует впрочем оценить то, как много реальных задач, в которых это может быть полезно. Ну и наконец, нужно понимать, что включая такую функциональность в СУБД прийдется предусматривать и нормальную работу всех механизмов обеспечения безопасности (я удалил данные, а кто-то их потом может восстановить; кто получит доступ к восстановленным данным и т.п.). И снова отмечаю, что механизм взаимодействия пользователя/администратора с системой для инициализации отката транзакции будет очень сложен и для его поддержки прийдется значительно усложнять приложения. Для пользователя UNDO-список вида: INSERT ... DELETE ... INSERT ... Не имеет никакого смысла. Ему нужно будет выдавать информацию в терминологии его приложения и предметной области - так, как это обычно делается в разнообразных журналах учета операций, встраиваемых в приложения. Но в целом эта проблема разрешима и в той предметной области, где работаю я, подобная функциональность вероятно могла бы найти применение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 12:59 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxПо второму пункту: вы _не_знаете_ этих "определенных условий". Эти условия определяются логикой _моего_ приложения. А поскольку я с хорошей вероятностью запарюсь вам объяснять, что баба присела на треугольник просто покурить, а потом встанет и уйдет, _сама_ без транзакций уйдет, у меня так написано - встала и ушла, а в базе есть, а мне пох, только на клиенте ушла... Так вот по этой причине не будет такая возможность востребована программистами БД )) Вы главное не волнуйтесь. Если баба от клиента ушла, то и бог с ней. В базе то она еще осталась :-). Проблема правда в том что за соседним компьютером в Вашем же приложении баба например взяла и легла на треугольник поспать. Возникает вопрос "что на самом деле делает баба - вообще ушла (клиент1), спит (клиент2) или курит (БД)?". Клиента которому безразлично что происходит в базе, я не могу отнести к программе БД, а программиста который такие клиенты пишет - к программистам БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 14:56 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Вы главное не волнуйтесь. Если баба от клиента ушла, то и бог с ней. В базе то она еще осталась :-). Проблема правда в том что за соседним компьютером в Вашем же приложении баба например взяла и легла на треугольник поспать. Возникает вопрос "что на самом деле делает баба - вообще ушла (клиент1), спит (клиент2) или курит (БД)?". Клиента которому безразлично что происходит в базе, я не могу отнести к программе БД, а программиста который такие клиенты пишет - к программистам БД. Да что вы, никаких проблем. Баба пунктуальная, с расписанием. Расписание тоже в базе, сказать где? Фантазии у вас... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2004, 18:04 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 vybegalloЕще раз поясняю : при выборочном откате транзакций в больших системах бардак неизбежен. Оператор удалил клиента. Отчет №1 заполнил таблицу №1 итогами по клиентам. Отчет №2, используя первую таблицу, заполнил таблицы №2 и 3. И так далее. Теперь малой кровью восстановить клиента не получится - с учетом того, никто не представляет всей системы. Это можно сделать либо тщательно распутывая каждую связь, либо восстановив систему на момент непосредственно предшествующий удалению. Вопрос в том можно ли в принципе удалить клиента по логике приложения? Допустим можно. Можно ли ввести нового клиента? Разумеется. Если приложение корректно отрабатает ситуацию когда я вручную удаляю клиента, а затем вручную добавляю клиента эквивалентного удаленному, то не вижу основы для бардака. Если какие то отчеты должны соответствовать первичным данным, то они периодически перезапускаются. Если соответствие нужно в реальном времени, то отчеты запускаются по триггерам по изменению первичных данных. Если по клиенту скажем уже прошли торговые операции, то приложение с самого начала просто запретит удаление такого клиента, иначе эти операции "повиснут". То есть при выборочном откате транзакций приложения разрешается откат только тех транзакций которые не "конфликтуют" с транзакциями других приложений или со своими более поздними транзакциями. Проблема "только" в том, чтобы распознать, какие транзакции конфликтуют, а какие - нет. Как вы себе представляете такое распознавание ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 08:03 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Вы мне скажите - у вас при "откате" застарелой транзакции триггеры отрабатывать будут ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 10:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegalloПроблема "только" в том, чтобы распознать, какие транзакции конфликтуют, а какие - нет. Как вы себе представляете такое распознавание ? Действительно это проблема, но она решаема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:32 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
авторВопрос в том можно ли в принципе удалить клиента по логике приложения? Допустим можно. Можно ли ввести нового клиента? Разумеется. Если приложение корректно отрабатает ситуацию когда я вручную удаляю клиента, а затем вручную добавляю клиента эквивалентного удаленному, то не вижу основы для бардака. И что, где тут откат чего-либо? авторЕсли какие то отчеты должны соответствовать первичным данным, то они периодически перезапускаются. Т.е. если вы запустите отчет за один и тот же день. но попадете то на откат транзакции, то на "закат" :) то окажется, что один и тот же отчет за один и тот же момент содержит разные данные. И какой из ни правильный? авторЕсли соответствие нужно в реальном времени, то отчеты запускаются по триггерам по изменению первичных данных. Угу авторЕсли по клиенту скажем уже прошли торговые операции, то приложение с самого начала просто запретит удаление такого клиента, иначе эти операции "повиснут". То есть при выборочном откате транзакций приложения разрешается откат только тех транзакций которые не "конфликтуют" с транзакциями других приложений или со своими более поздними транзакциями. Товарищ, вам уже десять раз сказали: разделяйте понятие логики работы вашей системы и понятие логики работы БД с транзакциями и т.д. Нет у БД транзакций, которые конфликтуют или не конфликтуют . У нее есть просто транзакции, которым пофиг вообще, какие данные в них. Это ваша проблема. Уже скоро неделя будет, как вам это вдалбливают в голову -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:38 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
2serg99Вы мне скажите - у вас при "откате" застарелой транзакции триггеры отрабатывать будут ? Я бы сказал так: "при откате транзакции будут отменены все ее результаты включая те, что вызваны отработкой триггеров". При собственно откате не отрабатывается ничего, что противоречит этому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:39 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Если лично вам хочется, чтобы ваш легковой автомобиль мог еще и по рельсам ездить, то это не значит, что весь мир должен начать делать только такие автомобили - с железнодорожной колесной парой дополнительно Берите в руки инструмент - и вперед, сделать самому проблем нет. Если так сильно нужно. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:41 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Не понимаю, почему такое агрессивное отвержение. Этому механизму можно найти применение. Другое дело - нужно ли тратить силы на его реализацию, но это уж автору решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:00 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Отвержения механизму нет. Пожалста, делай как угодно. А вот к смыслу встроенной возможности в СУБД - есть -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:06 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:11 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
tygra авторВопрос в том можно ли в принципе удалить клиента по логике приложения? Допустим можно. Можно ли ввести нового клиента? Разумеется. Если приложение корректно отрабатает ситуацию когда я вручную удаляю клиента, а затем вручную добавляю клиента эквивалентного удаленному, то не вижу основы для бардака. И что, где тут откат чего-либо? Я полагал что здесь ясно о чем я говорю. Если в приведенном примере новый клиент появляется как откат операции "удалить клиента", то бардака не получается. tygra авторЕсли какие то отчеты должны соответствовать первичным данным, то они периодически перезапускаются. Т.е. если вы запустите отчет за один и тот же день. но попадете то на откат транзакции, то на "закат" :) то окажется, что один и тот же отчет за один и тот же момент содержит разные данные. И какой из ни правильный? Вы определитесь о чем Вы говорите - об одном и том же дне, или об одном и том же моменте. Работа с отчетами ничем не отличается от обычной ситуации когда во время отчета операторы то добавляют что нибудь в базу, то удаляют что нибудь из базы. tygra авторЕсли по клиенту скажем уже прошли торговые операции, то приложение с самого начала просто запретит удаление такого клиента, иначе эти операции "повиснут". То есть при выборочном откате транзакций приложения разрешается откат только тех транзакций которые не "конфликтуют" с транзакциями других приложений или со своими более поздними транзакциями. Товарищ, вам уже десять раз сказали: разделяйте понятие логики работы вашей системы и понятие логики работы БД с транзакциями и т.д. Нет у БД транзакций, которые конфликтуют или не конфликтуют . У нее есть просто транзакции, которым пофиг вообще, какие данные в них. Я естественно говорю не о конфликте транзакций в смысле их изоляции. Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому. Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций. tygra Это ваша проблема. Уже скоро неделя будет, как вам это вдалбливают в голову -- Tygra's -- Вы главное не волнуйтесь так сильно. Нервные клетки не восстанавливаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:14 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Существуют разные модели транзакций Подробнее, например - http://www.vsu.ru/~reb/library/devel/dbms2_95_1/18.htm Хроники (sagas) ИМХО решают поставленную задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:19 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
авторЯ полагал что здесь ясно о чем я говорю. Если в приведенном примере новый клиент появляется как откат операции "удалить клиента", то бардака не получается. Получается. Хотя-бы потому, что у клиента будет новый ID. А если на клиенте ничего не было навешено - то и откатывать нечего, добавляй нового. авторВы определитесь о чем Вы говорите - об одном и том же дне, или об одном и том же моменте. Работа с отчетами ничем не отличается от обычной ситуации когда во время отчета операторы то добавляют что нибудь в базу, то удаляют что нибудь из базы. Не важно, о чем, но уже прошедшем. И получится, что за позавчерашний день сегодня отчет будет один, а завтра другой. И оба правильные авторЯ естественно говорю не о конфликте транзакций в смысле их изоляции. Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому. Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций. Еще раз: это не конфликт транзакций, более того, это вообще никак не относится к транзакциям. Это конфликт логики вашей системы. И вы сами, своими руками, и только вы можете реализовать откаты и все, чего еще захочется. Вот когда наконец вы это поймете, то никаких вопросов к СУБД не отсанется. А пока-что я уже и не понимаю, о чем идет разговор, из пустого в порожнее переливаете авторВы главное не волнуйтесь так сильно. Нервные клетки не восстанавливаются. А я не волнуюсь - мне наоборот весело -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:21 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxserg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как? Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:23 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy foxserg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как? Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна. Она известна и совпадает в обоих базах. Но клиенты разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:27 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Получается. Хотя-бы потому, что у клиента будет новый ID. А если на клиенте ничего не было навешено - то и откатывать нечего, добавляй нового. Так что проще нажать кнопку UNDO или заново набивать целую страницу реквизитов клиента? Не важно, о чем, но уже прошедшем. И получится, что за позавчерашний день сегодня отчет будет один, а завтра другой. И оба правильные Естественно. Один правильный по состоянию на позавчерашний день, другой - на завтрашний. Если у Вас сегодня в базу оператор вручную (безо всяких откатов) ввел новые данные, то ведь завтрашний отчет у Вас будет отличаться от позавчерашнего. Он что неправильный будет? У Вас в базу вообще никаких изменений вводить нельзя? Тогда достаточно одного отчета на всю жизнь. Еще раз: это не конфликт транзакций, более того, это вообще никак не относится к транзакциям. Это конфликт логики вашей системы. И вы сами, своими руками, и только вы можете реализовать откаты и все, чего еще захочется. Вот когда наконец вы это поймете, то никаких вопросов к СУБД не отсанется. Не видел приложений БД где бы логика приложения не была связана с теми запросами, которое приложение шлет в СУБД. Не вижу так же как без поддержки со стороны СУБД "прозрачным" образом могут быть решены проблемы отмены действий пользователей работающих с одним набром данных в многопользовательских системах. Но у меня нет цели Вас переубеждать, так что можете оставться при своем мнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:43 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy fox serg99 lazy foxserg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как? Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна. Она известна и совпадает в обоих базах. Но клиенты разные. Она может и не совпадать. Достаточно того что она известна. Каждый клиент имеет в каждой базе свою последовательность выполненных транзакций. Поведение UNDO даже в одинаковых базах, будет зависеть от предыстории транзакций. Если и предыстория одинаковая, то и UNDO будет работать одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:49 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 lazy fox serg99 lazy foxserg99, вы действительно не можете представить себе две совершенно идентичные по структуре и данным базы с совершенно различной логикой блокировки откатов, зависящей от времени коммитов, причем уже неизвестно как? Представить себе я могу что угодно. Я только не понимаю почему Вы считаете, что последовательность коммитов обязательно должна быть неизвестной. Представьте себе что она известна. Она известна и совпадает в обоих базах. Но клиенты разные. Она может и не совпадать. Достаточно того что она известна. Каждый клиент имеет в каждой базе свою последовательность выполненных транзакций. Поведение UNDO даже в одинаковых базах, будет зависеть от предыстории транзакций. Если и предыстория одинаковая, то и UNDO будет работать одинаково. Я не имел ввиду пользователей ) Два клиента (прога такая) вкладывают различный смысл в одни и те же цифры. Для одного 1=пришел, а для второго 1=ушел. По расписанию. Истории расписания нет (не ведется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:55 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Мда, тяжелый случай :)) авторТак что проще нажать кнопку UNDO или заново набивать целую страницу реквизитов клиента? Нет кнопки такой и по определению быть не может. Оператор сам лох. А если он не просто клиента удалил, а пару проводок или еще чего, то его за шиворот и за дверь. авторЕстественно. Один правильный по состоянию на позавчерашний день, другой - на завтрашний. Если у Вас сегодня в базу оператор вручную (безо всяких откатов) ввел новые данные, то ведь завтрашний отчет у Вас будет отличаться от позавчерашнего. Он что неправильный будет? У Вас в базу вообще никаких изменений вводить нельзя? Тогда достаточно одного отчета на всю жизнь. В десятый раз: отчет за ту же дату, только сделан завтра и послезавтра. Вы это-то хоть можете понять? Отчет за 15 число, а делали его 16 и 17. Так понятно? авторНе видел приложений БД где бы логика приложения не была связана с теми запросами, которое приложение шлет в СУБД. А при чем тут это? Запросы при чем? Как вам объяснить то? Ну попробую в последний раз: Логика приложения - это логика приложения . А логика работы СУБД - это логика СУБД, и никак не связана с логикой приложения, никак!!! . СУБД по барабану. сколько у вас таблиц, как вы строете между ними отношения, кроликов вы учитываете или кирпичи, раз в год информацию меняете или раз в секунду. Задача СУБД - хранить данные, которые будут непротиворечивы в любой момент времени . И в ее задачи никак не входит контроль за тем, что ввел оператор, удалил он клиента и рвет волосы на жопе - это ваши проблемы, только ваши и ничьи больше ! Делайте структуру системы такой, чтобы можно было откатывать чего хотите куда хотите. авторНе вижу так же как без поддержки со стороны СУБД "прозрачным" образом могут быть решены проблемы отмены действий пользователей работающих с одним набром данных в многопользовательских системах. Руками и головой - не слыхали о таких инструментах? Или вы хотите, чтобы СУБД за вас еще и за таблицей клиентов присматривала? Чтобы проводки знала куда можно а куда нет, какие можно откатить - вместе с кучей других действий, а какие нельзя. Это в научно-фантастических романах покачто только есть, говоришь голосом: хачу информацию на такого-то, а она отвечает: а вот, пожалуйте, а ты ей: удали нафиг, а она: готово, а ты ей: верни в зад..... авторНо у меня нет цели Вас переубеждать, так что можете оставться при своем мнении. А в чем вы не хотите меня переубеждать? Я не вижу ничего такого -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 13:20 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxЯ не имел ввиду пользователей ) Два клиента (прога такая) вкладывают различный смысл в одни и те же цифры. Для одного 1=пришел, а для второго 1=ушел. По расписанию. Истории расписания нет (не ведется). Вобщем то вряд ли в БД есть такой объект как цифра. Скорее всего там есть скажем объект "поезд", у которого есть атрибут "Статус отбытия". Значение этого атрибута определяет пришел поезд или не пришел. То есть приложения должны правильно и одинаково понимать семантику модели данных (постольку поскольку они пользуются единой БД). Если одно приложение понимает семантику так, а другое - эдак, то это большая беда. При этом откаты будут работать как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 13:51 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
>Руками и головой - не слыхали о таких инструментах? в оракле мусорную карзину сделали, т.е. в течении некоторого времени из нее можно вернуть удаленые записи и таблички + можно делать запросы на какой-то момент времени, т.е. запрос вернет данные которые на данный момент уже давно изменились и двадцать раз закомитились. однако полезность таких инструментов в боевой системе маловата ... дорого слишком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 13:58 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Я говорю о конфликте в смысле логики отката. Допустим у меня есть таблица яблок с атрибутами Цвет и Вес. Я у определенного яблока поменял цвет с желтого на зеленый. Другой клиент после этого поменял вес яблока с 100г до 200г. Я вдруг вспомнил, что зря поменял цвет и задал откат последней своей транзакции. В результате Цвет яблока вернется к желтому. Теперь предположим что другой клиент после меня не Вес изменил, а так же Цвет и у того же яблока (допустим с зеленого на красный). Теперь моя попытка откатить транзакцию (сделать Цвет желтым) будет означать не только откат моих действий, но и действий другого клиента, что противоречит логике отката (я то хочу откатить только "свои" действия). Это я и называю конфликтом транзакций. А вот если это и есть описание логики отката, то я вряд ли смогу его использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:03 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Но и в обычных системах (торговля, маркетинг), скажем какая нибудь девочка взяла и поубивала в базе N-ое количество клиентов, а потом вдруг вспомнила "а что же я наделала". Или админ снес по ошибке саму таблицу. Это известно как логическая ошибка. Могу рекомендовать Вам в Оракле сделать физический бакап и включить архивные журналы повторного выполнения. Тогда Вы сможете вернуть БД к состоянию на любой момент времени. Правда, в общем случае немного попарившись - в зависимости от объема БД. Если кто-то об этом уже написал - извиняюсь: не смог прочитать всего (инет глючит и по пол часа открывает страницы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:03 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Вобщем то вряд ли в БД есть такой объект как цифра. Скорее всего там есть скажем объект "поезд", После того, как вы обломались с предложенной мной объектной моделью и предложили мне абстрагироваться от подробностей реализации, в базе есть такой объект. serg99 у которого есть атрибут "Статус отбытия". Глупости. Нет у него статуса объекта. Я же вам русским по белому - у него есть расписание, а статуса объекта нет. Читай - ТАК НАДО . serg99 Значение этого атрибута определяет пришел поезд или не пришел. То есть приложения должны правильно и одинаково понимать семантику модели данных (постольку поскольку они пользуются единой БД). У них разная семантика и они не пользуются единой БД . Вы читаете или где?? serg99 Если одно приложение понимает семантику так, а другое - эдак, то это большая беда. Два разными приложения решают две разные задачи с двумя разными БД так, что структура и данные в БД совпадают в каждый момент времени. Напрягитесь. serg99 При этом откаты будут работать как надо. А как надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:11 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
И все таки мне кажется что реальная сложность реализации такого механизма будет очень велика, а издержки СУБД возрастут фантастически. СУБД прийдется отслеживать все дерево транзакций, причем делать это всякий раз при выполнении любой транзакции! Почему? Во-первых, нам как-то прийдется разделять транзакции на те, которые можно откатить и на те, которые откатить нельзя никогда (если я что-то хочу удалить навсегда, то я должен иметь такую возможность). Во-вторых при выполнении любой транзакции нам прийдется вычислять (находить) все другие транзакции, откат которых она перекрывает (откат этих транзакций станет невозможен после выполнения текущей транзакции) и помечать их как зависящие от текущей транзакции. Если этого не делать, то откат любой закоммиченой транзакции должен сопровождаться анализом ВСЕХ имевших место после нее транзакций на предмет того, не блокируют ли они возможность отката именно этой транзакции. Сам откат закоммиченой транзакции можно рассматривать как новую транзакцию, которая (см. во-вторых). И если мы говорим об откате закоммиченной транзакции, то логичным будет и требование о возможности "анти-отката", т.е. мы откатили закоммиченную транзакцию, а потом взяли и опять "закатили". Следует учесть возможность, когда откат какой-либо одной закоммиченой транзакции делает невозможным откат другой закоммиченой транзакции (а в исходном виде они откатываемы обе), т.е. откатить можно только одну из двух (или набора) транзакций (откатить обе нельзя ни при каких условиях). И т.д. и т.п. Интересно было бы увидеть оценки производительности такой системы в сравнении с традиционными СУБД и оценки места на диске, занимаемого всей этой информацией. И вот если оценки будут таковы, что традиционные системы окажутся в десятки раз производительнее системы с возможностью отката закоммиченых транзакций, то вряд ли найдутся желающие такими монстрами пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:25 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Это в научно-фантастических романах покачто только есть, говоришь голосом: хачу информацию на такого-то, а она отвечает: а вот, пожалуйте, а ты ей: удали нафиг, а она: готово, а ты ей: верни в зад..... Мы рождены что бы сказку сделать былью :-). А в чем вы не хотите меня переубеждать? Я не вижу ничего такого А я уже и не пытаюсь переубеждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 15:50 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
xА вот если это и есть описание логики отката, то я вряд ли смогу его использовать А какая логика отката Вас бы устроила? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 15:54 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
lazy foxПосле того, как вы обломались с предложенной мной объектной моделью и предложили мне абстрагироваться от подробностей реализации, в базе есть такой объект. Я не заметил никакой объектной модели. lazy foxДва разными приложения решают две разные задачи с двумя разными БД так, что структура и данные в БД совпадают в каждый момент времени. Напрягитесь. Это не для среднего ума :-). Если хотите получить ответ по существу корректно поставьте задачу (и желательно без выражений типа "вкладывать смысл в цифры"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:13 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99 Я не заметил никакой объектной модели. Тогда вернитесь сюда и ответьте по существу. serg99Это не для среднего ума :-). Ok ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:23 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoИ все таки мне кажется что реальная сложность реализации такого механизма будет очень велика, а издержки СУБД возрастут фантастически. СУБД прийдется отслеживать все дерево транзакций, причем делать это всякий раз при выполнении любой транзакции! Почему? Во-первых, нам как-то прийдется разделять транзакции на те, которые можно откатить и на те, которые откатить нельзя никогда (если я что-то хочу удалить навсегда, то я должен иметь такую возможность). Во-вторых при выполнении любой транзакции нам прийдется вычислять (находить) все другие транзакции, откат которых она перекрывает (откат этих транзакций станет невозможен после выполнения текущей транзакции) и помечать их как зависящие от текущей транзакции. Если этого не делать, то откат любой закоммиченой транзакции должен сопровождаться анализом ВСЕХ имевших место после нее транзакций на предмет того, не блокируют ли они возможность отката именно этой транзакции. Сам откат закоммиченой транзакции можно рассматривать как новую транзакцию, которая (см. во-вторых). И если мы говорим об откате закоммиченной транзакции, то логичным будет и требование о возможности "анти-отката", т.е. мы откатили закоммиченную транзакцию, а потом взяли и опять "закатили". Следует учесть возможность, когда откат какой-либо одной закоммиченой транзакции делает невозможным откат другой закоммиченой транзакции (а в исходном виде они откатываемы обе), т.е. откатить можно только одну из двух (или набора) транзакций (откатить обе нельзя ни при каких условиях). И т.д. и т.п.. Все правильно в том числе про REDO. Кроме последнего абзаца. Встретив при откате конфликтную транзакцию можно попросить ее автора откатиться и "освободить дорогу". С тем же можно обратиться к администратору, который может откатить всех куда надо. Alexey RovdoИнтересно было бы увидеть оценки производительности такой системы в сравнении с традиционными СУБД и оценки места на диске, занимаемого всей этой информацией. И вот если оценки будут таковы, что традиционные системы окажутся в десятки раз производительнее системы с возможностью отката закоммиченых транзакций, то вряд ли найдутся желающие такими монстрами пользоваться. Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:26 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Я знаю приложения где это нужно. Тем не менее может ли быть такая функция широко востребована? В Oracle 10g есть возможность отката таблиц или даже всей БД назад (FLASHBACK TABLE|DATABASE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:24 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo serg99Мне самому интересно. Пока я не думаю что будет какой либо проигрыш по сравнению с традиционными системами. Это потому, что вы пока совсем не думали над реализацией. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? В том то и дело, что во время выполнения второй транзакции прийдется все тщательно проанализировать, т.е. найти ту транзакцию(ии), которая вписала эти опорные данные в таблицу Б и сделать в ней пометку, что теперь ее нельзя откатить без отката этой второй транзации (т.е. оператор не сможет откатить изменения в таблице Б без отката изменений, внесенных в таблицу А). И здесь мне совершенно непонятно как можно делать вывод об отсутствии проигрыша по сравнению с традиционными системами - объем вычислений увеличивается капитально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:49 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
И это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность. В общем, кричать то можно, а вот чтобы попробовать сделать, как-то смелости не хватает....... -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 17:54 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
авторИ это получается, что должен быть еще какой-то механизм, который бы задавал зависимости таблиц от таблиц при откатах/подкатах транзакций, что уже само по себе уменьшает производительность. так слишком сложно, гораздо проще возвращать субд в консистентное состояние на конкретное время назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:06 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
А так сильно грубо - зачем откатывать работу других? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:08 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Это потому, что вы пока совсем не думали над реализацией. Нет, не поэтому. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? Есть способы. Но имеет смысл говорить, когда будет что показать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:56 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Это потому, что вы пока совсем не думали над реализацией. Нет, не поэтому. Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? Есть способы. Но имеет смысл говорить, когда будет что показать. Это вам КАЖЕТСЯ, что вы знаете, что "есть способы". Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 20:05 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 20:57 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Оператор ошибся, вбивая дату для чистки. Затем десять заданий _прочитали_ эту неправильную дату и почистили сорок таблиц. Расскажите, как ваша система сможет откатить транзакцию смены даты и восстановить удаленные строки во всех таблицах. Можно без деталей, на пальцах. Зависит от того каким образом связаны задания и факт вбивания даты зачистки. Как Вы разруливаете такую ситуацию стандартными средствами? "Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 21:43 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать. До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. Да нет здесь ничего плохого. Просто есть разные уровни связности алгоритмов. При непосредственной связи, когда например задания по зачистке вызываются как триггера по изменению даты в рамках одной транзакции, откат всего происходит откатом основной транзакции. Если связь опосредованная (разные приложения), но хотя бы известно какое приложение смотрит в дату и может что то плохое делать, то откаты организуются независимо для связанных приложений (одно откатывает изменение даты, другие откатывают свои зачистки). Если вы уже поубивали всех разработчиков и вообще не понятно что и почему в базе происходит, но видно, что с такого то времени произошло что то плохое, то администратор откатывает всех к этому времени. Другими словами логика откатов является частью логики приложения и закладывается в приложение тем же программистом у которого до выхода за сарай что то в голове было, и это "что то" собственно и было воплощено в приложении. Если приложение написано без применения дополнительной функциональности БД по откатам, то остается только последний вариант, когда проблемы решаются как правило администратором на уровне всей БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 01:31 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99"Разруливаем" мы такую ситуацию просто - выводим оператора за сарай и табельным оружием... разруливаем . :-) Да...., Жестоко :-). У Вас наверное потому и документация неполная, что разработчики при жизни не успевают ее дописывать. До вас таки начало доходить, что нужны связи ? Ну так у меня для вас плохие новости - эти связи хранятся исключительно в голове разработчика. Иногда, если повезет - описаны в устаревшей и неполной документации. Да нет здесь ничего плохого. Просто есть разные уровни связности алгоритмов. При непосредственной связи, когда например задания по зачистке вызываются как триггера по изменению даты в рамках одной транзакции, откат всего происходит откатом основной транзакции. Если связь опосредованная (разные приложения), но хотя бы известно какое приложение смотрит в дату и может что то плохое делать, то откаты организуются независимо для связанных приложений (одно откатывает изменение даты, другие откатывают свои зачистки). Если вы уже поубивали всех разработчиков и вообще не понятно что и почему в базе происходит, но видно, что с такого то времени произошло что то плохое, то администратор откатывает всех к этому времени. Другими словами логика откатов является частью логики приложения и закладывается в приложение тем же программистом у которого до выхода за сарай что то в голове было, и это "что то" собственно и было воплощено в приложении. Если приложение написано без применения дополнительной функциональности БД по откатам, то остается только последний вариант, когда проблемы решаются как правило администратором на уровне всей БД. Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 02:49 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
vybegallo Как вы отследите ситуацию, когда одна транзакция меняет таблицу А, пользуясь данными из таблицы Б ? Оператор откатил изменения в таблице Б - как вы обнаружите, что надо как-то править данные в А ? IMHO, очень удачный пример. Возможность отката отдельных транзакций еще с трудом можно представить в однопользовательской среде или, в крайнем случае, когда данные, с которыми работают отдельные пользователи в принципе не пересекаются. Это в Word-е можно сделать UNDO, а в многопользовательской среде, когда чтение и изменение одних и тех же данных выполняется достаточно хаотично и непредсказуемо, отследить что откатывать, а что нет, практически(!) нереально. Не говоря уж о том, что часть информации в виде отчетов выходит наружу и может фиксироваться различными органами, и они могут неправильно понять, когда им скажут, что отчет за 1 квартал отменен, так как там были ошибки, а теперь они исправлены и вот вам другая версия. В таких случаях, за сарай могут отвести не одного человека :) Короче, любая попытка реализации обойдется чрезвычайно дорого, а польза будет не столь велика. Из разряда 1% возможностей, которые на 99% не будет использоватся на практике. P.S. Резюм: хорошо бы попасть в рай, да грехи не пустят... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 03:18 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99А какая логика отката Вас бы устроила?В Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля. Это меня не устроит даже на уровне read commited. А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц. Поэтому, если можно, приведите, пожалуйста, принципиальное описание алгоритма отката (о деталях реализации не спрашиваю - это наверно секрет фирмы :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 13:07 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист. Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 22:34 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
xВ Вашем примере один пользователь меняет одно поле записи, второй - другое. После чего первый откатывает изменение своего поля. Это меня не устроит даже на уровне read commited. А на более высоких уровнях, как это уже отмечалось другими авторами, нужно еще отслеживать блокировки других таблиц. Поэтому, если можно, приведите, пожалуйста, принципиальное описание алгоритма отката (о деталях реализации не спрашиваю - это наверно секрет фирмы :). Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 22:41 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Логика откатов выходит за пределы логики приложений, и никем никогда в приложение не закладывается. По крайней мере, я таких приложений БД не видел. И не могли видеть. Управляемые клиентом откаты теперешними базами ведь фактически не поддерживаются. Кстати, к тому времени как станет "видно, что с такого то времени произошло что то плохое", откатывать назад ВСЕ транзакции будет поздно - если это вообще возможно в условиях проектируемой системы. Если Вы проектируете системы где нет документации, неизвестно что с БД делает то или иное приложение, и где проблемы могут быть обнаружены только когда уже поздно их исправлять, то согласитесь что "поздно боржоми пить когда печень отвалилась". Здесь никакая СУБД Вам не поможет. Короче, ваша предполагаемая функциональность может и пригодится в некоей сферической системе в вакууме, с одним сферическим юзером - но программист, который попытается ее использовать, должен быть публично казнен в назидание. Ибо нефиг ! Возьмем хотя бы Оракл. В этом треде уже упоминались и механизм архивных файлов повторного исполнения, и Flash Recovery появившийся в версии 10g (http://www.mid.main.vsu.ru/docs/oracle10/server.101/b10734/rcmflash.htm), и в некоторой степени механизм Workplace. Все это хотя и непрозрачно, с определенными ограничениями, и ориентировано в основном на случаи потери данных, - но все это об откатах. Скажем Flash Recovery может использовать уже и программист. Получается Оракл работает на потребу сферического узера или это просто издержки западной демократии не приветствующей использование табельного оружия для администрирования БД? :-) Те возможности Оракла, которые вы считаете "откатами закоммиченных транзакций", правильно называть "восстановлением данных из сохраненных копий". Это есть фича полезная, но полезная именно для администратора, который понимает, что он делает, и каковы будут последствия. Ни о какой автоматической проверке целостности данных речь, естественно, не идет, и администратор несет всю ответственность за содеянное. Вы же предлагаете встраивать подобную крайне опасную возможность в программу. Типа ткнул на кнопочку -и готово. Вы сначала научите юзеров правильно приложения закрывать ! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 00:50 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
А сколько баксо-дней просят за эту лапшу на ваших ушах? Ж) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 01:01 |
|
||
|
Существуют ли СУБД с возможностью отката закоммиченных транзакций? Нужно ли это?
|
|||
|---|---|---|---|
|
#18+
serg99Все три транзакции (два изменения и один откат) изолированы как сериализуемые транзакции и все что надо отслеживается.Ну, если все, что надо отслеживается, то я за (правда приведенный пример этому противоречит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 09:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553976]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
135ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 416ms |

| 0 / 0 |
