Лекции по "Систе́ма управле́ния ба́зами да́нных "

Автор работы: Пользователь скрыл имя, 21 Января 2015 в 12:18, курс лекций

Описание работы

Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
Основные функции СУБД:
управление данными во внешней памяти (на дисках);
управление данными в оперативной памяти;

Файлы: 1 файл

Lektsii.docx

— 557.22 Кб (Скачать файл)

ВInterBaseприсутствует  механизм  удаления  старых  версий,  который  запускается  новымитранзакциями.  Новаятранзакция,  запрашивая  запись,  считывает  все  версии  этой  записи.  При  этом  делается  проверка  на  то,  была  литранзакция,  сделавшая  эту  версию,  отменена  (RollBack)  или  подтверждена  (Commit).  Еслитранзакциябыла  отменена,  значит,  эта  версия  -  мусор,  который  следует  удалить.  Если  же  имеется  несколько  версий,  сделанных  подтвержденнымитранзакциями,  то  актуальной  считается  версия  с  наибольшим  идентификаторомтранзакций.  Остальные  версии  считаются  устаревшими  и  также  подлежат  удалению.

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

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

  • Активная  транзакция-  транзакция,  которая  стартовала,  но  еще  не  завершена.
  • Заинтересованная  транзакция-  это  транзакция,  конкурирующая  с  текущей  транзакцией.
  • Старейшая  активная  транзакция-  это  такая  активная  транзакция,  которая  стартовала  раньше  других.  Или  иначе,  это  активная  транзакция  с  наименьшим  идентификатором.
  • Старейшая  заинтересованная  транзакция-  это  такая  заинтересованнаятранзакция,  которая  стартовала  раньше  других.  Или  иначе,  это  заинтересованнаятранзакцияс  наименьшим  идентификатором.

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

Уровни  изолированности  транзакций

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

InterBase  имеет  три  уровня  изолированности:

READ  COMMITTED-  Читать  подтвержденные  данные.  Этот  уровень  изоляции  позволяеттранзакциивидеть  изменения,  сделанные  другими,транзакциями,  если  эти  изменения  были  подтверждены.  К  примеру,  стартовалитранзакцииТ1  и  Т2.  Обе  они  изменили  запись.  Однако  Т1  не  увидит  изменений,  сделанных  Т2,  пока  та  не  подтвердит  сделанных  ей  изменений  (поCommit).  Этот  уровень  изоляции  считается  самым  низким,  открытым,  позволяятранзакциивидеть  "самые  свежие"  данные.

SNAPSHOT-  Моментальный  снимок  данных.  Это  средний  уровень  изолированности.  Он  позволяеттранзакциивидеть  только  те  данные,  которые  существовали  в  момент  стартатранзакции.  Если  другие  заинтересованныетранзакцииизменили  запись  и  подтвердили  изменения,  тоSNAPSHOT-транзакциявсе  равно  не  увидит  этих  изменений.  Однако  она  не  блокирует  данные,  с  которыми  работает.

SNAPSHOT  TABLE  STABILITY-  еще  более  закрытый  уровень  изоляции.Транзакциитакого  уровня  не  только  делают  снимок  данных,  они  также  блокируют  на  запись  те  данные,  с  которыми  работают.  Пока  такаятранзакцияне  подтверждена,  остальныетранзакциигарантированно  не  смогут  изменить  эти  данные.  Кроме  того,транзакцияSNAPSHOT  TABLE  STABILITYпросто  не  сможет  получить  доступ  к  таблице,  если  в  настоящий  момент  другаятранзакцияизменяет  в  ней  данные.

Параметры  транзакций

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

Таблица  24.1.  Возможные  параметры  транзакций

Параметр

Описание

Read

Разрешается  чтение  данных.

Write

Разрешается  запись  данных.

Wait

При  возникновении  конфликта  с  другойтранзакцией,  текущаятранзакцияожидает  определенное  время  (по  умолчанию,  10  сек.),  прежде  чем  попытается  решить  этот  конфликт.

NoWait

