Представяне на данни



Дата10.04.2018
Размер66.01 Kb.



Представяне на данни
Сред изискванията на СУБД са:

  • Атрибутите да бъдат представени като поредица от байтове с фиксирана или променлива дължина, наречени полета.

  • Полетата заедно се организират в набори с фиксирана или променлива дължина, наречени записи

  • Записите се съхраняват във физически блокове. Различните структури от данни са полезни, особено ако блоковете със записи трябва да се организират когато базата от данни се модифицира.

  • Колекция от записи която формира отношение се съхранява като колекция от блокове, наречена файл. За да поддържаме ефикасни заявки и модификации на тези колекции поставяме номер на индексирани структури на файла.

Записите съответстват на кортежи в релационните модели или обекти в обектния модел. Тези записи трябва да се съхраняват в блокове, което се осъществява с помощта на различни структури от данни. Един набор от блокове, в който се съхраняват записи от една и съща релация или клас се нарича файл. Един файл е набор от блокове. За да се търси ефективно се използват индексни структури върху файла (файла в БД е различен от файла в ОС. В операционната система файлът е поредица от байтове и няма структура, в БД е поредица от блокове, в които има организация-индекси и др. ).

Елементи, данни, полета

Елементи – стойностите на атрибутите при релационния или обектно-ориентирания модел. Елементите данни се представят с полета, които се използват за формиране на блокове.

Пример в релационните бази от данни:

CREATE TABLE Movie Star

(Name char (30) Primary key,

Address varchar (255),

Gender char (1),

Birthdate Date)



СУБД взема и създава тази релация. Тя е множество от кортежи, които могат да бъдат разглеждани като записи или структури (в С++). Всеки кортеж се представя като запис, записът заема част от някои блок върху диска и в него всеки атрибут си има по едно поле.

Проблеми:

  1. как се представят типовете като полета?

  2. как представяме кортежите като записи?

  3. как представяме набор от записи (кортежи) като набор от блокове (т.е. къде ще отидат записите от блокове)?

  4. как наборите от блокове се използват за съхраняване и представяне на релации?

  5. как се оправяме със записи, чиито размери могат да варират за различните кортежи?

  6. какво става когато размера на записът се променя? Как се представят големи бинарни обекти?


Обектно-ориентиран модел – как се представят обекти
Обект – кортеж, неговите екземплярни променливи-атрибути. Обектите може да ги представим както представихме кортежите, но има два проблема:

  1. обектите могат да имат методи или функции, асоциирани с тях. При обектно-ориентирания модел тези методи и функции са част от схемата.

  2. обектите имат идентификатори, уникални в някакво глобално адресно пространство, между обектите има и връзки, които или са указатели или списъци от указатели. Методите се съхраняват заедно със схемата, т.к. те са общи с цялата база от данни.

Във всеки един запис, представляващ обект, има поле, което идентифицира към кой клас принадлежи обекта и какви методи се използват за него. Връзките също са част от обекта, но трябва да се съхраняват с него. Обикновено не се знае вида на връзките. Когато са например много към много не се знае колко да се задели и се получава запис с променлива дължина.
Представяне на данни (как SQL типовете данни се представят като елементи в записа):


  • int – 2-4 байта, float – 4-8 байта. Съхраняват и се разглеждат като поредица от битове, които се интерпретират от хардуера на машината.

  • Символни низове с фиксирана дължина char (n). поредица от n байта (всеки символ се представя с един байт). char (5) c a t_ _

  • Символни низове с променлива дължина varchar (n) представянето става по два начина: или да се задели един байт в началото, който съдържа дължината на цялото поле 3 c a t или да бъде използван специален символ за край c a t \x0.

  • Дата и време – датата е символен низ с фиксирана дължина.

  • Битове bit (n) поредица от битове, извършва се пакетиране по 8 бита (1 байт). bit (12) {1101 1011} {1011 X}

  • Булева стойност - true (1000 0000 или 1111 1111) или false(0000 0000)

  • Изброими типове – имат фиксирано множество от стойности за атрибути {RED,GREEN,BLUE}; {MON,…,SUN}. Множеството от стойности имат символични имена. Стойностите на изброимия тип могат да се представят с числови стойности {0,1,2}; {0,…,6}. Представят се с един байт, ако са по-големи от 255 – с два.



Записи

Групиране на полета в записи



Схемата на релацията определя схемата на записа В този схема са указани имената и типовете на данните в полетата и офсетите на записите. Когато се пакетират няколко полета в един байт се харчи по-малко дискова памет, но операциите са по-сложни и възможността за грешки е по-голяма.
Записи с фиксирана дължина
Кортежите представяме чрез записи с фиксирани полета.

0 name 29

30 address 285

286 gender

287 birthdate 297

