C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Транзакции, целесообразность применения
Diamant
Отправлено: 20.06.2006, 09:15


Ученик-кочегар

Группа: Участник
Сообщений: 6



как использовать и зачем — знаю, догадываюсь...

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

Общие книги по аля-SQL-БД не дают подобной информации.

Спасиб

Отредактировано Diamant — 20/06/2006, 09:18
olegenty
Отправлено: 20.06.2006, 09:17


Ветеран

Группа: Модератор
Сообщений: 2412



http://sql.ru
Diamant
  Отправлено: 20.06.2006, 09:24


Ученик-кочегар

Группа: Участник
Сообщений: 6



в статьях, такого нет...

толкаться в форуме? да там много местных лиц, так что разницы нет biggrin.gif
olegenty
Отправлено: 20.06.2006, 09:38


Ветеран

Группа: Модератор
Сообщений: 2412



классический пример применения транзакции — банковский перевод денег со счёта на счёт.

без транзакции есть варианты.

вариант1.
деньги списались со счёта 1 и не зачислились на счёт 2 (произошла ошибка). в результате клиент остался без денег.

вариант2.
деньги зачмслились на счёт 2 но не списались со счёта 1 (произошла ошибка). в результате клиент счастлив, зато банк в пролёте.

вывод: действие списания и зачисления должны обязательно выполнять парой, при этом, если при любом из них происходит ошибка, то должны быть отменены ОБА.

вот это и обеспечивает транзакция, смысл которой — логическое объединение действий, которые либо ВСЕ выполняются безошибочно и ПОДТВЕРЖДАЮТСЯ, либо ВСЕ ОТМЕНЯЮТСЯ.
Diamant
Отправлено: 20.06.2006, 09:45


Ученик-кочегар

Группа: Участник
Сообщений: 6



значит, смысл, есть в том, чтобы возложить ответственность за принятие/непринятие решения о выполненных операциях на механизмы БД? Тоже самое можно сделать самому и вручную на клиентском ПО, последнее ИМХО достовернее, но медленнее.

Где золотая середина?

тут, как мне кажется biggrin.gif, всплывает вопрос о удаленности базы данных от клиента и нагрузке на базу...

Отредактировано Diamant — 20/06/2006, 09:48
Diamant
Отправлено: 20.06.2006, 09:58


Ученик-кочегар

Группа: Участник
Сообщений: 6



кажется вникаю...

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

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

плюс похожее на ту же тему...

транзакция пройдет в БД целиком и таких проблем не будет?

ОНО?
olegenty
Отправлено: 20.06.2006, 10:07


Ветеран

Группа: Модератор
Сообщений: 2412



ну примерно оно. короче, псевдо-транзакции с клиента — это неверное решение. суть транзакции, помимо прочего, перевод БД из одного ЦЕЛОСТНОГО, НЕПРТИВОРЕЧИВОГО состояния в другое ЦЕЛОСТНОЕ, НЕПРОТИВОРЕЧИВОЕ.

а то, что "залочили", "разлочили" — это зависит от конкретной СУБД. например, блокировочники будут лочить, версионники — порождать новую ветку версий и т.д... это вопросы внутренней реализации конкретной СУБД.

самое главное — целостность БД должна обеспечиваться на серверной стороне, а не на клиентской.
Diamant
Отправлено: 20.06.2006, 10:20


Ученик-кочегар

Группа: Участник
Сообщений: 6



QUOTE
это вопросы внутренней реализации конкретной СУБД.


а умного фака по основным видам не видели?
интересуют MySQL, FireBird (она, вроде, порождение от MySQL), PostgreSQL, Access.

Обычно, темы по реализации, а равно сравнение лучше/хуже, сваливаются на размахивание 5 конечностью, каждый хвалит, то, что больше знает...

Механизмы реализации производители описывают? Иль это тайна?
olegenty
Отправлено: 20.06.2006, 10:29


Ветеран

Группа: Модератор
Сообщений: 2412



Firebird НЕ порождение MySQL, всё начиналось с Groton Database. Потом Interbase, и, наконец, Firebird.

на FAQ я тебя уже отсылал: http://sql.ru
Valdemar
Отправлено: 20.06.2006, 16:51


Мастер участка

Группа: Участник
Сообщений: 433



По MySQL есть документация на русском языке http://www.mysql.ru. Там есть и про транзакции.
По поводу транзакций в Interbase/Firebird можно почитать в книге "Мир Interbase". Если поискать, то можно найти ее в электронном виде. Еще есть хороший сайт http://www.ibase.ru
Diamant
Отправлено: 21.06.2006, 07:53


Ученик-кочегар

Группа: Участник
Сообщений: 6



Valdemar
ОООУ!!!! за майскуловский сайт отдельное спасибо, я его проглядел! iBase — тоже респект!

Вернуться в Работа с базами данных в C++Builder