Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Вниз

транзакции   Найти похожие ветки 

 
X5   (2009-02-25 16:35) [0]

Как литературно называют транзакцию объявленную в тексте SQL запроса.


 
Медвежонок Пятачок ©   (2009-02-25 16:39) [1]

"синьорита транзакция"


 
Palladin ©   (2009-02-25 16:42) [2]

"Транзакция, объявленная в тексте SQL запроса"


 
Johnmen ©   (2009-02-25 16:44) [3]


> Как литературно называют транзакцию объявленную в тексте
> SQL запроса.

Бред.


 
Sergey13 ©   (2009-02-25 16:50) [4]

> [0] X5   (25.02.09 16:35)

Литературно никак, только по матерному. Привести пример?


 
Ega23 ©   (2009-02-25 17:22) [5]

BEGIN TRAN Tran0001;
BEGIN TRAN Tran0002;
.....
BEGIN TRAN TranFFFF;


 
clickmaker ©   (2009-02-25 18:53) [6]

"логическая единица работы, состоящая из запроса (например, к базе данных) и получения результатов его обработки, которая обеспечивает одновременный доступ к БД многих пользователей и обладает свойством атомарности, объявленная в тексте SQL запроса"


 
Sergey13 ©   (2009-02-26 08:42) [7]

> [6] clickmaker ©   (25.02.09 18:53)

> состоящая из запроса (например, к базе данных) и получения результатов его обработки
А при чем тут получение результата?

> которая обеспечивает одновременный доступ к БД многих пользователей
ИМХО она обеспечивает (должна) только целостность данных и ничего более.

> объявленная в тексте SQL запроса
В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.

Я бы сформулировал так.
Логическая единица работы, переводящая объект из одного согласованного состояния в другое согласованное состояние.


 
MsGuns ©   (2009-02-26 09:22) [8]

>Sergey13 ©   (26.02.09 08:42) [7]
>А при чем тут получение результата?

Притом, что итогом выполнения (невыполнения) ЛЮБОЙ транзакции является получение результата, который и "поставляется" "заказчику" оной

>ИМХО она обеспечивает (должна) только целостность данных и ничего более.

Отнюдь. С точки зрения сервера, собственно оперирующего транзакцией, никакой целостности транзакция не  обеспечивает. С точки зрения программиста, салгоритмизировавшего логику транзакции, - да. Все эти определения транзакции, построенные на фразе типа "из одного целостного состояния в другое" не более чем силлогизм, по мнению авторов помогающий понять непонимающим.

>В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.

Можно. Не будет. Правда, насколько знаю, не для всех серверов.

>Я бы сформулировал так.
>Логическая единица работы, переводящая объект из одного согласованного состояния в другое >согласованное состояние.

Еще одна попытка дать определение слову "колесо" ? Если так, то имеется одна существенная "пробоина", а именно - "ПЫТАЮЩАЯСЯ" перевести. Как говорят в Одессе, ощутите разницы


 
Sergey13 ©   (2009-02-26 09:43) [9]

> [8] MsGuns ©   (26.02.09 09:22)
> Притом, что итогом выполнения (невыполнения) ЛЮБОЙ транзакции
> является получение результата, который и "поставляется"
> "заказчику" оной

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

> С точки зрения сервера
Ты с ним говорил на эту тему? 8-)
Сервер сам по себе вообще ничего не обеспечивает кроме хранения чего-то и предоставления доступа к этому чему-то.

> Если так, то имеется одна существенная "пробоина", а именно
> - "ПЫТАЮЩАЯСЯ" перевести. Как говорят в Одессе, ощутите
> разницы

Это словоблудие. Скажи хоть "делающая вид, что пытается перевести", результат от этого не изменится.


 
MsGuns ©   (2009-02-26 10:15) [10]

>Это словоблудие. Скажи хоть "делающая вид, что пытается перевести", результат от этого не >изменится.