В някои машини по-ефективно се чете и пише когато полетата са разположени на граница на дума (тя може да е четна на 4 или 8)


0 29

//////

32 288

/////

292

/////

296 304

Нуждата от схема на записа се обосновава на факта, че схемата на релацията може да се изменя и затова се използва при работа само текущата схема.
Заглавни части на записите
Често трябва да се поддържа информация за записа, който не е стойностно поле. Най-често е чрез указател, който сочи къде и коя е схемата на записа (той е в заглавието). В заглавието още има дължината на записа, време, когато записа последно е изменян или четен. СУБД поддържа информация за схемата, която се появява в create table– атрибутите, типовете данни, наредба на атрибутите в кортежа и ограниченията. Тази информация не е в заглавието на записа, а има указател към нея.
Пакетиране в блокове
След като са подредени записите се пакетират в блокове. Блоковете са с фиксирана дължина.


Заглавна част

Запис 1

Запис 2

...

Запис N

Свободна памет




Заглавната част съдържа информация за:

  1. връзки към един или повече блокове, които са част от мрежа блокове, използвани за създаване на индекси.

  2. ролята, която играе блока в тази мрежа (индексен, за данни и др.).

  3. за това на коя релация са тези кортежи от блока

  4. директории на записите от блока (таблица, съдържаща офсетите към началото на всеки един запис).

  5. идентификатор на блока

  6. времето на последното обновяване или достъп да блока.

Указателите са важни когато трябва да се организират сложни записи с променлива дължина. Когато един блок е зареден в оперативната памет дължината му е един байт, зареден във виртуалното пространство. Ако блока е във вторичната памет се използва поредица от байтове, която идентифицира мястото на блока. Тя може да съдържа идентификатор на диск, номер на писта, цилиндър и т.н. Записите се адресират чрез блок, едната част на записа е адреса на блока, а другата – офсета в блока.

Операционната система и СУБД поддържат един сървърен процес, който предоставя данните от вторичната памет на един или няколко клиентски процеса. Клиентското приложение ползва конвенционалното адресно пространство (32-битова адресация). СУБД (операционната система) решава кои части от адресното пространство текущо ще бъдат заредени, а хардуера се грижи за преобразуването на виртуалните адреси във физически. Сървърните данни съществуват в адресното пространство на базите от данни. Там данните се адресират с адреси на блокове и с офсети в тях. Данните в това адресно пространство се представят чрез:



  • физически адреси – поредица от байтове еднозначно определяща къде се намира даден блок или запис във вторичната памет. Тя съдържа:

  1. име на хост (ако една база от данни се съхранява на повече от една машина).

  2. идентификатор на диск или друго устройство, на което е разположен.

  3. номер на цилиндър.

  4. номер на писта в цилиндъра.

  5. номер на блок в пистата.

  6. офсет в блока (ако става дума за запис)

  • логически адреси – прилагат се както за блокове, така и за записи - низ от байтове с фиксирана дължина. Имат таблица на изображението, която се съхранява на фиксирано място върху диска и служи за преобразуване на логически адреси във физически.

Представяне на логически и физически адреси


Един запис маже да се индексира чрез физическия номер на блока, в който се намира и да се използва ключ вместо офсет. По този начин записът може да се мести в блока. За да разпознаваме записите в блока трябва да знаем тяхното разположение. Най-лесния вариант е записите да са с фиксирана дължина. Комбинация от логически и физически адреси се предлага в т.нар таблица на офсетите, която се намира в заглавната част на блока.
расте расте

Инфор-мация












Свободно пространство

ЗаписN

...

Запис2

Запис1


- таблица на офсетите - заглавна част

Използва се когато записите са с променлива дължина. Записът се адресира – адрес на блока + офсет в таблицата на офсетите. Ако има външни указатели към запис те сочат в таблицата на офсетите. Ако се изтрие един запис в таблицата се слага “надгробен камък” за информация, че записът е изтрит, иначе външният указател ще сочи друг запис.
Каталог: fmi -> fmi-ftp-upload-folder -> 3%20Semestur%202004%20&%202005 -> Predmeti -> DBMS -> Lekcii
fmi-ftp-upload-folder -> Бази от данни Упражнение 10
fmi-ftp-upload-folder -> Oracle e-business Suite Модул Financials, подмодул Fixed Assets
fmi-ftp-upload-folder -> Бази от данни Упражнение 9
fmi-ftp-upload-folder -> Basic structures напишете pl/sql блок, който въвежда номера в таблицата messages
Lekcii -> Grid съхранява голям обем данни (терабайтове)
Lekcii -> Извличане на документи и инвертирани индекси за целите на web приложенията
Lekcii -> Третична памет
Lekcii -> Многобазово криптиране на големи релации Ако размера на блока е в байта, а в основната памет имаме М


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©obuch.info 2019
отнасят до администрацията

    Начална страница