При  возникновении  конфликта  с  другойтранзакциейсразу  генерируется  ошибка.

Read_committed  Rec_Version

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

Read_committed  No_Rec_Vesion

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

Concurrency

Создает  уровень  изоляцииSNAPSHOT.

Consistency

Создает  уровень  изоляцииSNAPSHOT  TABLE  STABILITY


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

Read

Write

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

Еслитранзакцияиспользуется  только  для  чтения,  например,  для  вывода  данных  в  сетку  запросомSELECT,  то  она  должна  иметь  параметры,  позволяющие  только  читать  данные,  что  значительно  ускорит  работутранзакции.  Причем  данные  должны  быть  самыми  "свежими",  даже  из  неподтвержденныхтранзакций.  И,  кроме  того,транзакцияне  должна  ожидать  разрешения  возможного  конфликта.  Набор  параметров  тут  может  быть  следующим:

Read

Read_Committed

Rec_Version

NoWait

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

Read

Concurrency

NoWait

И,  наконец,  еслитранзакцияпредназначена  для  изменения  данных  в  БД,  то  ей  лучше  задать  более  жесткие  параметры,  например:

Write

Concurrency

NoWait

 

 

Лекция5-6.Описаниеинтерфейсасреды(Delphi,C++Builder,FoxPro)иеекомпонентовдляработысклиент-сервернойБД.

Компонентыдоступакданнымивизуальныекомпоненты

 

МеханизмыдоступакБД

VCL-библиотекаклассовсредыпроектированияDelphiпредоставляетрядклассов,позволяющихбыстроиэффективноразрабатыватьразличныеприложениябазданных.

Этиклассыпредставленыследующимигруппами:

  • компонентыдлядоступакданным,реализующие:
    • доступчерезмашинубазданныхBDE(BorlandDatabaseEngine),предоставляющуюдоступчерезODBC-драйверыиличерезвнутренниедрайверымашиныбазданныхBDE(компонентыстраницыBDE-палитрыинструментов);
    • доступчерезADO-объекты(ActiveXDataObjects),восновекотороголежитприменениетехнологииOLEDB(компонентыстраницыADO);
    • доступклокальномуилиудаленномуSQL-серверуInterBase(компонентыстраницыInterBase);
    • доступпосредствомлегковесныхдрайверовdbExpress;
    • доступкБДпримногозвеннойархитектуре(компонентыстраницыDataSnap);
  • визуальныекомпоненты,реализующиеинтерфейспользователя;
  • компонентыдлясвязиисточниковданныхсвизуальнымикомпонентами,предоставляющимиинтерфейспользователя;
  • компонентыдлявизуальногопроектированияотчетов.

Основнымимеханизмамидоступакданным,поддерживаемымвDelphi,являются:

  • ODBC-доступчерезODBC-драйверыБДилиBDE-драйверы;
  • OLEDB-доступсиспользованиемпровайдеровданных(OLEDB-этометоддоступаклюбымданнымчерезстандартныйCOM-интерфейс);
  • средстваdbExpress,использующиелегковесныедрайверыБД;
  • средствадоступакраспределеннымнаборамданныхвмногозвеннойархитектуре.

Самыйпростоймеханизмуправленияданными,использующийODBC-драйверы,можетбытьреализованпоследующейсхеме:

  • Вмодульданных(иливформу)добавляетсякомпонентнабораданных(объектклассаTDataSet)иустанавливаетсясвязьсисточникомданных,определяемаясвойствомDatabaseName.Связьможетбытьуказанаоднимизтрехспособов:поименибазыданных,каталогуилипсевдониму(способуказаниясвязиможетбытьограничентипомисточникаданных).Списоквсехпсевдонимовдоступеннаэтапепроектирования.
  • Вмодульданных(иливформу)добавляетсякомпонентисточникаданных(TDataSourse),являющийсяцентральнымсвязующимзвеноммеждунаборомданныхиэлементамиуправления,отображающимиэтиданные.СвойствоDataSetкомпонентатипаTDataSourseуказываетнаборданных,формируемыйкомпонентамитакихклассовкакTTableилиTQuery.Есликомпонентынабораданныхиисточникаданныхрасположенывмодуледанных,тоихследуетдобавитьвпроект(командаменюFile|Useunit).
  • Вформудобавляютсяэлементыуправлениядляработысданными,такиекакTDBGrid,TDBEdit,TDBCheckbox.Онисвязываютсяскомпонентомисточникомданных,которыйуказываетсясвойствомDataSource.ИмяполянабораданныхопределяетсясвойствомDataField.