Вот эта фраза про "деление вида" и есть словоблдудие. ОТКАТ транзакции есть не менее концептуальная вещь в КС, чем сама транзакция. Это и подразумевалось в той фразе, которую ты обозвал нехорошим словом :)


 
KSergey ©   (2009-02-26 10:19) [11]

> Sergey13 ©   (26.02.09 09:43) [9]
> Я, получив деньги из банкомата, могу и не получать чек,

Безусловно, однако банкомат свою транзакцию отработает честно и чек выдаст. А принимать результаты или нет - это уже не важно. Деньги тоже можно не брать, к стати.
Как и результат выполнения select внутри транзакции. Но сервер эти результаты все равно выкатит.

>> С точки зрения сервера
> Сервер сам по себе вообще ничего не обеспечивает кроме хранения чего-то и предоставления доступа к этому чему-то.

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


 
Sergey13 ©   (2009-02-26 10:37) [12]

> [10] MsGuns ©   (26.02.09 10:15)
> ОТКАТ транзакции есть не менее концептуальная вещь в КС, чем сама транзакция

ОТКАТ вообще вещь концептуальная. И не только в КС. 8-)
Вот у водопроводного крана какая функция важнее - открывать воду или закрывать? 8-)


 
Johnmen ©   (2009-02-26 10:39) [13]


> MsGuns ©   (26.02.09 09:22) [8]
> > В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.
> Можно. Не будет. Правда, насколько знаю, не для всех серверов.

Пример пожалуйста. Как это в ТЕКСТЕ ЗАПРОСА.


 
Медвежонок Пятачок ©   (2009-02-26 10:42) [14]

Безусловно, однако банкомат свою транзакцию отработает честно и чек выдаст. А принимать результаты или нет - это уже не важно. Деньги тоже можно не брать, к стати.

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


 
Johnmen ©   (2009-02-26 10:43) [15]


>  Все эти определения транзакции, построенные на фразе типа
> "из одного целостного состояния в другое" не более чем силлогизм

Это "фраза" одна из необходимого и достаточного определения транзакции.
Причем тут силлогизм?


 
Sergey13 ©   (2009-02-26 10:47) [16]

> [11] KSergey ©   (26.02.09 10:19)
> Но сервер эти результаты все равно выкатит.

Это его личное дело. Я не против.
Я же не говорю, что "получение результатов его обработки" никому не нужно и не имеет никакого значения, я говорю, что ИМХО это действие не входит в рамки самой транзакции. Это анализ этой, уже произведенной, транзакции.

> [11] KSergey ©   (26.02.09 10:19)
> либо вся откачена.

А сервер это ВСЕ сам определяет? Откуда он про это ВСЕ знает? Он посто честно выполняет последовательность команд. И только программист указывает ему, что вот эту последовательность команд надо или выполнить ВСЮ, или откатить ВСЮ.


 
KSergey ©   (2009-02-26 12:42) [17]

> Sergey13 ©   (26.02.09 10:47) [16]
> только программист указывает ему, что вот эту последовательность  команд надо или выполнить ВСЮ, или откатить ВСЮ.

нифига подобного.
программист (т.е. клиентская сторона для сервера) может только слезно просить и/или умолять. А выполнить или нет команду сервер решает сам, по ситуации.


 
KSergey ©   (2009-02-26 12:47) [18]

> Медвежонок Пятачок ©   (26.02.09 10:42) [14]
> Если не возьмешь, транзакция списания с твоего счета все равно не откатится. Просто будет еще одна транзакция в которой
> бабки будут переведены на счет кассеты режекта

Разумеется. Т.к. банкомат выполнил все операции в полном объеме. Вот если бы деньги застряли внутри банкомата - тогда (по дее) должнен бы откатить (если не откатывает и почему - здесь не важно; не будем об этом).
А так - он выполнил все команды, полностью. А то, что кто-то не воспользовался результатом - его не волнует. Как и SQL-сервер.


 
KSergey ©   (2009-02-26 12:52) [19]

> Johnmen ©   (26.02.09 10:43) [15]
> > "из одного целостного состояния в другое" не более чем силлогизм
>
> Это "фраза" одна из необходимого и достаточного определения  транзакции.

