Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-КН1.doc
Скачиваний:
18
Добавлен:
27.04.2019
Размер:
7.07 Mб
Скачать

5.3.6. Кластерізований індекс

Кластерізованим називається індекс, який створюють по унікальному ключовому полю – первинному ключу. Згідно значенням цього ключа дані в таблиці фізично упорядковані на магнітному носії. Серед всіх індексів таблиці кластерізований індекс може бути тільки один. Адреса запису вираховується за формулою В + <значення індекса > . Існує небезпека перебільшення сторінки фізичної пам‘яті. Слід відстежувати можливість такого випадку.

В деяких базах даних використовують кластерізовано-хешований індекс, тобто, фізичне упорядкування відбувається на рівні ділянок (сторінок), а віднесення запису до певної ділянки відбувається за h функцією.

5.4. Безфайлові моделі фізичної організації даних

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

Якщо розглядати найбільш загальні принципи, то слід виділити дві схеми структурізації даних: логічна і фізична.

Фізична

Логічна

Рядки

Dbspase (область БД)

Сторінки

Чанки

Tbspase (область таблиц)

Екстенти

Сторінки Blob-об‘єктів (Blobpage)

Blobpage (область BlobObject)

Чанк (chank) - частина диска, фізичний простір на диску, який асоціюється з одним процесом (on line) обробки даних. В якості чанка може бути призначено неструктурований пристрій, частина цього пристрою, блочно-орієнтований пристрій або просто файл Unix. Чанк характеризується маршрутним іменем, зсувом (від фізичного початку пристрою до початку чанка, розміром, що задається Кбайтах або Мбайтах. При використанні блочних пристроїв і файлів величина зсуву дорівнює нулю.

Таблиця даних моделюється сукупністю екстентів. Екстент - це безперервна область дискового простору. Для моделювання кожної таблиці використовується два екстенти: перший і наступний.

Перший екстент створюється при створенні нового об‘єкта типа таблиця, його розмір задається при створенні. EXTENTSIZE - розмір першого екстента. NEXT SIZE - розмір кожного наступного екстента.

Мінімальний розмір екстента в кожній системі свій, але в більшості випадків складає 4 сторінки, максимальний дорівнює 2 Гбайтам.

Новий екстент створюється після заповнення попереднього і зв‘язується зним спеціальним посиланням, яке розташоване на останній сторінці екстента. В середині екстента ведеться облік порожніх сторінок.

В деяких системах екстенти називаються сегментами, та фактично ці поняття еквівалентні.

При заповненні БД використовується механізм динамічного визначення розміру екстента. Розмір екстента подвоюється, якщо кількість виділених під базу екстентів збільшується в пропорції кратній 16, тобто після заповнення кожних 16 екстентів розмір наступного екстента стає вдвічі більшим за розмір попереднього екстента. Наприклад: якщо розмір поточного екстента 16 Кбайт, то після заповнення 16 екстентів такого розміру, під наступний екстент буде виділено 32 Кбайти пам‘яті.

Сукупність екстентів складає логічну одиницю бази - таблицю (tblspace).

Екстенти складаються з чотирьох типів сторінок: сторінки даних, сторінки індексів, бітові сторінки та сторінки blob-об‘єктів. Blob (Binary Larg Object)- відповідає неструктурованим даним. В перших СКБД ці дані відносились до типу Memo. В сучасних СКБД до цього типу відносяться неструктуровані дані: великі тексти, схеми, рисунки, малюнки та просто набори машинних кодів. Для СКБД суттєвим є те, що ці дані необхідно зберігати цілком і їх розміри можуть суттєво відрізнятися і, в загальному випадку, розмір цих об‘єктів необмежений.

Головною одиницею обміну даними між процесором та пристріями зовнішньої пам‘яті є сторінка. На одній сторінці зберігаються однорідні дані: або вміст таблиці, або індекси, Blob-об‘єкти чи бітова інформація.

Сторінки даних мають наступну структуру.

Заголовок сторінки (24 байта)

Дані …

Слоти

Слот - це 4 байтове слово, в якому 2 байта відповідають зсуву рядка на сторінці, а інші 2 байта - довжині рядка. Слоти показують розміщення рядків даних на сторінці. На одній сторінці зберігається не більше 255 рядків. В базі даних кожен рядок має унікальний ідентифікатор в рамках всієї БД, який називається RowID - номер рядка, він має розмір 4 байта він складається з номера сторінки і номера рядка на сторінці. Під номер сторінки відводиться 3 байта, тому при такій адресації можна задіяти 16 777 215 сторінок.

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

Сторінки індексів організовані у вигляді В-дерев.

Сторінки Blob, що вміщують слабоструктуровану інформацію, розглядаються, як потоки байтів довільного розміру, в сторінках даних робляться посилання на ці сторінки.

Бітові сторінки слугують для трасування сторінок інших типів. В залежності від трасуємих сторінок бітові сторінки будуються по 2-бітовій, або 4-бітовій схемі. 4-бітові сторінки слугують для збереження відомостей про стовпчики типу Varchar, Byte, Text, для інших типів даних використовуються 2-бітові сторінки.

Бітова структура трасує 32 сторінки. Кожна бітова структура складається з двох 4 байтових слів. Кожна і- та позиція в цих словах описує і сторінку. Сукупність значень і-х позицій в обох словах визначає стан і сторінки бази: її тип та зайнятість.

В оперативній пам‘яті при обробці даних СКБД створює спеціальні структури, що називаються розподіленою пам‘ятю та спеціальні структури на зовнішньому носії, які носять назву журналів транзакцій.

Розподілена пам‘ять слугує для кеширування даних при роботі з зовнішньою пам‘ятю, з метою зменшення тривалості доступа, крім того, розподілена пам‘ять слугує для ефективної підтримки одночасної роботи багатьох користувачів з базою даних.

Журнал транзакцій слугує для коректного виконання транцакцій (змін в базі даних).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]