Здавалка
Главная | Обратная связь

Відстежування вільного місця



На сторінки PFS (Page Free Space) записується стан розміщення кожної сторінки, інформація про те, чи була окрема сторінка використана чи ні, а також кількість вільного місця на кожній сторінці. У PFS на кожну сторінку доводиться по одному байту, що зберігає інформацію про те, чи була сторінка використана чи ні, а якщо була – то порожня вона, або її заповнення знаходиться в проміжку від 1 до 50 відсотків, від 51 до 80 відсотків, від 81 до 95 відсотків або від 96 до 100 відсотків.

Після розміщення об'єкту в екстенті компонент Database Engine використовує PFS-сторінки для запису інформації про те, які сторінки в екстенті використані, а які вільні. Ці відомості використовуються компонентом Database Engine при виборі нової сторінки для розміщення об'єктів. Кількістю вільного місця на сторінці можна управляти лише в разі купи і сторінок з типами даних "Текст" і "Примітка". Це використовується при пошуку сторінки, що володіє вільним місцем, достатнім для збереження в ній нового рядка, що додається. Для індексів не потрібне відстежування вільного місця на сторінці, оскільки місце, в яке вставлятиметься новий рядок, призначається значеннями ключа індексу.

PFS-сторінка є першою сторінкою після сторінки заголовка файлу у файлі даних (сторінка номер 1). Потім слідує GAM-сторінка (сторінка номер 2), а потім SGAM-сторінка (сторінка номер 3). Після першої PFS-сторінки знаходиться PFS-сторінка розміром приблизно 8 000 сторінок. Після першої GAM-сторінки на сторінці 2 знаходиться інша GAM-сторінка з 64 000 екстентів і іншою SGAM-сторінкою з 64 000 екстентів знаходиться після першої SGAM-сторінки на сторінці номер 3. На мал. 10.5 показана послідовність сторінок, використовувана компонентом Database Engine, для розміщення і управління екстентами.

 

42. Програмне забезпечення роботи з сучасними БД. Основні завдання ПЗ БД

При роботі з реляційними базами даних можна умовно виділити два основних завдання:

· власне робота з базою даних, що включає створення і ведення бази даних (створення структур таблиць, додавання запису в таблицю, видалення запису, оновлення, вибірка потрібного запису);

· створення призначених для користувача додатків, що включають розробку призначеного для користувача інтерфейсу по роботі з базою даних.

Для вирішення вказаних завдань сучасні СУБД у своєму складі можуть містити такі програмні засоби: мови процедурного покрокового програмування, засоби візуального програмування (графічний інтерфейс, диспетчер проекту, майстри і добудовники), засоби створення об'єктно-орієнтованих застосувань. Окрім цього, при розробці призначених для користувача програм в багатьох СУБД допускається використання інших мов програмування, а також використання бібліотек різного роду. Так, наприклад, при роботі з СУБД ACCESS можна використовувати мову програмування ACCESS, майстер ACCESS і мову програмування VISUAL BASIC.

При роботі з клієнт-серверними системами ситуація трохи складніша. Тут в роботі беруть участь два типи комп'ютерів (сервер і клієнт) і, відповідно, розрізняють клієнтське і серверне програмне забезпечення. Серверне програмне забезпечення включає мову програмування, що підтримує створення і ведення бази даних, також реалізацію клієнтів запитів, що надходять від користувачів до бази даних. Призначені для користувача додатки створюються і працюють на комп'ютерах-клієнтах. Саме ці комп'ютери повинні мати, разом із засобами формування запитів до бази даних, засоби розробки інтерфейсу. У зв'язку з цим, для клієнт-серверних СУБД програмне забезпечення розділяється на дві частини: програмне забезпечення – клієнт і програмне забезпечення – сервер. Відмітимо, що разом з програмним забезпеченням – клієнт, при розробці призначених для користувача програм у конкретній СУБД можуть використовуватися інші мови програмування, спеціальні бібліотеки, інші системи програмування (визначені для цієї СУБД). Як приклад у таблиці наводяться можливі варіанти використання програмного забезпечення для організації клієнт-серверної взаємодії в СУБД Microsoft SQL Server.