Транзакции вообще - наверное да.
Транзакции в смысле для SQL-сервера - не думаю, оно какое-то сильно "клиентское" это определение.
Для сервера не важно целостное состояние БД или нет с точки зрения банковского маклера....

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

как всегда спор о терминах, короче.


 
Anatoly Podgoretsky ©   (2009-02-26 14:52) [20]

> Sergey13  (26.02.2009 8:42:07)  [7]

Можно просто перевести слово.2 - лишь бы не работать.


 
Anatoly Podgoretsky ©   (2009-02-26 14:52) [21]

> Sergey13  (26.02.2009 10:37:12)  [12]

Целостное действие, имеющее начало (открыть) и конец (закрыть).
Это неделимо


 
Sergey13 ©   (2009-02-26 15:28) [22]

> [17] KSergey ©   (26.02.09 12:42)
> программист (т.е. клиентская сторона для сервера) может только слезно просить и/или умолять.

Ну не знаю. Видимо у нас разный опыт. Я обычно просто посылаю команды. 8-)

> [19] KSergey ©   (26.02.09 12:52)
> Для сервера не важно целостное состояние БД или нет с точки зрения банковского маклера....
Совершенно правильно. Именно поэтому точку зрения банковского маклера программист и обязан донести до сервера в виде последовательности команд, обрамленных транзакцией.

> тогда наверное да, применять к такой транзакции термин "целостность" имеет смысл...
Т.е. списание денег со счета и НЕзачисление их на другой при корректном индексировании списаний - это нормальная транзакция не нарушающая целостность данных?


 
MsGuns ©   (2009-02-26 15:32) [23]

>Johnmen ©   (26.02.09 10:39) [13]
>Пример пожалуйста. Как это в ТЕКСТЕ ЗАПРОСА.

TSQL:
 
BEGIN TRAN
UPDATE...
DELETE ...
IF ...
  COMMIT TRAN
ELSE
 ROLLBACK TRAN


>Anatoly Podgoretsky ©   (26.02.09 14:52) [21]
>Целостное действие, имеющее начало (открыть) и конец (закрыть).
>Это неделимо

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

А вообще нужно, конечно, определиться с терминологией. Джонмэн вон, вероятно, под запросом имел в виду простейший запрос на выборку или на изменение в единственной таблице базы
И прикалывается :)


 
Anatoly Podgoretsky ©   (2009-02-26 15:42) [24]

> MsGuns  (26.02.2009 15:32:23)  [23]

Парадокс не поддерживает транзакций, там это видимость.
Это провокация говорить об транзакциях в контексте Парадокса.


 
MsGuns ©   (2009-02-26 15:44) [25]

>Sergey13 ©   (26.02.09 15:28) [22]
>Ну не знаю. Видимо у нас разный опыт. Я обычно просто посылаю команды. 8-)

И по барабану выполнятся они или нет ?

>Именно поэтому точку зрения банковского маклера программист и обязан донести до сервера в >виде последовательности команд, обрамленных транзакцией.

Транзакция не рамка для "обрамления", а средство для ЯВНОГО указания серверу что вот с этого момента все изменения "запоминать" для того чтобы по команде либо зафиксировать их в БД (подтвердить), изменив тем  самым ХРАНИМУЮ в БД информацию, либо отменить (откатить), вернув ХРАНИМУЮ в БД информацию в то сосотяние, которое она имела ДО запуска транзакции.

Что касается "рычагов" для транзакций. Существуют механизмы автоматического транзакционирования, например триггеры, которые ВСЕГДА работают независимо от того, явно ли был "завернут" в транзакцию соотв-й запрос (скрипт, хранимка и т.д.)
Однако также имеется механизм явного управления  транзакцией "извне", т.е. когда серверу явно указывается когда ПАКЕТ начинается и когда заканчивается. Такое управление вполне можно реализовать на клиенте в случаях, когда по каким-то причинам алгоритмы, производящие в БД изменения, не были прописаны в бизнес-логику сервера, но тем не менее должны быть соблюдены.


 
Sergey13 ©   (2009-02-26 16:13) [26]

