Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kazntu.kz_031215_ND_MukazhanovNK.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.61 Mб
Скачать
      1. Агрегациялық мəндерді есептеудің ағаш түріндегі құрылымын əзірлеу

Агрегациялық көрсеткіштерді есептеуді ағаш түріндегі құрылымда ұйымдастыруға болады. Ағаштың жапырақтарында бастапқы агрегациялық мəндер орналастырылады, ал түйіндерде қосындылау операциясы орындалады. Қосындылау нəтижесінде алынған мəндер жеке құрылым бойынша жадыда сақталынады. Түйіндерде өлшем элементтерінің ішкі кілттері бойынша құрылған көп өлшемді индекстер жəне қосындыланған агрегациялық мəндерге нұсқағыштар орналастырылады (3.5-сурет). Есептеу бірнеше деңгейлерден тұрады:

n - деңгей.Ағаш жапырақтарына факт кестесіндегі бастапқы агрегациялық мəндер өлшем элементтерінің ішкі кілттері бойынша құрылған индекстер бойынша орналастырылады. Бір жапырақ жадыдағы бір адреске сəйкес келеді. Мəндерді жапырақтарға орналастыру алдын ала анықталған құрылым бойынша жүзеге асырылады.

Бастапқы мəндерді жапырақтарға орналастыру аяқталғаннан кейін, көп өлшемді индексті құрылым бойынша сəйкес келетін бастапқы мəндерді іздеу жүзеге асырылады. Көп өлшемді индекстері сəйкес келетін жапырақтардағы мəндер бір массивқа жазылады жəне массив элементтері қосындылау арқылы біріктіріледі. Іздеу жəне индекстері сəйкес келетін мəндерді массивтарға

біріктіру жоғарыда келтірілген көп өлшемді құрылымда берілген қадамдар бойынша орындалады. Массив элементтерін қосындылау ағаш түйіндерінде орындалады. Қосынды нəтижесі бір деңгей жоғары орналасқан индексі сəйкес түйінге жазылады. Егер қандай да бір индекске сəйкес жапырақ табылмаған жағадайда, сол түйінге көп өлшемді индеспен бірге бос нұсқағыш (NULL) орналастырылады. Бұл қадамда бізn-мөлшерлі индекске сəйкес агрегациялауды аяқтап, өлшем элементтерінің қиылысуының ең төменгі деңгейіндегі агрегациялық мəндердіаламыз.

3 – деңгей.Бұл деңгейдегі түйіндерде, мүмкін болатын барлық үш өлшемді комбинациялардағы өлшемдер элементтерінің ішкі кілттері бойынша құрылған үш өлшемді индексті құрылым жəне үш өлшемді индекстердің сəйкестігі бойынша біріктірілген мəндерге нұсқағыштар сақталынады. Түйін жапырақтары ретінде бір саты төмен орналасқан деңгейдегі түйіндер алынады, яғни4-деңгейтүйіндері алынады. Бұл деңгейде гипертекшеден үш өлшемді қима бойынша қарағандағы ұяшықтардағы агрегациялық мəндердіаламыз.

2 – деңгей.Бұл деңгейдегі түйіндерде барлық екі өлшемді комбинациялардан алынатын өлшемдер элементтерінің ішкі кілттері бойынша құрылған екі өлшемді индексті құрылым жəне екі өлшемді индекстердің сəйкестігі бойынша қосындылау арқылы біріктірілген мəндерге нұсқағыштар сақталынады. Бұл деңгейде гипертекшеден екі өлшемді қималар бойынша қарағандағы ұяшықтардағы агрегациялық мəндерді аламыз. Агрегациялық мəндер3-деңгейіндегі үш өлшемді индекстік құрылымнан екі өлшемді құрылым бойынша сəйкес келетін мəндерді қосындылау арқылы алынады. Түйін жапырақтары ретінде3-деңгейдегі түйіндер алынады.

Сурет 3.5 – Гипертекше агрегациялық көрсеткіштерін есептеудің ағаш түріндегі құрылымы

1 – деңгей.Бұл деңгейдегі түйіндерде бір өлшем бойынша алынған агрегациялық мəндер орналастырылады. Түйіндер саны барлық өлшем элементтерінің қиылысу нүктелерінің санына тең. Түйін жапырақтары ретінде2-деңгейдегі түйіндер алынады

0 - деңгей.Ең жоғарғы деңгей, қарастырып отырған гиперкуб қырының барлық сандық көрсеткіштердің қосынды мəнін аламыз. Бұл деңгейдегі алынатын қорытынды қосынды мəн гипертекшенің барлық сандық көрсеткіштерінің қосындысы болып табылады.

Ұсынылып отырған 3.5-суреттегі агрегациялық деректерді есептеудің ағаш

түріндегі құрлымы жалпылама берілген. Мұндағы əрбір

Sall

-қорытынды

қосынды мəн массив элементтерінің қосындысы түрінде есептелінеді. Есептеу ағаш бойынша орындалады, бірақ соңғы нəтиже ретінде тек агрегациялық

қорытынды қосындымəн

Sall

-ғана ағаш құрылымында сақталынады.Себебі,

агрегациялық сұранымдар кезінде тек қорытынды агрегациялық көрсеткіштер пайдаланылады жəне осы ағаш құрылымы негізінде аналитикалық сұранымдар

кезінде деректерге тиімді қатынау жүзеге асырылады.

Sall

-агрегациялық

қосындыны массив элементтерінен есептеудің ағаш құрлымы 3.6-суретте

берілген. Сұлбаға мысал ретінде

Sall11,

Sall12,Sall13,…,Sallk k– екі өлшемдер

1 2

бойынша шығарылатын агрегациялық мəндер алынады.

Сурет 3.6 – Массив элементтерінен агрегациялық көрсеткіштерді есептеудің ағаш құрылымы

Сұлбадағы,

x1,

x2,x3,...,xj11,...,

xj12,...,xj13

,…,

xj – белгілеулері,

k k

1 2

