- •Введение.
- •Лекция1.Введениевклиент-серверныеСубд.
- •InterbaseSqlServer.Общиесведения.
- •Платформы
- •Типыприложений
- •ФайлыбазыданныхInterBase
- •Лекция3.Триггерыихранимыепроцедуры
- •Хранимыепроцедуры(StoredProcedures)
- •Терминаторы
- •Заголовок
- •Телопроцедуры
- •Блоккодапроцедуры
- •Операторприсваивания
- •УсловныйоператорIf…then…else
- •ОператорSelect
- •ЦиклForselecTиSuspend
- •ЦиклWhile…do
- •ОператорыInsert,update,delete
- •ОператорExecuteprocedure
- •Исключения
- •СобытияиоператорPost_event
- •Измененияиудаленияхранимыхпроцедур
- •Примерысозданияивызовахранимыхпроцедур
- •Генераторы
- •Увеличениешагагенератора
- •Триггеры
- •ПеременныеNeWиOld
- •Реализацияавтоинкрементныхключевыхполей
- •Лекция4.Транзакции.Механизмтранзакций
- •Атомарность(Atomicity)
- •Согласованность(Consistency)
- •Изолированность(Isolation)
- •Устойчивость(Durability)
- •Неявныйиявныйстарттранзакций
- •Кактранзакцияработает
- •Уровниизолированноститранзакций
- •Параметрытранзакций
- •Компонентыдоступакданнымивизуальныекомпоненты МеханизмыдоступакБд
- •ПроблемырусскихбукввInterBase
- •Лекция5. Основы языка php. Функции php для работы с субд ИсторияPhp
- •ВозможностиPhp
- •Основнойсинтаксис
- •Разделениеинструкций
- •Комментарии
- •Переменные,константыиоператоры
- •Переменные
- •Константы
- •Операторы
- •Типыданных
- •Типboolean(булевилилогическийтип)
- •Типinteger(целые)
- •Типfloat(числасплавающейточкой)
- •Типstring(строки)
- •Одинарныекавычки
- •Двойныекавычки
- •Типarray(массив)
- •Определениеприпомощиarray()
- •Определениеспомощьюсинтаксисаквадратныхскобок
- •Типobject(объекты)
- •Типresource(ресурсы)
- •Решениезадачи
- •Построениеинтерфейсадлядобавленияинформации
- •Установкасоединения
- •Выборбазыданных
- •Получениеспискаполейтаблицы
- •Отображениеспискаполейвhtml-форму
- •Записьданныхвбазуданных
- •Отображениеданных,хранящихсявMySql
- •Заключение
Лекция4.Транзакции.Механизмтранзакций
Мыупоминали,чтотранзакции-этопакетзапросов,которыйпоследовательнопроизводитизмененияБДилибопринимается,есливсеизменениязаписиподтверждены,либоотвергается,еслихотьодинзапросзавершилсянеуспешно.ЗапросымогутсостоятьизоператоровSELECT/INSERT/UPDATE/DELETE,причемвконтекстеоднойтранзакцииможетбытькакодинтакойзапрос,такимножествозапросов.Однакопонятие"транзакция"гораздоглубжеэтогокороткогоопределения.
Транзакциизапускаютсянасторонесервера,причемстартуютонитолькопоприказуклиентскогоприложения.Завершаютработуонитакжепоприказуклиентскогоприложения,причемприуспешномзавершениитранзакцияподтверждается,апринеудаче-отвергается.Втриггерахилипроцедурахвызватьстарттранзакцииневозможно.
Транзакция,посути,этомеханизм,которыйпозволяетсовершатьразличныедействиянадбазойданных,какединыйлогическийблок,икоторыйпереводитбазуданныхизодногоцелостногосостояниявдругое.Илинепереводит,еслитранзакциябылаотвергнута.
Пояснимэтусутьнаклассическомпримерепереводаденегвбанкесодногосчетанадругой.
Допустим,нашаБДработаетбезтранзакций,инамнужнопроизвестиупомянутыйперевод.Тутмыможемпоступитьдвумяразнымиспособами:
Вначалеснимаемденьгисодногосчета,затемдобавляемихкдругомусчету.
Вначаледобавляемденьгикдругомусчету,затемснимаемихспервогосчета.
Теперьпредположим,чтовсерединеэтойоперациипроизошелкакой-тосбой:отключилсясерверБД,например.Впервомслучаеденьгибудутпотеряны-ониушлисодногосчета,нонедошлидодругого.Вовторомслучаеденьги"размножатся"-появятсянавторомсчету,ноприэтомостанутсяинапервом.Ивтом,ивдругомслучаепроизойдетнарушениецелостностиБД-данныестанутнедостоверны.
ОднаковсеSQL-серверыбазданныхработаютсприменениемтранзакций.Ещеговорят,чтовсеизменениябазыданныхпроисходятвконтекстеоднойилинесколькихтранзакций.InterBaseнеисключение,болеетого,InterBaseпредоставляетгораздоболеегибкиеинструментыдляуправлениятранзакциями,чеммногиедругиеSQL-серверы.Еслипроизошелкакойтосбойприпереводеденег,тотранзакциянеполучилаподтверждения,абазаданныхосталасьвпрежнемсостоянии-целостностьидостоверностьБДненарушились.
Более20летназадисследователиТеоХендериАндреасРютеропубликовалиобзор,вкоторомописывалипринципыподдержанияцелостностиБДвмного-клиентскойсреде.ЭтипринципыпринятоназыватьACID(Atomicity,Consistency,Isolation,Durability-Атомарность,Согласованность,ИзоляцияиУстойчивость).Всетранзакциидействуютпоэтимпринципам.
Атомарность(Atomicity)
Атомарностьподразумевает,чтотранзакцияявляетсяединицейработысбазойданных.ВнутритранзакцииможетпроисходитьмножествомодификацийБД,однакотранзакциядействуетпопринципу"всеилиничего".Когдатранзакцияподтверждается(Commit),топодтверждаютсявсеизмененияданных,сделанныевееконтексте.Когдаонаотвергается(откатывается,Rollback),тоотвергаютсяивсеизменения.Вслучаевозникновениясбоя,система,восстанавливаясь,ликвидируетпоследствиятранзакций,неуспевшихзавершиться.
Согласованность(Consistency)
Подсогласованностьюпонимается,чтоцелостностьбазыданныхненарушится,несмотрянато,былалиподтвержденатранзакция,илиотвергнута.Врезультатевыполнениятранзакциибазаданныхпереходитизодногоцелостногоисогласованногосостояниявдругое.Вслучаееслитранзакцияотвергнута,измененийБДнепроисходит.
НасторонесерверазасогласованностьотвечаютограниченияCHECK,ограниченияссылочнойцелостностиитриггеры.Программист,темнеменее,должентщательноспроектироватьмеханизмыбизнес-логики.