> [25] MsGuns ©   (26.02.09 15:44)
> И по барабану выполнятся они или нет ?

На практике нет конечно, не по барабану. Но вполне могу представить систему, где важно просто пульнуть команду. Какой нибудь терминал или вроде того.

> Транзакция не рамка для "обрамления", а средство для ЯВНОГО указания серверу
Да хоть горшком назови. 8-)

> Существуют механизмы автоматического транзакционирования
Не понял этого твоего термина. Т.е. я догадываюсь что тригер работает в контексте текущей транзакции, но вот автоматизация то тут при чем - не понял.


 
KSergey ©   (2009-02-26 16:49) [27]

> Sergey13 ©   (26.02.09 16:13) [26]
> > Существуют механизмы автоматического транзакционирования
> Не понял этого твоего термина.

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


 
Sergey13 ©   (2009-02-26 16:57) [28]

> [27] KSergey ©   (26.02.09 16:49)

Гугл на "автоматическое транзакционирование" выдал только 3 ссылки, к БД как бы мало относящихся. В какой книжке прочитать посоветуешь?


 
KSergey ©   (2009-02-26 17:04) [29]

я читал в книжке для подготовки к экзамену по MS SQL какой-то версии, издательства MS Press, красненькие такие :)


 
Johnmen ©   (2009-02-26 17:19) [30]


> MsGuns ©   (26.02.09 15:32) [23]
> >Johnmen ©   (26.02.09 10:39) [13] >Пример пожалуйста. Как
> это в ТЕКСТЕ ЗАПРОСА. TSQL:   BEGIN TRAN UPDATE... DELETE
> ... IF ...   COMMIT TRAN ELSE  ROLLBACK TRAN
> ..........................
> А вообще нужно, конечно, определиться с терминологией. Джонмэн
> вон, вероятно, под запросом имел в виду простейший запрос
> на выборку или на изменение в единственной таблице базы
> И прикалывается :)

Не надо ни с чем определяться. Всё уже определено в определениях.
ЗЫ
И это не прикол :)

> KSergey ©   (26.02.09 12:52) [19]
> если под транзакцией понимать

Под транзакцией, да и под чем угодно, понимается то, что определено в определении. Без всяких "если".
ЗЫ
Если под отрезком прямой линии понимать такой кусочек окружности...


 
Petr V. Abramov ©   (2009-02-26 17:19) [31]


> KSergey ©   (26.02.09 17:04) [29]

там и не такое напишут, вернее, напереводят.


 
KSergey ©   (2009-02-26 17:29) [32]

> Petr V. Abramov ©   (26.02.09 17:19) [31]
> там и не такое напишут, вернее, напереводят.

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


 
KSergey ©   (2009-02-26 17:32) [33]

> Johnmen ©   (26.02.09 17:19) [30]
> Под транзакцией, да и под чем угодно, понимается то, что определено в определении

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


 
Petr V. Abramov ©   (2009-02-26 17:33) [34]


> KSergey ©   (26.02.09 17:29) [32]
> Или есть возражения?

ничего не могу сказать, как и факте Ктулху, null :)
может и есть, но термин такой я в первый раз слышу.
может, не авто, а автономные?


 
KSergey ©   (2009-02-26 17:38) [35]

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

вот я о чем, про термин сказать точнее не берусь.


 
MsGuns ©   (2009-02-26 17:38) [36]

>Sergey13 ©   (26.02.09 16:57) [28]
>Гугл на "автоматическое транзакционирование" выдал только 3 ссылки, к БД как бы мало >относящихся. В какой книжке прочитать посоветуешь?

Блин, Серый, вот уж не думал что тебе надо объяснять прописные истины или ты прикалываешься ?

Такого термина, возможно, и не существует ибо это УСЛОВНЫЙ термин, придуманный вот прям мною и прям здеся :) Но смысл у него следующий:

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