сəйкесінше бір массивқа біріктірілген мəндер. 3.6-суретте берілген құрылым 3.5-суретте жалпылама берілген құрылымның ішкі құрлымы болып табылады. Бинарлы ағаш құрлымынан басқа қосындылауды есептеу үшін тізбекті- бинарлы, бинарлы-тізбекті жəне тізбект-тізбекті құрылымдарға түрлендірілген сұлбалар қолдануға болады. Бұл құрылымдарға түрлендіру жəне тиімді есептеуде көппроцессорлы жүйелерді пайдалану [42]-əдебиетте берілген. Гипертекшені құру кезінде ағаш түріндегі құрылымда барлық факт бойынша мүмкін болатын агрегациялық қосындыларды алу өте көп циклдік операцияларды орындауды талап етеді. Мұндай үлкен көлемді операцияларды жылдам орындау үшін көппроцессорлы параллелді есептеулерді қолдануға болады.

Агрегациялық мəндерді ағаш түрінде есептеуге арналған құрылымның түйіндерінде көп өлшемді индекстерді жəне осы индекске сəйкес қосынды нəтиженің адресін беретін нұсқағышты сақтаймыз. Деректер қоймасы бойынша жаңарту болғанға дейін гипертекшеде ешқандай есептеулер орындалмайды, тек түйіндерде сақталған индекстер бойынша алдын ала есептелген агрегациялық мəндерді алады. Құрылым бойынша есептеулер аяқталғаннан кейін гипертекше жаңартылған (updated) болып есептелінеді. Ары қарай аналитикалық сұранымдарға жауап беру орындалады.

      1. Көп өлшемді индексті құрылым бойынша деректерге қатынау құрлымын жəне алгоритмінəзірлеу

Аналитикалық сұранымдарды орындау кезінде гипертекше өлшемдері бойынша алынатын қима деректеріне іздеу жүргізіледі. Жоғарыда əзірленген құрылымда агрегациялық деректер көп өлшемді индекстер мөлшерлері бойынша деңгейлерде топтастырылған. Бұл бізге аналитикалық сұранымдарды орындауда деректер құрлымы ерекшеліктеріне негізделген тиімділікті арттыруға бағытталған алгоритм əзірлеуге мүмкіндік береді. Келесіде, гипертекше қималарын алу кезінде деректерге тиімді қатынауға мүмкіндік беретін, əзірленген агрегациялық көрсеткіштерді есептеудің ағаш түріндегі құрылымна негізделген құрылымдар мен алгоритм əзірлеуді қарастырамыз.

Деректерге тиімді қатынауға арналған құрылым жоғарыда əзірленген есептеу ағашы негізінде, баланстрылған көп өлшемді ағаш түрінде құрылады. Құрылымnдеңгейден тұрады. Əрбір деңгей өз ішінде бірдей мөлшердегі көп өлшемді индекстер бойынша топтастырылып, баластырылған ағыш (balanced tree) түріндегі ішкі құрылымнан тұрады. Ішкі құрылымның AVL жəне B ағаштары негізінде, биіктігі бойынша баланстрылған көп өлшемді индексті нұсқалар əзірленетін болады.n-деңгейлі топтастырылған көп өлшемді индекстік құрлымыдардан деректерді іздеуге арналған арнайы алгоритм құрылады.

AVL-ағашыбиіктігі бойынша баланстандырылған бинарлы іздеу ағашы, оның əр бір төбесі (түйін) үшін оған бағыныңқы екі бұтағының биіктік айырмашылығы 1-ден аспайды. Əр бір түйін кілттен (key) жəне мəннен (value) тұрады [117].

Бинарлы ағаш– əр түйіні (төбесі) 2-ден кем емес ұрпақ түйіні жəне бір атасы бар құрылым. Ағаштың ең жоғарғы түйіні ата-анасыз жалғыз түйін болыптабылады,олтүбіртүйіндепаталады.Nтүйінібарбинарлыағаштың

log2N1кем емес деңгейі болады [39].

Ары қарай, индекс мөлшері бойынша топтастырылған көп өлшемді индектердің баланстрылған бинарлы ағаш құрылымын құруды қарастырамыз. Кілт мөлшерлері бойынша топтастырылған көп өлшемді баланстрылған бинарлы ағаш түріндегі құрылым ішкі құрылым болып табылады.0-денn-ға дейінгі аралықтағы деңгейлердің əр қайсысы үшін көп өлшемді индекс мөлшеріне байланысты жеке-жеке ішкі құрылым ұйымдастырылады. Құрылымның төбеге сəйкес келетін əр бір түйіні көп өлшемді индекстен (MI- көп өлшемді индекстер) жəне агрегациялық көрсеткіш сақталынған жады

ұяшығына нұсқағыштан (*pi) тұрады:

[MI,*pi]немесе

[111...1,*p1],

[111...2,*p2],[111...3,*p3]...[k1k2k3...kn,*pk1k2k3...kn] . Мұндағы əр бір көп өлшемдіиндекстердің мөлшері индекске кіретін өлшем элементтерінің ішкі деңгейіне

сəйкес анықталынады MI1,2,3,...,n. Мысалы, 2-деңгейдегі көп өлшемді

индекстердіңмөлшері

[11,*p1,],

[12,*p2],

[13,*p3]...[k1kn

,*p

k k

1n

],3-деңгейдегі

көп өлшемді индекстердің мөлшері

[111,*p1],

[112,*p2],

[113,*p3]...

[k1k2kn

,*p

k1k2kn]

жəнет.б. Соныменқатарəрбіртүйіноңжəнесоластыңғы

бұтақтарды иемденеді. Астыңғы бұтақта түйін немесе жапырақ орналасуы мүмкін. Егер түйін орналасқан болса, онда ол ары қарай оң жəне сол жақ бұтақтар болып жалғасады. Əр түйін үшін баланстрылған бинарлы ағаш құрылымына сəйкес келесі шарттар орындалады:

  • Барлық сол жақ астыңғы бұтақ түйіндеріндегі кілт мəндері аталық түйін кілт мəндеріненкіші;

  • Барлық оң жақ астыңғы бұтақ түйіндеріндегі кілт мəндері аталық түйін кілт мəндеріненүлкен.

Егер бұтақта жапырақ орналасқан болса, онда одан ары қарай жалғасу болмайды.

Көп өлшемді индекстік баланстрылған бинарлы ағаш құрлымын құру.Бұл құрлымды құру үшін ең бірінші көп өлшемді индекстік мəндерді ретті орналастыру, яғни сұрыптау қажет. Көп өлшемді деректерді сұрыптаудың бірнеше түрі бар: lowX, Hilbert curve, Sort Title Recursion жəне т.б. Бұл жұмыста lowX сандартты көп өлшемді сұрыптау əдісі таңдап алынды. LowX OLAP- өнімдерінде ең көп қолданылатын əдістің бірі жəне гипертекше қималары деректерін алуда жылдам жұмыс жасайды. Əдістің жұмыс жасауы қарапайым.

Көп өлшемді индектер

[I1I2I3...In]-атрибуттар қатарынан тұратын болса,

сəйкесінше

I1-бірінші индекс

I2-екінші индекс. Сұрыптау 1-индекстенn-

индекске дейін кіші мəнерді бірінші қою арқылы орындалады. Сұрыптау аяқталғаннан кейін баланстрылған бинарлы ағашты жүзеге асыру орындалады. Баланстрылған бинарлы ағаш құру сұрыпталған тізімнің ортаңғы элементін таңдау арқылы, тізімді екіге бөлу. Оң жақ(R)бөлікте ортаңғы мəннен үлкен, ал сол жақ(L)бөлікке кіші мəндер орналастырылады.r-ағаш түбірі деп алсақ, онда, балантсау үшін келесі шарт орындалады,L<r<R. Ары қарай, алынған бөліктердің ортаңғы элементін таңдау жəне тағы да екі бөлікке бөлу орындалады. Мұнда да оң жақ бөлікте ортаңғы мəннен үлкен, ал сол жақ бөлікке кіші мəндер орналастырылады. Дəл осылай рекурсивті түрде барлық бөлінген бөліктер бойынша оң жəне сол жақтарға бөлу арқылы баланстрылған бинарлы ағаш құру жүзеге асырылады. Ағаш құрылымдары бойынша деректерді іздеу тиімділігі оның баланстрылуына тікелейбайланысты.

Көп өлшемді индекстік баланстрылған бинарлы ағаш құрылымы сыртқы жадыда жұмыс жасауға арналған. Құрылымдағы əр бір түйін дисктегі бір бетке (page of disk) сəйкес келеді. Құрылым көп өлшемді индекс бойынша іздеуде түйіндерге барынша аз қатынасуға бағытталған. Бір түйінге қатынау жады бір бетіне қатынауға сəйкес келеді. Құрылым сұлбасы 3.7-суретте көрсетілген.

Іздеу.Деректерді іздеу түбір түйіннен(r)төмен қарай жапырақ түйіндерге өтіп, кілт мəндерін салыстыру арқылы жүргізіледі. Егер ізделінетін индекс мəні (s[MI]) түйіндегі мəннен (r[MI]<s[MI]) үлкен болса ағаштың оң жақ бұтағына қарай өту орындалады, егер кіші болса (s[MI]<r[MI])сол жақ бұтағына қарай өту орындалады (s-search сөзінен алынған). Осылай индекс бойынша іздеу ағаш жапырағына дейін жалғасады. Егер ізделінген мəн табылса, түйіндегі нұсқағыш арқылы жады ұяшығындағы агрегациялық көрсеткіш алынады (s[MI,*pi]–>Sall). Егер ізделінген мəн табылмаса,NULL-мəні қайтарылады (s[MI,*pi]=NULL).

Сурет 3.7 – Агрегациялық деректерге қатынауға арналған көп өлшемді баланстрылған ағаш құрылымы

Əзірленген құрылымға жаңа түйін қосу жəне түйінді өшіру баланстрылған бинарлы ағашына ұқсас жүргізіледі. Төменде аталған операцияларды орындаудағы əзірленген ағаш құрылымына байланысты ерекшеліктері берілген.

Құрылымғажаңа түйін қосудеректер қоймасына жаңа өлшем қосылған немесе өлшемдер кестесіне жаңа жазбалар қосылған жағдайда орындалады. Жаңадан қосылған өлшем кестесі немесе өлшемдер кестесіндегі жаңа жазбалар индекстері факт кестесінде көп өлшемді индекс түрінде беріліп, индекстік ағаш құрылымына жаңа түйін ретінде қосылады (new_r[MI,*pi]).Баланстрылған бинарлы ағаш құрлымына жаңа түйін қосу басқа ағаш құрылымдарымен салыстырғанда анағұрлым күрделі болып келеді жəне орындалу күрделіліктің

уақыты логорифм бойынша

O(log2N)-ға тең болады. Егер қандайда бірr-

түйіннен, оң(R)жəне сол(L)бұтақтардан тұратын баланстарылғанбинарлы

ағаштың сол жақ(L)бұтағына жаңа түйін қосатын болсақ, оның биіктігі 1-ге артады [117]. Сонда,

  • Егер бастапқыдаhL=hRтең болса, онда жаңа түйін қосылғаннан кейінLжəнеRбұтақтар биіктіктері бірдей болмайды, бірақ баланстылық критериі бұзылмайды.

  • Егер бастапқыдаhL<hRболса, онда жаңа түйін қосылғаннан кейін екі жақ тең болады да, баланстылық жақсаратүседі.

  • Егер бастапқыдаhL>hRболса, онда баланстылық критериі бұзылады, ағашты қайта құруқажет.

Ағаштан түйінді өшірудеең бірінші орындалатын операция өшірілетін объект орналасқан түйінді (r[MI,*pi]) немесе жапырақты іздеу (list[MI,*pi]) . Іздеу жоғарыда берілгендей түбір түйіннен басталады. Іздеу нəтижесінде өшірілетін объект индексіне тең мəнді түйін немесе жапырақ табылса, онда нұсқағыш арқылы жады ұяшығындағы мəн анықтылынып , өшіріледі ((s[MI,*pi]–>delete)). Осыған байланысты, түйінді өшіруді орындаудың

күрделілік уақыты

O(log2N)-ға тең болады. Жадыдағы мəнді өшіру

орындалғаннан кейін түйіндегі нұсқағыш орнынаNULL-мəні жазылады (s[MI,NULL]). Егер іздеу жапыраққа дейін жалғасып, қажетті объект табылмаса, онда нəтижеNULLмəнін қайтарады (s[MI,*pi]=>NULL).

Ескерту.Ұсынылып отырған құрылым аналитикалық деректер қоймасына

арналып əзірленгендіктен, аналитикалық өлшемдер өзгермейді немесе өте сирек өзгеретіндіктен ағаш құрлымына жаңа түйін қосудағы күрделілік жиі бола бермейді, сонымен қатар деректер қоймасынан жазба өшірілмейді. Сондықтан ағаш құрылымында түйіндер де, түйіндердегі нұсқағыштар арқылы алынатын жадыдағы жазбалар даөшірілмейді.

Егер түйіндер қосу немесе өшіру ағаш балансының бұзылуына алып келсе, онда оны баланстау орындалады. Баланстың бұзылуын түйіннің баланстылығы коэффиценті арқылыанықтаймыз.

Түйіннің баланстылық коэффиценті– бағыныңқы оң жəне сол жақ бұтақтардың биіктік бойынша айырмашылықтары. Банастрылған бинарлы ағаштың баланстық коэффиценті{-1, 0, 1}жиынының бір мəнін қабылдайды.

Ағаш биіктігі (h) –оның түбір түйінінен жапрыққа дейінгі ең ұзын жолы.

Егер кез келген ата-аналық түйін -2 немесе 2 баланстық коэффицент мəнін қабылдаса (тең болса), онда бағыныңқы бұтақтарды бұру арқылы баланстауды орындау қажет. Ұсынылып отырған құрылымда баланстау AVL- ағашындағыдай бір рет оңға бұру (R-бұру), бір рет солға бұру (L-бұру), екілік солға-оңға бұру (LR-бұру), екілік оңға-солға бұру (RL-бұру) арқылы орындалады. Баланстрылған бинарлы ағашы бойынша бұрулар арқылы баланстау 117-əдебиетте берілген.

Агрегациялық көрсеткіштерді іздеу тиімділігін бағалау.Көп өлшемді баластырылған бинарлы ағаш жүзеге асырылуы жеңіл, бірден есептеу аяқталғаннан кейін өздігінен құрылады. Мұнда, жаңа элементтер қосылған жағдайда баланстауға ғана күш жұмсалынады. Зерттеу жұмысы тапсырмаларының бірі, аналитикалық деректерге тиімді қатынау алгоритімін əзірлеу болғандықтан əзірленген құрылым бойынша деректерді іздеу

күрделілігін анықтау маңызды. Іздеу нəтижесіндегі ең жақсы жағдайда ізделінетін мəн ағаш құрылымының түбір түйінінде сақталынады. Түбір түйін жедел жадыда орналасқандықтан индекс бойынша іздеуде сыртқы жадыға қатынау тек нұсқағыш бойынша агрегациялық мəнді алуда ғана жүзеге асырылады. Ең жақсы жағдайда іздеу асимптотикалық уақыттық күрделілігі бойыншаО(1)-гетең.

Баланстрылған бинарлы ағаш бойынша индексті іздеу кезіндегі дискі беттеріне қатынау ағаш биіктігіне тең:

O(h)=O(log2N) (3.15)

мұндағы,h- баланстрылған бинарлы ағаш биіктігі,N-бірдей мөлшердегі индекстер бойынша құрылған ағаштағы түйіндер саны.

    1. -суретте көрсетілгендей бір көп өлшемді индекске уникалды бір ғана агрегациялық көрсеткіш сəйкес келеді, бұл дегеніміз əр бір деңгейге сəйкес агрегациялық көрсеткіштер саны (N) сол деңгейдегі көп өлшемді индекстер санына тең (N = |{[MI]}|). Сонымен, агрегациялық деректерге қатынауға арналған бірдей мөлшердегі көп өлшемді индекстік баланстрылған бинарлы ағаш құрылымы үшін қажет етілетін жады ресурстарын, орындалатын операциялар орташа жағдайдағы күрделіліктерін келесідегідей бағалауға болады:

Қажет етілетін жады көлемі:O(N)Агрегациялық деректерді іздеу:O(log2N)Түйін қосу:O(log2N)

Түйінді өшіру:O(log2N)

Көп өлшемді баланстрылған бинарлы ағаш құрылымының AVL-ағышынан немесе баланстрылған бинарлы ағашы құрылымынан айырмашылығы:

  • Түйін элементтері құрлымы өзгеше: AVL үшін түйін [key,value], ал көпөлшемдібаланстрылғанбинарлыағашта[MI,*pi].

  • Кілт мəндері көпөлшемді.

  • Түйінде қандайда бір сандық немесе символдық мəн сақталынбайды, мəн сақталынған жады ұяшығына нұсқағышорналастырылады.

Жоғарыда ұсынылғанN-түйіннен тұратын іздеудің баланстрылған бинарлы ағаш құрлымы бойынша сыртқы жадыдағы агрегациялықдеректерді

іздеу үшін орта есеппен

log2N

рет сыртқы жады блоктары беттерінеқатынасу

қажет болған еді. Егер іздеудің баланстрылған бинарлы ағашы орнынаm-арлы

(көп тармақты) іздеу ағашын қолдансақ, онда сыртқы жады беттеріне

logmN

рет ғана қатынасу талап етіледі. Мысалы,N=106болған жағдайда бинарлы ағаш бойынша іздеуде жады беттеріне 20-рет қатынасуды орындаймыз, ал егер 128-

арлы іздеу ағашын қолдануда 3-қатынасу болады (log1281 000 0003) .

Көп тармақты іздеу ағашы ретінде B-ағашы əзірленген. Бұл ағаш бір өлшемді индекстерге (кілттерге) арналған. Көп өлшемді индекс бойынша əзірленген деректер құрлымы R-ағашы екенін жоғарыда айтқанбыз. R-ағашы В-

ағашы нұсқасы B+-ағашы негізінде құрылған. Түйіндерде көп өлшемді индекс жəне астыңғы бұтаққа (ұрпақ түйінге) сілтеме орналастырылады, ал жапырақтарда көп өлшемді индекстен жəне ақырғы объектіге (жадыдағы мəнге) сілтеме орналастырылады. Келесіде, біз агрегациялық деректерге көп өлшемді индекстер бойынша тиімді қатынауға арналған В-ағашының көп өлшемді индекстік нұсқасын құрудықарастырамыз.

В-ағашы– дискілік жадылармен тиімді жұмыс жасауға арналып құрылған, көп тармақталған, іздеудің банастрылған ағаш түріндегі құрлымы. Сыртқы дискілік жадылардың баяу жұмыс жсауына байланысты, деректерді іздеуде жады беттеріне аз қатынасу мақсатында əзірленген.

Бұл жұмыста ұсынылатын кілт мөлшерлері бойынша топтастырылған көп өлшемді баланстрылған B-ағаш түріндегі құрылым аналитикалық деректерді іздеудің иерархиялық құрылымының ішкі құрылымы болып табылады. Көп өлшемді баланстырлған бинарлы ағаш құрлымы сияқты бұл ағаштада0-денn- ға дейінгі аралықтағы деңгейлердің əр қайсысы үшін көп өлшемді индекс мөлшеріне байланысты жеке-жеке құрылымұйымдастырылады.

Көп өлшемді баланстрылған В-ағашы.Ағаш құрлымы түбір түйіннен, ішкі түйіндерден жəне жапырақ түйіндерінен тұрады. Құрылымның ішкі түйіндері бұтақ арқылы жалғасады. Егер бұтақта түйін орналасқан болса, онда ол ары қарай бұтақтармен тағы жалғасады. Бұтақтарда ішкі түйіндер немесе жапырақтар орналасуы мүмкін. Əр бір ішкі түйін көп өлшемді индекстерден ({MI}көп өлшемді индекстер), агрегациялық көрсеткіш сақталынған жадыұяшығына нұсқағыштардан ({*pi}) жəне ұрпаққа сілтемелерден ({&ch})

тұрады:

{[MI,*pi,&ch]}([MI] = {[MI1], [MI2], [MI3],..., [MIm]}) немесе

[111...1,*p1,&ch],

[111...2,*p2,&ch],

[111...3,*p3,&ch]...[k1k2k3...kn

,*p

k k k

1 2 3

...kn

,&ch]

. Мұндағы əр бір көп өлшемді индекстердің мөлшері индекске кіретін өлшем элементтерінің ішкі деңгейіне сəйкес анықталынады, Мысалы,2-деңгейдегі көп

өлшемді индекстердің мөлшері

[11,*p1,&ch],

[12,*p2,&ch],

[13,*p3,&ch]...

[k1kn

,*p

k k

1n

,&ch],3-деңгейдегі көп өлшемді индекстердің мөлшері[111,*p1,&ch],

[112,*p2,&ch],

[113,*p3,&ch]...[k1k2kn,*pk1k2kn,&ch]

жəнет.б. Егербұтақта

жапырақорналасқанболса,ондаоданарықарайжалғасуболмайды.Əрбір

жапырақ келесі элементтерден тұрады: көп өлшемді индекстен

[MI]

жəне

агрегациялық көрсеткіш сақталынған жады ұяшығын көрсеткіштен[*pi].

Жапырақта ары қарай жалғасу болмайтындықтан құрылым элементтеріне

сілтеме[&ch]кірмейді.

Көп өлшемді баланстрылған В-ағашы келесі қасиеттерге ие болуы шарт:

  • Түбір түйін мен жапырақ түйіндерден басқа түйіндерm-нен кем емес жəнеM-нен көп емес бұтақтардан тұруықажет.

  • Түбір түйін жапырақ болуы мүмкін, егер жапырақ болмаса онда оның кемінде екі ұрпағы болуы керек. Түбір түйінге кіретін максималды элементтер саныM-меншектелінеді.

  • Əр бір түйінде кемінде бір көп өлшемді индекс болуы жəне индекстер сұрыпталған болуықажет.

  • Жапырақтан басқа кез келген түйін анықталған мөлшер санына тең кілттерден{[MI1], [MI2], [MI3],..., [MIm]}, кілттерге сəйкеснұсқағыштардан

{*p1,*p2, *p3,..., *pm,}, ұрпаққа сілтемелерден{&ch1, &ch2, &ch3,..., &chm, &chm+1}

жəне кем кегендеm+1ұрпақтан тұрады. Сонымен бірге:

  1. Бірінші бұтақ жəне оның барлық ұрпақтары (–∞,MI1) аралығындағы кілттердіиемденеді.

  2. 2 ≤ i ≤ mаралығы үшін,i-шы бұтақ жəне оның барлық ұрпақтары (MIi-1,MIi)

  3. (m+1)-шы бұтақ жəне оның ұрпақтары(MIm,)аралығындағы кілттерді иемденеді.

  • Барлық жапырақ түйіндер бір деңгейде орналастырылады. Бұл ағаш құрылымдарының баланстрылғандығының бастыбелгісі.

  • Бір көп өлшемді индекс құрылымда бір рет қанаорналастырылады.

  • Түбірден кез келген жапырыққа дейінгі барлық жол ұзақтығы бірдей. Көп өлшемді баланстрылған В-ағашы түріндегі іздеу құрылымы3.8-

суретте көрсетілген.

Сурет 3.8 – Агрегациялық деректерге қатынауға арналған көп өлшемді баланстрылған сильно ветвистиые ағаш құрылымы

Ұсынылып отырған құрылым сыртқы жадыда жұмыс жасауға арналған. Құрылымдағы əр бір түйін дисктегі бір бетке (page of disk) сəйкес келеді. Индекстік құрылым сақталынатын сыртқы жады кеңістігін пайдаланудың ең нашар жағдайындаm/M-болады. Əдетте, дискілік жадыдағы бір бетмөлшері

211-ден214байттар аралығында болады. Ағаш құрылымын құру алгритмі бір түйіндеm-нан көбірек жазба сақтауға ұмтылады. Бұл ағаш биіктігін азайтады жəне жадыны тиімді пайдалану мүмкіндігін арттырады.

Құрылым бойынша іздеу.Деректерді іздеу түбір түйіннен(r{[MI,*pi,{&ch}]})төмен қарай жапырақ түйіндерге өту, кілт мəндерін салыстыру арқылы жүргізіледі. Егер бізге қандай да бір[MIx]индексін табу қажет болса, онда іздеу процедурасы (s[MIx] = r{[MI]})түбір түйіннен бастап астыңғы бұтақтарға өту арқылы ізделінетін индекс мəніне тең мəні бар түйін табылғанша тік жүре отырып ішкі түйіндермен жапырақ түйінге дейін өтуді орындайды. Жоғарыдан төмен қарай түсу кезінде өту орындалатын əр бір түйінде қанша ұрпақ түйін бар болса, солардың бірінm[MI]+1таңдау қажет болады. Бұл құрылымда ұрпақ түйіндер индекстер арасына (ортасына) орналастырылады. Түйіндердегі{[MI1], [MI2], [MI3],..., [MIm]}индекс мəндері үшін[MIi] < [MIx] < [MIi+1]болса, онда ағымдағы түйінді жедел жадыға шығарамыз жəне түйіндегі көп өлшемді индекске сəйкес келетін нұсқағыш арқылы жады ұяшығындағы агрегациялық көрсеткіш ізделінген индекс мəнімен бірге қайтарылады (s[MIx,*pi]–>Sall). Егер ізделінген мəн табылмаса,NULL-мəні қайтарылады (s[MIx,*pi]=NULL).

Деректерді іздеуде дискіге қатынасу саны орташа есеппен ағаш биіктігіне

(h) пропорционал.Nтүйіннен тұратын құрылымның биіктігін ағаш түріндегі құрылымдар қасиеттеріне сəйкес бағалауға болады. Ағаш түйіндеріm-нен кем емес жəнеM-нен көп емес ұрпақтардан тұратынын ескерсек, онда көп өлшемдібаланстрылған В-ағашы ең үлкен биіктгіh=logmN, ал ең төмен болатын

биіктігіh=

logM

N. Іздеу нəтижесіндегі ең жақсы жағдайда ізделінетін мəн

ағаш құрылымының түбір түйінінде сақталынады. Түбір түйін жедел жадыда орналасқандықтан индекс бойынша іздеуде сыртқы жадыға қатынау тек нұсқағыш бойынша агрегациялық мəнді алуда ғана жүзеге асырылады. Ең жақсы жағдайда іздеудің асимптотикалық уақыттық күрделілігі бойыншаО(1)-ге тең.

Сонымен, көп өлшемді баланстрылған В-ағаш бойынша индексті іздеу кезіндегі дискі беттеріне қатынау ағаш биіктігіне тең:

O(h)=O(logmN) (3.16)

мұндағы,h- баланстрылған бинарлы ағаш биіктігі,N-бірдей мөлшердегі индекстер бойынша құрылған ағаштағы түйіндер саны,m-түйіндегі ұрпақ (бұтақ) саны. Ал, индекске сəйкес агрегациялық мəнді табудың орташа уақыты,

O(h+1)=O(logmN) (3.17)

Құрылымғажаңа түйін қосу жəне өшіруоперациялары В-ағашымен бірдей орындалады. Егер ағаш құрылымына[MIx]кілттен тұратын қандайда бір жаңа жазба (new_record[MIx,*pi]) қосу керек болса,алдымен жаңа жазба

жататын түйінді

(r{[MI,*pi,&ch]})

іздеу жүргізіледі. Егер түйінінде

(r{[MI,*pi,&ch]})

жаңа жазбаны қосатын орын бар болса, жазба белігілі ретпен

жазылады. Бұл жағдайда, түйінге қосымша түзетулер мен өзгертулер енгізу талап етілмейді.

Егер түйін блогында (new_record[MIx,*pi,&ch]) жазбасы үшін орын жоқ болса, жаңа түйін(new_r{[MI,*pi,&ch]})'құруға сұраным жасалынады. Жаңа түйін құру толық түйінді жарты жазбадан бөлу арқылы жүзеге асырылады. Сонда, жаңа жазбаны (new_record[MIx,*pi]) қоса отырып(new_r{[MI,*pi,&ch]})түйінінің аяқ жағындағы жарты жазбасын жаңа(r{[MI,*pi,&ch]})'түйінге бөліп аламыз. Айталық,(p{[MI,*pi,&ch]})түйіні(r{[MI,*pi,&ch]})түйінінің ата-анасы. Іздеу процедурасы түбірден жапыраққа дейін іздеу жүргізгенде(p{[MI,*pi,&ch]})түйінінен жүріп өткені белгілі. Енді,(p{[MI,*pi,&ch]})-ғаMIx-

индексін,*pi-нұсқағышын жəне&chсілтемесін орналастыру үшін қосу процедурасын пайдалануға болады.(r{[MI,*pi,&ch]})'түйініндеMIx-индексі мəні ең кіші болғандықтан түйін индекстерінің соңынақойылады.

Егер кілт мəні[MIx]-қа тең (record[MIx,*pi,&ch])-жазбаны өшіру қажет

болса, алдымен жазба орналасқан түйінді

(r{[MI,*pi,&ch]})

табу қажет, содан

кейін түйіннен жазбаны өшіру жүзеге асырылады. Егер(record[MIx,*pi,&ch])-

жазба

(r{[MI,*pi,&ch]})түйініндебіріншіорналасқанболса,

(r{[MI,*pi,&ch]})

түйіні үшін бірінші кілт мəнін жаңадан орнату үшін(p{[MI,*pi,&ch]})-аталық түйінге өтеміз ((p{[MI,*pi,&ch]})түйіні(r{[MI,*pi,&ch]})үшін аталық түйін). Осылайша,(r{[MI,*pi,&ch]})-түйінінен түбір түйінге қарай кері бағыттағы жол бойымен өзгерісті тарату қажет.

Агрегациялық деректерге қатынауға арналған көп өлшемді индекстік баланстрылған В-ағаш құрылымы үшін қажет етілетін жады ресурстары, орындалатын операциялардың орташа күрделіліктері келесідегідей:

Қажет етілетін жады көлемі:O(N)Агрегациялық деректерді іздеу:O(logmN)Түйін қосу:O(logmN)

Түйінді өшіру:O(logmN)

В-ағашы негізінде құрылған көп өлшемді баланстрылған В-ағаш құрылымының R-ағышынан айырмашылығы:

  • Түйін элементтері құрлымында, R-ағашында түйін[MBR,ұрпақ_түйінге_сілтеме], ал көп өлшемді баланстрылған B-ағашта[MI,*pi,&ch].

  • R-ағашында деректерге қатынау тек жапырақ түйіндерде орындалады, ал ұсынылып отырған құрылымда кез келген түйінде жүзеге асырылуы мүмкін. Бұл іздеудің ең жақсы жағдайы бойынша R-ағашымен салыстырғанда тиімді жұмыс жасайтынынкөрсетеді.

Аналитикалық деректерге тиімді қатынау алгоритімін əзірлеу.Индекс мөлшерлері бойынша топтастырылған иерахиялық көп өлшемді индекстік ағаш құрылымдары бойынша гиперкуб деректерін алу кезіндегі сұранымдарды орындау арнайы əзірленген алгоритм арқылы жүзеге асырылады. Иерархиялық құрылымның əр бір деңгейі жеке ішкі құрылымдар ретінде ұйымдастырылады. Жоғарыда ішкі құрылымдардағы көп өлшемді индекстер бойынша тиімді іздеуді ұйымдастыруға арналған көп өлшемді индекстік баланстрылған бинарлы ағашы жəне көп өлшемді баланстрылған В-ағашы құрылымдарын əзірлеуді қарастырған болатынбыз. Келесі, арнайы əзірленгенn-деңгейден тұратын иерархиялық құрлым арқылы аналитикалық деректерге тиімді қатынау алгоритмі жүзеге асырылуын қарастырамыз. Иерархиялық құрылымда, деңгейлер көп өлшемді индекстер мөлшерлері бойынша бөлінген. Аналитикалық талдау барысында пайдаланушы сұранымы негізінде индекстер қалыптастырылып, индекстер мөлшері бойынша деңгей анықталынады. Деңгей анықталғаннан кейін онда өту орындалып, ары қарай іздеу операциясы ішкі құрылымда жалғасады. Ішкі құрылым ретінде əзірленген ағаш құрылымдардың əр бір деңгейге сəйкес келетін түбір түйіндері жедел жадыда орналастырылады. Топтастырылған көп өлшемді индекстік ағаш құрылымы бойынша гипертекше деректеріне қатынау алгоритмі келесідегідей негізгі қадамдардантұрады:

1– гипертекшеден алынатын қимадағы өлшемдер бойынша көп өлшемді индекстерді қалыптастыру. Көп өлшемді индекске кіретін кілттердің орналау ретін тексеру. Егер кілттердің орналасуы құрылымдағы ретке сəйкес келмесе ([k3k2k1...kn]) орындарын алмастыру арқылы реттеу ([k1k2k3...kn]);

  1. – қимада қолданылатын өлшемдер санына сəйкес келетін иерархиялық құрылым деңгейіне өту(0,1,2,3,...,n);

  2. – өту орындалған деңгейдегі ағаш құрылымынан 1-қадамда қалыптастырылған индекстер бойынша іздеу жүргізіледі. Егер егер ізделінген көп өлшемді индекс мəніне тең түйін индексі табылса индекспен бірге агрегациялық мəн қайтарылады ([MIx,*pi]–>Sall), ал көп өлшемді индекс мəніне тең түйін индексі мəні табылмаған жағдайдаNULL-мəніқайтарылады.

  3. – іздеу нəтижесінде алынған деректерді гипертекше қимасына шығару. Əзірленген құрылымдар бойынша аналитикалық деректерге тиімді қатынау алгоритмдерінің блок-сұлбалары 3.9 жəне 3.10 - суреттерде берілген. 3.9- суретте көп деңгейлі иерархиялық құрылымға кірістірілген ішкі көп өлшемді индекстік баланстрылған бинарлы ағашы құрылымдары арқылы аналитикалық деректерге тиімді қатынау алгоритмі блок-сұлбасы келтірілген. 3.10-суретте көп деңгейлі иерархиялық құрылымға кірістірілген ішкі көп өлшемді баланстрылған В-ағашы құрылымдары арқылы аналитикалық деректерге тиімді қатынау алгоритмі блок-сұлбасыберілген.

Сурет 3.9 – Көп деңгейлі иерархиялық құрылымға кірістірілген ішкі көп өлшемді индекстік баланстрылған бинарлы ағашы құрылымдары арқылы

аналитикалық деректерге тиімді қатынау алгоритмі блок-сұлбасы

Сурет 3.10 – Көп деңгейлі иерархиялық құрылымға кірістірілген ішкі көп өлшемді баланстрылған В-ағашы құрылымдары арқылы аналитикалық

деректерге тиімді қатынау алгоритмі блок-сұлбасы

Алгоритмдердің орындалу тиімділіктерін анықтау.Алгоритм тиімді деп есептелінеді, егер одан жылдам жұмыс жасайтын алгоритм болмаса [39]. Алгоритмнің тиімділігін бағалау үшін алгоритмнің күрделілігін анықтау пайдаланылады. Ақпараттық технологиялар саласындағы ғалымдар алгоритмдерді бағалаудың объективтілігін жоғарылату үшін алгоритмнің орындалуының тиімділігінің негізгі өлешмі ретінде асимптотикалық уақыттық күрделілікті қабылдаған болатын.

Алгоритмнің күрделілігі– шешілетін тапсырма көлеміне байланысты талап етілетін ресурстардың (уақыт немесе қосымша жады көлемі) өлшемдік көрсеткіштері қатарын беретін мəн [118]. УақыттықT(N)жəне кеңістіктікV(N)алгоритм күрделілігі. Кеңістіктік күрделілік уақыттық күрделілікке балама түрде қаралатындықтын бұл жұмыста алгоритмнің тиімділігі уақыттық күрделілік бойынша бағаланады.

Ұсынылып отырған аналитикалық деректерді іздеу алгоритмдерінің жұмысы екі сатыдан тұрады, бірінші иерархиялық құрылым деңгейлеріне өтулерді қорындау. Бұл қадам барлық жағдайда бір операциямен, индекс мөлшерінің иерархия деңгейімен сəйкестігін салыстырумен орындалады. Орындалудың уақыт күрделілігіO(1)-ге тең. Іздеудің екінші сатысында ішкі құрылым бойынша іздеуді жүргізу. Əзірленген екі ағаш құрылымдарының деректерді іздеудегі күрделіліктері əр түрлі. Көп өлшемдібаланстрылған

бинарлы ағаш үшін орташа күрделілік

O(log2N), ал көп өлшемді

баланстрылған В-ағашы үшін іздеудің орташа күрделілігі

O(logmN).

Иерархиялық құрылым бойынша деректер қоймасындағы агрегациялық деректерді тиімді іздеу алгоритмінің күрделілігін қарастыратынболсақ.

Барлық агрегациялық деректер индекстер мөлшерлері бойынша топтастырылған. Егер мүмкін болатын барлық агрегациялық деректердіN-деп белгілесек, индекстердің мүмкін болатын мөлшеріn-ға тең, сонда иерархиялық құрылымның əр бір деңгейінде орта есеппенN / n -агрегациялық деректер болады. Демек, ізделінетін деректер көлемінn-есе азайтамыз. Осыдан, көп өлшемді баланстрылған бинарлы ағаш бойынша іздеудің күрделілігінкелесідегдей жазуға болады,T(N)=O(log2(N/n)). Бұл ішкі құрылымыныңкүрделілігі. Иерархиялық құрылым деңгейлеріне өту мен ішкі құрылым күрделілігін қосу арқылы іздеу алгоритмнің күрделілігін алуға болады. Ішкі құрылым баланстрылған бинарлы ағаш құрылымы бойынша ұйымдастырылған жағдайда алгоритмнің орташа орындалу уақыты (Tmid(N))күрделілігі келесідегідей болады:

Tmid(N)=O(1log2(N/n))

(3.18)

мұндағы, 1 саны иерархиялық құрылым деңгейіне өтудегі операция саны,

алlog2(N/n)

ішкі құрылым бойынша іздеу күрделілігі.

Ішкі құрылым көп өлшемді баланстрылған В-ағаш құрылымы бойынша ұйымдастырылған жағдайда алгоритм күрделілігі келесідегідей болады:

Tmid(N)=O(1logm(N/n))

(3.19)

мұндағы, 1 саны иерархиялық құрылым деңгейіне өтудегі операция саны,

алlogm(N/n)

ішкі құрылым бойынша іздеу алгоритмінің уақыт күрделілігі.

Іздеу алгоритмінің ең жақсы жағдайы бойынша қарастыратын болсақ, онда деректер жиыны ең жақсы болып саналады, егер ізделінетін көп өлшемді индекс бірінші алгоритмдік ұяшықта орналасқан болса. Мұндай жағдайда алгоритм күрделілігіне қарамастан екі салыстырыу орындаймыз. Бірінші иерархия деңгейіне өтудегі салыстыру, екінші ішкі құрылымның түбір түйініндегі салыстыру. Ең жақсы жағдайдағы алгоритмның орындайдтын жалпы ізеу уақытыTmin(N) = O(2).Екі операция біріншісі иерархия деңгейіне өтудегіT1(N)=О(1),ал, екіншісі ішкі құрылымның бірінші ұяшығындағы салыстыру операциясыT2(N)=О(1). T1(N)жəнеT2(N)біріктірудің ең жақсы жағдайдағы орындалу уақыты(Tmin(N)):

Tmin(N)=О(max(2)) (3.20)

3.20-формулада берілген уақыттық күрделілік жоғарыда əзірленген алгоритмдердің екеуі үшін де бірдей.

Өсу жылдамдығы бойынша көрсеткіштер.Кіріс мəліметтері санының өсуіне байланысты орындалатын операциялар санының өсу жылдамыдығын нақты білу үлкен рөл атқарады. Алгоритмнің тиімділігі азғантай кіріс деректерінен білінбеуі мүмкін, бірақ кіріс деректерінің өсуінен тиімділік көрсеткіштері өзгерістерін нақты көруге болады. Жоғарыда əзірленген алгоритмдердің кіріс деректері өсуіне байланысты тиімділік көрсеткіштерін кестемен жəне графикпен беруге болады. Тиімділік көрсеткіштерін салыстырмалы түрде бағалау үшін əзірленген алгоритмдер күрделіліктерінен (O(1+log2N/n), O(1+logmN /n)) басқа, осы уақытқа дейін əзірленген деректерге тиімді қатынау құрылымдары AVL-ағашы (O(log2N)), R-ағашы (O(logmN)), k-d- ағашы (O(log(N))) күрделіліктері алынады. Бағалау логарифмдік функциялармен берілген асимптотикалық уақыттық күрделіліктерімен ұсынылады. 3.11-суретте алгоритмдердің орташа жағдайлардағы тиімділік көрсеткіштеріберілген.

3.11–суреттегі алгоритмдер күрделіліктерінің өсу жылдамдықтары графигіндеx-өсі бойынша кіріс деректері саны, алy-өсі бойынша орындалу уақыты бойынша күрделілік берілген, сонымен қатарy-өсі функциялардың өсу жылдамдықтарын көрсетеді. Графикте берілген функциялардың өсу жылдамдықтары əр түрлі. Зерттеу жұмысында əзірленген алгоритмдердің орындалу уақыты бойынша күрделілігін беретінO(1+log2N/n)жəнеO(1+logmN/n)) функциялары өздерінің балама функцияларымен салыстырғанда баяу өседі. Мысалы, AVL-ағашы негізінде гипертекше деректерін іздеуге арнылып əзірленген көп өлшемді баланстрылған бинарлы ағашы бойынша іздеу алгоритмінің асимптотикалық уақыттық күрделілігін беретін (O(1+log2(N/n)))- функциясы AVL-ағашы бойынша іздеу алгоритмінің асимптотикалық уақыттық

күрделілігін беретін (O(log2N))-функциясынан баяу өседі. Сондай-ақ,B-ағашы

негізінде гипертекше

деректерін іздеуге арнылып əзірленген

көп өлшемді

баланстрылған В-ағашы бойынша

іздеу

алгоритмінің асимптотикалық

уақыттық күрделілігін беретін (O(1+logm(N/n)))-функциясы B+-ағашынегізінде

əзірленген

көп өлшемді индекті R-ағашы

бойынша іздеу

алгоритмінің

асимптотикалық уақыттық күрделілігін

беретін

(O(logmN))-функциясынан

баяу

Орындалууақыты

өседі. Бұдан гипертекше деректері ерекшеліктерін ескере отырып арнайы

əзірленген алгоритмдердің тиімдірек жұмыс жасайтынын көруге болады.

Кесте 3.1– Алгоритмдер күрделіліктерінің өсу жылдамдықтары

N

n

m

O(log2N) AVL-tree

O(1+log2N/n) new MAVL-tree

O(log(N))

(k-d-tree)

O(logmN) R-tree

O(1+logmN /n) new MB-tree

10

20

128

3

1

1

1

1

102

20

128

7

2

2

1

1

103

20

128

10

6

3

1

1

104

20

128

13

9

4

2

1

105

20

128

17

12

5

2

2

106

20

128

20

16

6

3

2

107

20

128

23

19

7

3

3

108

20

128

27

22

8

4

3

109

20

128

30

26

9

4

4

1010

20

128

33

29

10

5

4

Сурет 3.11– Алгоритмдер күрделіліктерінің өсу жылдамдықтары графиктері

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