Таблиця 11.1. Можливі варіанти використання програмного забезпечення в СУБД MS SQL Server
Засоби ведення баз даних на сервері MS SQL Засоби розробки клієнтських застосувань
Служби SQL-сервер (MS SQL server і ін.)   · Програмне забезпечення клієнта SQL-сервер (Transact SQL, SQL Server Query Analyzer і ін.) · MS Access (ODBC) · MS Visual Basic · MS Visual Studio · MS Visual FoxPro · Java (JDBC) · Borland Delphi · Borland C++Builder і ін. · Бібліотеки функцій (API, ODBC і ін.)

Повний розгляд всього спектру програмного забезпечення роботи СУБД дуже широке і виходить за межі наших лекцій. Тому зараз розглянемо лише засоби створення і ведення бази даних.

43. Програмне забезпечення роботи з сучасними БД. Проблеми створення і ведення реляційних БД

При створенні бази даних і організації роботи з нею виникають три основні проблеми:

· власне створення бази даних (створення таблиць, індексів, обмежень цілісності);

· забезпечення безпеки і розмежування доступу;

· організація доступу до елементів таблиці (вибірка, редагування, видалення, додавання).

Перша проблема може бути вирішена за допомогою створення в кожній конкретній СУБД деякої утиліти, що дозволяє користувачеві в певний момент здійснювати всі необхідні дії із створення бази даних. Проте це не повністю вирішує проблему. Така утиліта не дозволяє створити таблицю динамічно під час роботи прикладної програми, не дозволяє, наприклад, додати в таблицю сформований стовпець під час роботи призначеної для користувача програми. Необхідні засоби, що дають можливість формування під час роботи прикладної програми запити на зміну структури і вмісту бази даних. Те ж саме можна сказати і про вирішення другої проблеми.

Детальніше розглянемо можливий шлях вирішення третьої проблеми. Організація доступу до бази даних є найважливішою функцією інформаційної системи. Користувачі постійно працюють з даними. Розглянемо простий приклад. Нехай у нас є таблиця СТУДЕНТ, що зберігає інформацію наступного типу:

