|
|
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
Subj. + Как их реализовать в Delphi с помощью IBX например? А то у меня получается много транзакций, но параллельных, а не вложенных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 14:47 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
Попробуй стандартную для FIB+ схему: одна (длинная) читающая (write,nowait,rec_version,read_committed), и короткая пишущая - на момент добавления/изменения/удаления (быстро создал, изменил данный, уничтожил). А вложенных транзакций не бывает. (Может, помогут Savepoint's в FB 1.5?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 14:51 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
Иногда вложенные транзакции можно сэмулировать исключениями и блоком WHEN... В общем смотря зачем надо... А вобще-то всякие штуки типа точек сохранения, двухфазных транзакций и исключений есть нарушение правила АСИД для транзакции, т.е. всё это зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 14:58 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
В FB1.5 вроде есть savepointы. Точно как юзать незнаю, есть в документации поставляемой в дистрибутиве(это я так громко о текстовых файлах :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:13 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
АСИД - это четыре правила ;-) Какие именно, чем и как нарушены? А то так можно много до чего договориться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:13 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
2alex_k А ReleaseNotes.pdf - это текстовый файл или не документация? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:15 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
Ну вот читаем к примеру: авторОпределение 1. Транзакция - это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние. Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД: (А) Атомарность. Транзакция выполняется как атомарная операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется. (С) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться. (И) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди). (Д) Долговечность. Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы. Вобще конечно это бред полный, т.к. если вникнуть в эти правила, то глядишь и окажется что транзакций в природе то быть и не может Но поскольку эти определения описывают идеал, то нужно стараться к нему как можно сильнее приблизиться. По теме: сами по себе вложенные транзакции, точки сохранения и исключения противоречат определению транзакции, т.к. при использовании этих средств есть возможность подтвердить не всю транзакцию, а её часть. Также вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции. В общем мое мнение такое: если есть возможность, то лучше обойтись без вложенных транзакций чтобы себе геммороя не поиметь потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:26 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
"Вложенные транзакции" - наверное, хочешь всякие там откаты на любой уровень делать, да? Брось эти глупости. Юзай FIB+, и все у тебя будет мягкое и шелковистое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:43 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
авторПо теме: сами по себе вложенные транзакции, точки сохранения и исключения противоречат определению транзакции, т.к. при использовании этих средств есть возможность подтвердить не всю транзакцию, а её часть. Также вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции. Вложенные транзакции в том виде, в каком я их себе представляю (и в каком ты их выше описываешь) я еще нигде на практике не встречал ;-) И слава богу. Часто сейвпойнты называют вложенными транзакциями, но они никак не влияют на атомарность или изолированность транзакции и никак ей не мешают. Сейвпойнты и исключения нарушают изначальный алгоритм выполнения операций транзакции. Но они специально предназначены для поддержания целостности. Т.е. даже если ты поменял логику транзакции в процессе обработки какой-то ошибки, это еще не означает, что транзакция от этого потеряла свою целостность. Оба этих механизма работают в контексте транзакции и являются ее неотъемлемой частью. Да и не стоит здесь привлекать исключения вообще. Иначе мы придем к выводу, что деление на нуль также нарушает АСИД, так как я могу потом сделать коммит и подтвержу транзакцию частично ;-) А также нарушение первичного ключа и т.д. и т.п. автор В общем мое мнение такое: если есть возможность, то лучше обойтись без вложенных транзакций чтобы себе геммороя не поиметь потом. Абсолютно согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 15:45 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
Ну народ, вы конкретно неправы. Работал в Оракле, есть там вложенные транзакции, мощная штука. Вот допустим такая задача. Работаю с документами из делфи. Нужно провести сложную операцию, состоящую из нескольких более мелких. Эти самые более мелкие тоже составные (по нескольку операторов SQL). Если в ходе проведения мелкой операции происходит ошибка, ее нужно откатить, попросить пользователя подкорректировать задачу (или отменить), и запустить эту мелкую операцию снова (во вложенной транзакции). Таких мелких операций несколько, каждая представляет собой отдельную логическую подзадачу, которая может использоваться отдельно. Если пользователь отменяет всю задачу, сложная операция отменяется с откатом внешней транзакции. При нормальном проходе мелких операций внешняя транзакция коммитится. Вложенные транзакции АСИДу не противоречат нисколько и это удобная штука. А вот симуляция исключениями - это и есть самый гемор. Сейвпоинты мне помогли бы, но версия не позволяет, а за использование FB1.5RC8 заказчик просто повесит. dimitrТакже вложенная транзакция до своего завершения будет препятствовать завершению "выложенной" (не знаю как правильно её назвать) транзакции нарушая требование изоляции. Вложенная транзакция всегда должна завершаться первой. В Оракле - это представляет собой стек. Если ты вызываешь start transaction, и начинаешь вложенную транзакцию, то первым вызовом commit (или rollback) подтверждаешь (или откатываешь) вложенную, а вторым вызовом commit или rollback - уже внешнюю. Между прочим в доке по ибейзу 5-му (одна из pdf-ок) написано: сервер поддерживает вложенные транзакции до 5 (или 6, не помню) уровней. Конкретно в какой доке и где - не помню. Мне интересно, как это реализовать в IBX или в делфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 22:29 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
авторРаботал в Оракле, есть там вложенные транзакции, мощная штука. Вот допустим такая задача. Работаю с документами из делфи. Нужно провести сложную операцию, состоящую из нескольких более мелких. Эти самые более мелкие тоже составные (по нескольку операторов SQL). Если в ходе проведения мелкой операции происходит ошибка, ее нужно откатить, попросить пользователя подкорректировать задачу (или отменить), и запустить эту мелкую операцию снова (во вложенной транзакции). Таких мелких операций несколько, каждая представляет собой отдельную логическую подзадачу, которая может использоваться отдельно. Если пользователь отменяет всю задачу, сложная операция отменяется с откатом внешней транзакции. При нормальном проходе мелких операций внешняя транзакция коммитится. И чем семантически это отличается от тех же сейвпойнтов, которые тоже есть в Оракле? Кроме отсутствия команды commit для сейвпойнта? Или Оракл позволяет использовать различные уровни изоляции для вложенных транзакций? авторМежду прочим в доке по ибейзу 5-му (одна из pdf-ок) написано: сервер поддерживает вложенные транзакции до 5 (или 6, не помню) уровней. Конкретно в какой доке и где - не помню. Мне интересно, как это реализовать в IBX или в делфи. Дай конкретную ссылку (книга и страница), пожалуйста. IB/FB не имеет вложенных транзакций ни в каком виде, так что наверняка там имелось ввиду что-то другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 12:53 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 14:07 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
2Gold Это кому ответ? ;-) И на что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 14:16 |
|
||
|
Существуют ли в IB/FB вложенные транзакции?
|
|||
|---|---|---|---|
|
#18+
А это как в мультике: - Это мне? А за что????? - А просто так!!! Для общего развития, поскольку я так понял что ДК её только сегодня выложил и про неё ещё мало кто знает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 14:23 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32402862&tid=1579233]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 469ms |

| 0 / 0 |