ГрафическисхемуработысбазамиданныхдлядвухзвенныхархитектурвсредеDelphiможнопредставитьследующимобразом:

 

 

 

МашинабазданныхBDE

ПровайдерыOLEDB

dbExpress

InterBase

TDatabase(необязательный)

TADOConnection

TSQLConnection

TIBDatabase

Невизуальныекомпонентынабораданых

TTable,TQuery,TDataSet,TField

 

TADODataSet,TADOTable,TADOQuery

 

TSQLDataSet,TSQLQuery,TSQLTable,TSQLStoreProc,TSQLClientDataSet

 

TIBDataSet,TIBTable,TIBQury

(

свойствоDataSet)Компонент"источникданных"-центральныйсвязующийкомпонентTDataSource

(

свойствоDataSource)ВизуальныекомпонентыдляработысданнымиTDBGrid,TDBEdit,TDBText,TDBMemo,TDBCheckbox,TDBNavigatorидр.


ДлясохраненияданныхизБДвXML-форматеилидвоичномформате,иобратно,дляформированиянабораданныхизXMLилидвоичногофайлаприменяетсяпровайдерданных.

ГрафическисхемасохраненияданныхизБДвXML-форматеприведенанаследующейсхеме:

Наборданных(TTable,TQueryилидр.)

 

(свойствоDataSet)

КлиентскийнаборданныхTClientDataSet

(свойствоProviderName)

ПровайдерданныхTDataSetProvider

(методSaveToFile)

(методLoadFromFile)

   

Файлводномизследующихформатов:двоичныйформат(dfBinary);XML-формат(dfXML);XML-формат,использующийUTF8(dfXMLUTF8)

 

 

СоединениеклиентскойпрограммысбазойданныхпроизводитсяспомощьюодногоизмеханизмовуправленияБД.Изстандартнойбиблиотекикомпонентовэто,какправило,BDE,dbExpressиInterBaseExpress(IBX).Нередкоиспользуютикомпонентыстороннихразработчиков,напримерFIBPlus,новданномкурсемынебудемрассматриватьработуснестандартнымикомпонентами.

ЧтокасаетсяADO,тутситуациянесколькосложней.КорпорацияMicrosoftнеоченьжалуетстороннихразработчиков,особеннопопулярных,поэтомусоединитьсясбазойданныхInterBaseчерезмеханизмADOдовольнопроблематично.ВстроенныхвWindowsсредствдляэтогонесуществует,аискатьиустанавливатьдрайверыInterBaseдляODBC-хлопотно.ПоэтомумынебудемрассматриватьспособысоединениясInterBaseчерезADO,темболеечтодляэтогосуществуетнемалодругих,гораздоболееудобныхипрозрачныхинструментов.

Вкратцевсежезаметим,чтодлянормальнойработысInterBaseчерезADOнуженODBC-драйверIntersolv,которыйранеевходилвпоставкуInterBase5.5,5.6илидрайверEasySoft,поставляемыйотдельно.Этидрайверыпозволяютустановитьнауровненастроекнужнуюкодировку,напримерWIN1251.ОтдельнодрайверIntersolvнепродается,непоставляется,иболеенеподдерживаетсясмоментавыходаInterBase6.Авот"устаревший"механизмBDEпозволяетсоединитьсясБДInterBaseбезвсякихпроблем.НаэтойлекциимывкратцерассмотримспособысвязыванияприложениясБДчерезстандартныемеханизмы.

Информация о работе Лекции по "Систе́ма управле́ния ба́зами да́нных "