СТУДЕНТ (Код студента, Прізвище, Ім'я, По батькові, Дата вступу).

Тепер ми хочемо виконати деякий запит до бази даних, результатом якого повинні стати ті рядки таблиці СТУДЕНТ, для яких дата вступу виявиться більше 01.06.2006. Розглянемо послідовність дій для реалізації цього запиту.

1. Отримуємо доступ до таблиці СТУДЕНТ і встановлюємо покажчик поточного рядка на перший рядок таблиці.

2. Аналізуємо поле "Дата вступу" у поточному рядку.

3. Якщо значення "Дата вступу" > "01.06.2006", роздруковуємо на екрані дані про абітурієнта.

4. Якщо таблиця не закінчилася, переміщаємо покажчик поточного рядка на наступний рядок і переходимо до кроку 2, інакше закінчуємо роботу.

Будь-яка людина, знайома з програмуванням, легко уявить собі реалізацію подібного алгоритму будь-якою мовою програмування високого рівня. Ось, зокрема, приклад реалізації на Object Pascal:

Table.First;while (not Table.Eof) dobegin if FieldByName("Дата вступу").Value > "01.06.2006" then List.Add(FieldByName("Прізвище").AsString); Table.Next;end;

У цьому випадку розробник застосування сам організовує роботу по вибірці даних, програмуючи кожен рух по таблиці (здійснює навігацію по таблиці). Такий підхід до обробки даних, орієнтований на послідовну роботу з окремими записами, називається навігаційним. Тут конкретною мовою програмування ми описуємо процедуру – послідовність дій, необхідних для здобуття результату. Мови, в яких використовується такий підхід, називаються процедурними. Вочевидь, що із зростанням складності запиту істотно зростає складність процедури і, відповідно, об'єм тексту програми.

При роботі з інформаційною системою користувач реалізує свої запити до бази даних за допомогою розроблених програмістами прикладних програм. При навігаційному підході мають бути запрограмовані всі можливі запити. Вочевидь, що заздалегідь передбачити і запрограмувати всі запити, потреба в яких може виникнути неможливо. З урахуванням того, що переважна більшість користувачів не володіють навиками програмування, це означає, що об'єм їх дій буде обмежений межами написаних програм, а саме, тими запитами, реалізація яких передбачена заздалегідь.

Крім того, повинен враховуватися механізм взаємодії в межах архітектури "клієнт – сервер". Призначена для користувача програма виконується на комп'ютері – клієнт. Запит до бази даних реалізується комп'ютером – сервером. Необхідний механізм формування в призначеній для користувача програмі клієнта запиту до бази даних сервера. У цьому випадку навігаційний підхід неприйнятний. У зв'язку з цим, для роботи з базами даних розроблений і використовується інший підхід, заснований на використанні так званих мов запитів, які задають не послідовність необхідних дій, а умови, яким повинен задовольняти результат (при додаванні стовпця, вибірці запису, додаванні запису і т. п.). Такий підхід вирішує усі три вищеперелічені проблеми.

З цією метою розроблений і активно використовується у всіх базах даних – спеціальна мова запитів SQL. Особливо відзначимо, що основою мови є операції реляційної алгебри.

Мова SQL (Structured Query Language – структурована мова запитів) застосовується для спілкування користувача з реляційною базою даних і складається з трьох частин [23]:

· DDL (Data Definition Language) – мова визначення даних. Призначена для створення бази даних (таблиць, індексів і т.д.) та редагування її схеми.

· DCL (Data Control Language) – мова управління даними. Містить оператори для розмежування доступу користувачів до об'єктів бази даних.

· DML (Data Manipulation Language) – мова обробки даних. Містить оператори для внесення змін до вмісту таблиць бази даних.

Як видно з написаного вище, SQL вирішує всі розглянуті раніше питання, надаючи користувачеві досить простий і зрозумілий механізм доступу до даних, не пов'язаний з конструюванням алгоритму і його описом мовою програмування високого рівня. Так, замість вказівки того, як необхідно діяти, користувач за допомогою операторів SQL пояснює СУБД, що йому потрібно зробити. Далі СУБД сама аналізує текст запиту і визначає, як саме його виконувати.

У архітектурі "клієнт – сервер" мова SQL займає дуже важливе місце. Саме вона використовується як мова спілкування клієнтського програмного забезпечення з серверною СУБД, розташованою на віддаленому комп'ютері. Так, клієнт посилає серверу запит мовою SQL, а сервер розбирає його, інтерпретує, вибирає план виконання, виконує запит і посилає клієнтові результат.

Поглянемо, як виглядає запит мовою SQL, що вирішує завдання про вибірку студентів по даті вступу.

SELECT ПрізвищеFROM СтудентWHERE Дата вступу > "01.06.2006"

Може скластися помилкове враження, що поява мови SQL є альтернативою мов програмування високого рівня. Це не відповідає дійсності. Виконання запиту засобами SQL все одно зводиться до роботи з окремими записами, і від цього нікуди не дітися. Важливо розуміти, що поява мови SQL дала, принаймні, дві нові можливості.

1. З'явився новий рівень абстракції між користувачем і СУБД. Цей рівень знаходиться ближче до користувача, чим рівень програмування мовою високого рівня, що знижує вимоги до кваліфікації користувачів.

Багато типових завдань, що виникають при роботі з базами даних, і раніше вирішувалися кожним програмістом по-своєму (частенько дублюючи дії іншого програміста) вирішені реалізацією мови SQL. Таким чином, відпала необхідність самостійного вирішення багатьох проблем, вирішених у СУБД відповідним чином. Мова SQL надає засоби для доступу до цих типових можливостей СУБД. При створенні бази даних і організації роботи з нею виникають три основні проблеми:

 

44. Поняття мови SQL і його основні частини. Історія виникнення і стандарти мови SQL

Історія виникнення починається з 1970 р. Стандарти в галузі програмного забезпечення розробляють ANSI та ISO.

Міжплатформенна переносимість Наявність стандартів Схвалення і підтримка компанією IBM, Microsoft

Історія виникнення мови SQL починає з 1970 року [5], коли доктор Е.Ф. Кодд запропонував реляційну модель як нову модель бази даних. Для доказу життєздатності нової моделі даних усередині компанії IBM був створений потужний дослідницький проект, що отримав назву System/R. Проект включав розробку власне реляційної СУБД і спеціальної мови запитів до бази даних. Так на початку 70-х років з'явився перший дослідницький прототип реляційної СУБД. Для цього прототипу розроблялися і випробувалися різні мови запитів, один з яких отримав назву SEQUEL (Structured English Query Language). З моменту створення і до наших днів ця мова зазнала багато змін, але ідеологія залишилася незмінною.

Період з 1979 року (закінчення проекту System/R) до теперішнього часу характеризується розвитком і вдосконаленням мови SQL і його роллю, що постійно збільшується, в індустрії, пов'язаній із створенням і експлуатацією баз даних. Абсолютно вочевидь, що мова ніколи не отримала б світового визнання, якби на нього не було жодних стандартів. Стандартизація – важлива частина технологічних процесів кінця XX століття. Саме наявність розроблених і офіційно визнаних стандартів дозволила затвердитися багатьом сучасним технологіям (не лише в індустрії розробки програмного забезпечення, але і в багатьох інших сферах людської діяльності). Як йде справа із стандартами мови SQL і їх підтримкою в поширених СУБД?

Коли ведуть мову про стандарти в області, пов'язаній з розробкою програмного забезпечення, зазвичай мають на увазі дві організації: ANSI (American National Standards Institute) – Американський національний інститут стандартів; ISO (International Standards Organization) – Міжнародну організацію по стандартизації.

Робота над офіційним стандартом мови SQL почалася в 1982 році [8] в рамках комітету ANSI. У 1986 році (зверніть увагу, скільки часу пішло на розробку стандарту і узгодження деталей!) був затверджений перший варіант стандарту ANSI, а в 1987 році цей стандарт був затверджений і ISO. У 1989 році стандарт зазнав незначні зміни, але саме цей варіант отримав назву SQL-1 або SQL‑89. У чому особливість SQL-89? За час розробки стандарту (1982–1989 рр.) були створені, представлені на ринок і активно використовувалися декілька різних СУБД. В цих СУБД в тому або іншому вигляді був реалізований деякий діалект мови SQL. З урахуванням того, що розробкою стандартів займалися ті ж люди, хто впроваджував SQL в СУБД, стандарт SQL-89 був плодом безлічі компромісів. Це призвело до наявності в стандарті великої кількості "білих плям", тобто місць, які не були описані, а віддані на розсуд розробників діалекту. В результаті мало не усі наявні діалекти стали сумісними із стандартом, але особливої користі це не принесло.

Наступна реалізація стандарту була покликана вирішити цю проблему. В результаті тривалих обговорень і узгоджень в 1992 році був прийнятий новий стандарт ANSI SQL-2 або SQL-92. SQL‑92, який заповнив багато "білих плям", вперше додавши в стандарт можливості, ще не реалізовані в існуючих комерційних СУБД.

Робота над стандартизацією продовжується і далі. З'явилися стандарти SQL-1999, SQL-2003. Проте, всі ці стандарти не вирішили всіх проблем, пов'язаних з наявністю декількох діалектів мови. Як правило, розробники як ігнорували, так і ігнорують деякі положення стандарту, з одного боку, відмовляючись реалізовувати деякі його частини і, з іншого боку, реалізовуючи те, що відсутнє в стандарті. Не дивлячись на наявні відмінності, всі комерційні СУБД підтримують деяке ядро мови, описане в стандарті, однаково. Відмінностей не дуже багато, вони не носять принципового характеру. Хоча кожна СУБД як і раніше підтримує свій діалект мови.

У систему управління базами даних Microsoft SQL Server входить мова TRANSACT-SQL, розроблена на основі одного із стандартів SQL.

 

45. Поняття мови SQL і його основні частини. Переваги мови SQL. Загальна характеристика SQL







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.