Бизнес-логика НЕ ЗАВИСИТ от клиента и задает ПОСТОЯННЫЕ правила поведения сервера при внесении изменений в таблицы БД или метаданные сервера - их НЕЛЬЗЯ ИЗМЕНИТЬ - можно только применять или нет. К типичным примерам можно отнести механизмы триггеров, контроля ссылочной целостности, генераторы (последовательности), каскадные удаления и т.д. Контроль транзакций, в контексте которых такие алгогритмы выполняются, НЕЛЬЗЯ осуществлять извне (с клиента). Именно поэтому я и обозвал их АВТОМАТИЧЕСКИМИ.

Задаваемые извне алгоритмы серверу неизвестны, точнее неизвестно ЧТО СЛЕДУЕТ СЧИТАТЬ ТРАНЗАКЦИЕЙ. Как пример, каскадное удаление в таблице, где оно не "заложено" на сервере - клиент самостоятельно должен сформировать, передать серверу и проконтролировать результаты. И именно клиент в данном случае решает следует ли подтвердить изменения или же вернуть все или часть "на место". Следовательно, такие транзакции нельзя отнести к автоматическим.

На деле, конечно, чаще всего встречается смесь механизмов: чем-то управляет клиент, чем-то сам сервер, но практически все сервера оставляют право последнего слова за клиентом. Т.е. можно сказать что подтверждение или откат "автоматических" изменений зависит от "решения" извне.
Другими словами, если есть некий алгоритм изменения в БД, в рамках которого сервер что-то меняет   АВТОМАТИЧЕСКИ (без указания или санкции клиента), то эти изменения могут быть откачены если будет откачена заданная явно клиентом транзакция. Причем этот откат автоматических изменений также будет выполнен автоматически.

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


 
MsGuns ©   (2009-02-26 17:43) [37]

>Johnmen ©   (26.02.09 17:19) [30]
>Не надо ни с чем определяться. Всё уже определено в определениях.
>ЗЫ

Точна ? таки ВСЁ ?

>Под транзакцией, да и под чем угодно, понимается то, что определено в определении. Без всяких >"если".

Определение в студию ! Я к примеру их читал десятки. И все правильные и неправильные одновременно.

>Если под отрезком прямой линии понимать такой кусочек окружности...

Вместо четкого и ясного ответа сделать вумное лицо и ченить эдакое многозначительное загнуть все горазды :)


 
Johnmen ©   (2009-02-26 17:46) [38]


> KSergey ©   (26.02.09 17:32) [33]

Твой этот пост можно расценить, как дуркование. Типа обсудить на форуме овощеводов, как сподручнее дать по репе лучшему другу...


 
Petr V. Abramov ©   (2009-02-26 17:50) [39]


> Johnmen ©   (26.02.09 17:46) [38]

ну нельзя же так смешить в рабочее время :)))


 
Johnmen ©   (2009-02-26 17:51) [40]


> MsGuns ©   (26.02.09 17:43) [37]
> Точна ?

Точняк.

> таки ВСЁ ?

таки да.

> И все правильные и неправильные одновременно.

Это ты как определил? Руководствуясь пролетарским самосознанием, похоже...:)

> Вместо четкого и ясного ответа сделать вумное лицо и ченить
> эдакое многозначительное загнуть все горазды :)

Идиоматические обороты и аллегорические выражения не всем доступны.



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.007 c
2-1236696921
Mishechka
2009-03-10 17:55
2009.05.03
Drag & Drop в DBGrid


2-1237488796
Yuriy
2009-03-19 21:53
2009.05.03
Рамочка TsMonthCalendar (AlphaControls)


15-1235821749
TInt
2009-02-28 14:49
2009.05.03
Чем отличается OnClose от OnDestroy ?


3-1220360791
Медвежонок Пятачок
2008-09-02 17:06
2009.05.03
Трункануть дату/время в дату на ноль часов ноль минут


2-1237986356
Neket
2009-03-25 16:05
2009.05.03
Проблема при INSERT-е в Базу Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский