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

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

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

  1. Əр түрлі деректер қорларынан деректерді іздеу шаблонын қалыптастыру;

  2. Шаблон бойынша іздеу жүргізу жəне іздеу нəтижесінде алынған массив түріндегі деректерді map-фазағаберу.

  3. Map-Reduce параллелді моделі арқылы əр түрлі таратылған түйіндердегі деректерді параллелдіөңдеу;

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

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

ақпараттың ресурстың ерекше түрі болып табылады [100 3-11 б.]. Сондықтан, іздеу шаблоны деректер қоймасындағы мета деректерді пайдалана отрырып, іздеу жүргізілетін ДБ деректерді сақтау құрылымы мен моделіне негізделініп əзірленуі қажет. Іздеу шаблонын қалыптастыруда алдымен бастапқы дереккөздері деректеріне қатынауды қарастырамыз. Деректер қоймасындағы өлшемдер мен өлшемдер элементтерін дереккөздерден қажетті мəліметтерді алуда сөздік ретінде пайдаланылады.

Реляциялық моделде құрылған ДБ-да деректер толық құрылымдандырылған түрде сақталынады жəне бұл моделде құрылған барлық ДБ SQL сұраным тілі арқылы жұмыс жасайды. Аталған моделдегі ДБ-ларына қажетті өңдеулер SQL командалары көмегімен жүзеге асырылады. Заманауи реляциялық ДББЖ-лерінде кез келген құрылымдандырылған деректерге қатынау, күрделі өңдеулерді жасауға мүмкіндік беретін бай SQL тілімен қатар түрлі аналитикалық функциялар əзірленгендіктен қажетті аналитикалық деректерді алу, түрлендіру, жүктеу дайын командалар арқылы оңай орындалады.

Құжат-бағытталған жəне баған-бағытталған ДБ-лары деректеріне қатынауда массив мүмкіндіктері қолданатындықтан, деректерге [r90 NoSQL туралы кітап] қатынау кілт арқылы орындалады. Осыған байланысты ассоциативті массив түрінде ұйымдастырылған деректерден қажетті аналитикалық деректерді "кілт" арқылы іздеу шаблоны əзірленеді. Деректерді іздеу шаблонына кілт мəндері арнайы əзірленген сөздіктен, ал ДБ-лар туралы ақпарат метадеректерден алынады. Дегенмен, таңдап алынған моделдерде массив түріндегі деректерге іздеу жүргізу жəне іздеу нəтижесінде табылған деректерді алу біркелкі жүзеге асырылмайды, сондықтан əр моделге арналған жеке ішкі əдістер əзірлеу қажет. NoSQL ДБ-лары ауқымды деректерді бір бірінен тəуелсіз таратылған түйіндерде сақтауға арналғандықтан іздеу нəтижесінде алынған мəліметтердің MapReduce параллелді моделінде өңдеуге бейім болуы. MapReduce параллельді моделінің басты ерекшелігі – деректерді кілт-мəн түрінде өңдейді жəне ауқымды деректерді өңдеуде мыңдаған есептеу түйіндерін параллелді жүктеуге мүмкіндік береді [63, 75]. Осыған байланысты, MapReduce моделінің мүмкіндіктерін көлемі жағынан ауқымды жəне құрылымы жағынан əр түрлі болып табылатын дереккөздерден бастапқы аналитикалық деректерді қалыптастыруда (дайындауда) пайдалану үшін іздеу шаблоны арқылы алынған деректер кілт-мəн түріне болуышарт.

Метадеректер– əдетте деректер туралы деректер ретінде түсіндіріледі. Бұл тек деректер құрамын, ұсыну құрылымын (форматын), сақтау орнын жəне басқа да беліглерін сипаттау ғана емес, сонымен қатар ол деректерді қолдайтын ақпараттық жүйелерді, технологияларды, қатынау əдістерін сипаттау [100 5 б. ]. Метадеректерді құру қосымша жұмыс мен ресурстарды талап етеді. Бірақ, деректер құндылығын арттырып, оларды пайдаланудың көпетеген мүмкіндіктерімен қатамасыз етеді. Бұл жұмыста метадеректер əр түрлі ДБ- ларынан аналиикалық деректерді іздеу шаблонының əр бір ДБ құрылымына бағытталған (арнайы) нұсқаларын əзірлеу үшін қолданылады.

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

1 1 1 1

тұратын жиын деп аламыз:V= {{d1,d2,d3,...,dn},d1={m1,m2,m3,...,mk},d2

1

={m

2

,m22

,m32

,...,mk2

}, d3 ={m13

,m23

,m33

,...,mk3

},…,

dn{m1n,m2n,m3n,...,mkn}}. Мұндағы,V– сөздік,k1,k2,k3,...,kn- сəйкес

өлшемдердегі элементтер саны.

V- сөздіктегі өлшемдер саныn- ға тең, ал əр бір өлшемнің ішкі

i=1

жиындарындағы барлық элементтер санын қосынды түрінде берсек:nki.

Мұндағы,ki- сəйкес өлшемдердегі элементтер саны,i -1inаралығындағы

сандық мəн деп алсақ. Онда, сөздік қуаттылығын 1-формуламенанықтауға

болады.

n

|V|nki

i1

(2.6)

Деректерді жедел аналитикалық өңдеу деректерді көп өлшемді талдауға бағытталғандықтан, талдау деректерін əзірлеуде бір өлшемненn-өлшемдерге дейінгі мəліметтер өңделуі жəне олардың арасындағы қатынастарды беруді қажет етеді. Бұл деректерді көп өлшемді жедел талдау тұжырымдамасының басты ұстанымдардың бірі. Көп өлшемді деректер арасындағы өзара қатынастар бастапқы дереккөздерден анықталынып, ақырғы пайдаланушы сарапшы-маманға ұсынғанға дейін сақталынуы қажет. Бұл талапты жүзеге асыру үшін деректерді кілт арқылы іздеуде сөздіктегі өлшемдер жиыны бойынша 1 өлшемнен n-өлшемге дейінгі кілттер мөлшері (размері){(key1),(key2), (key3),..., (keyi),..., (keyp),…,(keyj),…, (keyn), (key1key2), (key1key3),(key1

key4),..., (keyikeyp),…, (keypkeyj) ,…, (keyjkeyn),...,(key1key2key3),(key1key2key4),

(key1key2key5) ,.., (keyikeypkeyj),…, (keypkeyjkeyn),..., (key1key2key3...keyn)}құрылады жəне барлық мөлшердегі кілттер бойынша іздеу жүргізіледі. Мұндағы,keyi, keyj, keyn- іздеуде пайдаланылатын кілт мəндері ретінде

алынатын сөздік элементтері, алi, p, j, n -1ipjn- аралығындағысандық

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

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

лары деректерді сақтау құрылымы мен моделіне негізделініп əзірленеді. Сөздік бойынша бір өлшемненn-өлшемдерге дейінгі іздеу шаблонын қалыптастыру келесі кезеңдерден тұрады.

- Өлшемдер бойынша іздеу шаблонын қалыптастыру.Бастапқы дереккөздерде деректер түрлі құрылымдарда болуына байланысты ізделінетін деректер кез келген мөлшерлерде болуы мүмкін. Осыған байланысты ДБ-на іздеу жүргізу шаблонын қалыптастыруда мүмкін болатын барлық мөлшерлер қарастырылуы қажет. Сөздікке жататын өлшемдер арқылы1өлшемненn-өлшем аралығында шаблон мөлшері (размері) əзірленетінін жоғарыда айтқан болатынбыз. Əр бір мөлшерге сəйкес келетін шаблонға өлшемдердің қайталаусыз комбинацияларынан тұратын бірнеше тізбек кіреді. Оларды бір мөлшерлі тізбектер жиыны деп қарастырамыз. Бір комбинацияға кіретін өлшемдер қайталанбауы қажет жəне бір мөлшердегі шаблонға кіретін комбинациялар да қайталаусыз болуы қажет. Бірдей деректердің қайталнып берілуі компьютер жадысынан қосымша ресурс алатыны белгілі, сол себепті сөздік элементтерінен құралатын іздеу шаблонындағы кілттік деректерді қайталаусыз беру қажет.

V- жиынындағы өлшемдер бойынша алынатын комбинациялар тізбектер жиыны (V*) болып табылады жəне əр бір мөлшердегі комбинациялар қуатынc-деп беліглесек. Мұндағы, əр бір мөлшердегі өлшемдер комбинациясы қуатыс- қайталаусыз терулергк сəйкес келеді. Демек, 1-денn- мөлшер (размер) аралығындағы шаблон элементтерін қайталаусыз теру тізбектері арқылы анықтауға толық негіз бар жəне əр бір мөлшердегі тізбектерге кіретін өлшемдер жиынының ретті қайталаусыз қойылуын теру қасиетімен анықтауға болады.

Анықтама 1. n- элементтен тұратын жиын берілсін.n-элементтен тұратынАжиынының кез келгенс- элементтен тұратын ішкі жиыныn-элементті жиынныңс-теруі деп аталады.n- элементті жиынныңс- терулер

n

саныCc

  • арқылы белгіленеді [102,103].

Осыған сəйкес, n-элементтен тұратынD-өлшемдер жиынынан барлық 1-

ден n-ға дейінгі қиысуларды жазатын болсақ:

n-элементті D - өлшемдер жиынының барлық 1 өлшемді терулері:

D{d1,d2,d3,...,dn}:{d1},{d2},{d3},...,{dn}.

n-элементті D - өлшемдер жиынының барлық 2-өлшемді терулері:

D{d1,d2,d3,...,dn}:{d1d2},{d1d3},{d1d4},...,{didj},...,{djdn}. Мұндағы,i, j, -

1ijn- аралығындағы сандық мəндер.

n-элементті D - өлшемдер жиынының барлық 3-өлшемді терулері:

D{d1,d2,d3,...,dn}:{d1d2d3},{d1d2d4},{d1d2d5},...,{didpdj},...,{dpdjdn}.

Мұндағы,i, p, j, n -1ip

...

jn- аралығындағы сандық мəндер.

n-элементті D - өлшемдер жиынының барлық n-өлшемді терулері:

D{d1,d2,d3,...,dn}:{d1d2d3...dn}.

Сөздік элементтері болып табылатын барлық өлшемдер бойынша мүмкін болатын барлық терулерді алу нəтижесінде қайталаусыз өлшемдер тізбектері

жиынын аламыз:

V *={{d1},{d2},{d3}

,...,{dn},

{d1d2},{d1d3},{d1d4},...,{didj}

,...,

{djdn},

{d1d2d3},{d1d2d4},{d1d2d5},...,{didpdj},...,{dpdjdn},...,

{d1d2d3...dn}}.

Егер əр бірс-теруден алынатын тізбекжиынын

*–депбелгілесек,

v

c

c

v

мұндағы жиынға кіретін əр бір тізбектің қуаттылығыс-ғатең. *

  • əр бірс-

v

v

теруден алынатын тізбек жиындарыV *– барлық терулер бойынша алынған

тізбектер жиынының ішкі жиыны болып табылады:V*

= {v*

* *,...,v*},

1

n

2 3

сəйкесінше жиынның əр бір элементі ішкіжиыннантұрады: v*={{d},{d},

1

{d3},...,{dn}},v*={{dd},{d d},{dd},...,{d d},...,{d d}},v*

1

={{d d

2

d},

2 12 13 14 i j

*

jn 3

1 2 3

{d1d2d4},{d1d2d5},...,{didpdj},...,{dpdjdn}},..., vn={d1d2d3...dn}.

Cөздікке кіретін өлшемдер жиыны бойынша əр бірс-теруден алынатын

тізбек саныс-терулер санынаCcтең, яғни | v*| =Cc.

n c n

Теорема 1. n-элементтен тұратын жиыннан алынатынс- терулер саны

C

c n! [103,104].

n c!(nk)!

Қиысу саны қасиетін пайдаланып, іздеу шаблонында қолданылатын

өлшемдерден алынған барлық тізбектержиынының

| V*|

қуаттылығын 1-ден

n-терулер сандарының қосындысымен анықтауға болады (2-формула):

| V* |=

C1+C2+C3+,...,+Cn

(2.7)

n n n n

Ескерту.Қайталаусыз теру саны қасиеттері бойынша,

C01n-элементті

n

n

жиынның ішкі бос жиыны ретінде қарастырылады [104]. Ескеретін жағдай, қарастырылып отырған сөздік бойынша деректерді іздеу шаблонында сөздік элементі болып табылатын өлшемдерден теру қасиеттері бойынша алынатын комбинациялық тізбектер іздеу барысында нақты жəне қажетті аналитикалық өлшемдік деректерді алу (салыстыру арқылы алу) үшін пайдаланылады. Егер бастапқы дереккөздерден іздеу барысында шаблон бос тізбек бойынша іздеу жүргізсе ешқандай аналитикалық деректердің болмайтыны белгілі. Сондықтан, біздің жағдайдаC01- қиысу қасиеті қарастырылмайды.

1-ден n-өлшемді іздеу шаблоны тізбектеріне сəйкес кілттік мəндердіқалыптастыру.Іздеу шаблонында кілттік мəндер ретінде өлшемдердің ішкі жиын элементтері алынады. Келесі қадам өлшемдер теруінен алынған қайталаусыз тізбектер бойынша ары қарай өлшемдердің ішкі жиындары элементтерінің қиылысуларынан тұратын бір өлшемнен n-өлшемге дейінгі барлық ішкі тізбектерді алу. Өлшемдердің ішкі жиыныd1=

{m11

,m21

,m31

,...,mk1},

d2={m

1

2

,m22

,m32

,...,mk2

},d3={m13

,m23

,m33

,...,mk3}

,…,

dn{m1n,m2n,m3n,...,mkn}

- түрінде берілетіні белгілі. Сөздіктегі өлшемдер

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

key11

m11,

key21

m21key31

m31,...,keyk1

mk1,

key12

m12,

key22

m22,

key32

m32,...,keyk2

mk2,key13

m13,

key23

m23key33

m33,...,keyk3

mk3,...,

key1m1,key2m2

,key3m3

,...,key m .

n n n

n n n

kn kn

Өлшемдердің қайтлаусыз тізбектерінен алынған іздеу шаблонындағы өлшемдер тізбектері бойынша өлшемдердің ішкі жиындарынан алынатын ішкі тізбектерді немесе кілттік тізбектерді қалыптастырсақ:

V *={{d1},{d2},{d3},...,{dn},

{d1d2},{d1d3},{d1d4},...,{didj},...,

{djdn},

{d1d2d3},{d1d2d4},{d1d2d5},...,{didpdj},...,{dpdjdn},...,{d1d2d3...dn}}.

{d1} ={key,key ,key ,...,key }, {d2} ={key ,key ,key ,...,key },

11 21 31 k1 12 22 32 k2

{d3} ={key ,

key ,

key ,...,

key }, ..., {dn} ={key1,key2,

key3,...,

key },

13

{d1d2}

23

= {(key

33

key

k3

), (key

key

), (key

key

n n

),..., (key

n

key

kn

)}, {d d} =

11 12

11 22

11 32

k1 k2 13

{(key key

), (key key

), (key key

),...,(key

key )}, {dd

} = {(key key

), (

11 13

11 23

11 33

k1 k3 14

11 14

key11key24), (key11key34),..., (keyk1keyk4)} ,..., {didj} = {(key1ikey1j), (key1ikey2j),

(key1ikey3j

),..., (key

kikeykj

)}, ...,

{dj

dn}={(key1j

key1n

), (key1j

key2n

),(key1j

key3n

),..., (keykjkeykn)},

{d1d2d3}={(key11key12key13), (key11key12key23), (key11key12key33),..., (

keyk1keyk2keyk3)},{d1d2d4}={(key11key12key14), (key11key12key24), (key11key12key34

),...,(keykey key

)},

{dd d}={(key

keykey

), (key keykey

), (

k1 k2 k4

1 2 5

11 12 15

11 12 25

key11key12key35), ..., (keyk1keyk2keyk5)}, ...,

{didpdj}

= {(key1ikey1pkey1j), (

key1ikey1p

key2j

), (key1ikey1p

key3j

), ..., (keyki

keykp

keykj

)},...,

{dpd

jdn}

={(

key1p

key1j

key1n

), (key1p

key1j

key2n

), (key1p

key1j

key3n

), ..., (keykp

keykj

keykn

)},

...,

{d1d2d3...dn}

= {(key11key12key13...key1n), (key11key12key13...key2n), (

key1key1key1...key3

) , ..., (key

key key ...key

)}.

1 2 3 n

k1 k2 k3 kn

Нəтижесінде кілттік тізбектер жиынын (Vkey) аламыз:Vkey={(key),(key ),

11 21

(key ), ...,(key ), ...,(key ), ...,(key ), ...,(key ), ..., (keykey ), (keykey ),

31 k1

k2 k3

kn 11 12

11 22

(key key

.), ..., (key key

), ...,(key key

), ..., (key keykey

), (key key key

11 32

ki kj

kj kn

11 12 13

11 12 23

), (key11

key12

key33

), ..., (keyki

keykp

keykj

), ..., (keykp

keykj

keykn

), (

keyk1keyk2keyk3...keykn)}

Келтірілген кілт тізбектеріндегі əр бір кілт мəндері гипертекше өсінің

белгілі бір координатасына сəйкес келеді

key11,

key ,

2

1

key

3

1

,...,

key ,...,key

,...,

key

,...,key

,key key

,keykey ,

k1 k2

k3 kn

11 12

11 22

key key

.,...,key key

,...,

keykey

,...,

keykeykey ,

11 32

ki kj

kj kn

11 12 13

key11

key12

key23,

key11

key12

key33

,...,

keyki

keykp

keykj

,...,

keykp

keykj

keykn

,...,

keyk1

keyk2

keyk3

...keykn

. Текше өсікоординаталары

сөздік ретінде алынған өлшемдер элементтері (members) арқылы анықталады.

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

=|Vkey|.

Барлық мүмкін болатын кілттік тізбектер саны барлық мөлшердегі (1- мөлшерденn-мөлшерге дейін) кілттік тізбектер сандарының қосындысына тең. Əр бір мөлшердегі кілттік тізбектер саны, сол мөлшердегі қайталаусыз терулер қасиеті бойынша алынған барлық өлшемдер комбинацияларынан алынатын кілттік тізбектер сандарының қосындысына тең. Ал, өлшемдердің əр бір комбинациясынан алынатын кілттік тізбектер саны комбинацияға кіретін өлшемдердің ішкі жиын элементтері сандарының көбейтіндісіне тең. Əр бір өлшемдегі ішкі жиын элементтері саныk1k2k3,..., kn– түрінде белгіленген. Онда, мүмкін болатын барлық кілттік тізбектердің санын келесідегідей түрде жазуға болады(2.8-формула):

n

Nvki

ki*kj

ki*kj

kp,...,k1*k2*k3*...*kn

(2.8)

i1 1ijn 1ijpn

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

Деректерді іздеу шаблонын жəне сөздіктерден алынатын тілдік тізбекті деректер қоймасы серверінде немесе бастапқы дереккөздер болып табылатын ДБ орналасқан түйіндерде қалыптастыруға болады.

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

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

Іздеу барысында тек шаблонға жəне сөздікте бар элементтерге сəйкес келетін деректер жұп жазбалардан тұратын "кілт-мəн" түріндегі тізімдерге келтіріліп, алынады. Кілттер сөздік арқылы қалыптастырылған тілдегі тізбектерге сəйкес келеді, ал мəн сандық көрсеткіш болады. Мəнді алу қойылған тапсырмаға сəйкес жүргізіледі. Іздеу барысында сөздік бойынша құрастылыған кілтке сəйкес табылған жазбадан сандық мəн алынады. Сандық мəн ретінде белгілі бір өрістегі нақты сандық көрсеткіштер, құжаттағы немесе өрістегі кілттік сөздер саны, жазбалар арасындағы байланыстар (мысалы, ДБ жазбалардың байланысы арқылы қатынастардың сандық көрсеткішін беру) жəне т.б. алынуымүмкін.

Қалыптастырылған шаблон бойынша деректерді іздеу.Қалыптастырылған кілттік тізбектермен салыстыру арқылы барлық ДБ- ларындағы жазбаларға іздеу (оқу) жүгізіледі де, тек сəйкес жазбалар ғана алынады. Жоғарыда айтылғандай деректерді іздеуде ассоциативті массив мүмкіндіктері қолданылады. Ассоциативті массивтің негізгі мүмкіндіктері деректерге "символ" жəне "жол" типіндегі кілттермен қатынауға мүмкіндік береді, сонымен қатар көп өлшемді кілттерді қолдайды. Өлшемдер жиыны жəне өлшемдер жиынының ішкі жиындары элементтері терулері бойынша алынған кілттік мəндер тізбектері ассоциативті массив кілттеріне сəйкес келетіндіктен деректерді іздеу жəне алу үшін ассоциативті массив мүмкіндіктерін пайдалануға толық негіз бар. Деректер массивінен қажетті1-өлшемненn- өлшемге дейінгі аналитикалық деректерді іздеу сұранымы образын қалыптасыру үшін шаблон бойынша алдын ала қалыптастырылған кілттік тізбектер пайдаланылады. Іздеу сұранымы образы нақты деректер құрылымына байланысты қалыптастырылуықажет.

Ұсынылып отырған шаблон бойынша NoSQL ДБ-ларынан іздеу əдісі іздеу нəтижесінде алынатын деректерді бір өлшемді жəне көп өлшемді "кілттерден" тұратын "кілт...->мəн" тізімі түрінде береді. Ідеу барысында кілттік мəндерден тұратын тізбектер жиыны элементтері ассоциативті массив кілттері мəндері ретінде пайдаланылады.1-денn-өлшемдерге дейінгі кілттер бойыншаіздеу

нəтижесін келесідегідей түрде жазуға болады:

massd1{[key11]value},

mass

{[key

]value},mass1{[key1]value},...,

mass{[key]value}

, ...,

1 1

d1 21 d 3 d k

massd

{[keyk]value}

mass {[key

]value}

mass {[key

]value}

2 2 ,...,

d3 k3

,...,

dn kn

, mass

{[key][key

]value},

mass {[key][key ]value}

,

12 1 2

d1d2

11 12

dd 1 2

mass

{[key

][key

]value},...,massi

{[key][key

j i

]value}

j

,...,

d1d2

11 32

dd k k

mass

{[key ][key

]value},

mass

1 2

{[key][key][key]value}

,

3 1 2 3

djdn

kj kn

d d d

1 1 1

mass

{[key][key ][key

]value},

mass

1 2

{[key][key ][key ]value}

3 1 2 3

d1d2d3

11 12 23

d d d

1 1 3

,...,massdidpdj{[keyki][keykp][keykj]value},

massdpdjdn{[keykp][keykj][keykn]

value},...,

massd1d3d3...dn

{[keyk1

][keyk2

][keyk3

]...[keykn

]value}.

Мұндағы,mass– массив атты,оның

d1d2d3...dn-төменгі индексі массив

мөлшерін (размерін) береді. Əр массив бір мөлшердегі кілттер мəндерін сақтайды. Бір кілтке сəйкес келетін бірнеше мəндер анықталынуы мүмкін, олардың барлығы тізімге жинақталынады. Жоғарыда келтірілген іздеу шаблонын қалыптастыру жəне шаблон бойынша бастапқы дереккөздерден аналитикалық деректерді алу сұлбасы 2.8 – суретте келтірілген.

Сурет 2.8 – Іздеу шаблонын қалыптастыру жəне шаблон бойынша бастапқы дереккөздерден аналитикалық деректерді алу сұлбасы

Келесі қадам алынған массив түріндегі деректерді MapReduce параллелді моделі бойынша өңдеу. Map Reduce моделі деректерді екі фаза, Map-фазасы жəне Reduce-фазасы бойынша өңдейді.

Іздеу нəтижесінде алынған деректерді Map-фазада өңдеу.Іздеу нəтижесінде алынған массив түріндегі деректер map фазаға кіріс деректері ретінде қабылданады.Map(f, l)фаза f – функциядан жəнеl– тізімнен тұрады. map-фазаға f - функция қабылданған тізімнің əр бірэлементін {mass[key] ->

value} бір-бірінен тəуелсіз

map{keyin,vin}-түрінде сақтайды. Бір түйінде

m m

бірнеше

map{keyin,vin}-функциясыныңэкземплярлары жүктелінеді жəне əрбір

m m

функция экземплярындағы "кілт" мəні іздеу нəтижесінде алынған массивтің бір

"кілті" мəніне сəйкес келеді:

mass{[key

]value}=>map{([keynew]in,vin)}

mass{[key

]value}

d1 11

11 m m ,

d1 21

=>map{([keynew]in,vin)}

mass{[key

]value}=>map{([keynew]in,vin)}

21 m m ,

d1 31

31 m m

, ...

massd{[keyk

]value}=>map{([keynew]in,vin)}

massd

{[keyk

]value}=>

1

{([

1

new]in,

in)}

k1 m m

,...,

2 2

newin in

map

keyk2

mvm

,...,

massd3{[keyk3]value}=>map{([keyk3

]m,vm)},...,

mass {[key ]value}=>map{([keynew]in,vin)},...,

dn kn kn m m

massdd{[key1][key1

]value}=>

map{([keynewkeynew]in,vin)},

12 1 2

11 12 m m

massdd{[key1][key2

]value}=>

map{([keynewkeynew]in,vin)},

12 1 2

11 22 m m

mass

{[key][key

]value}=>

map{([keynewkeynew]in,vin)},...,

d1d2

11 32

11 32 m m

mass

{[key][key

]value}=>

map{([keynewkeynew]in,vin)}

didj

ki kj

ki kj m m

,...,

mass

{[key ][key

]value}=>

map{([keynewkeynew]in,vin)} ,

djdn

kj kn

kj kn m m

mass

{[key

][key

][key

]value}=>map{([keynewkeynewkeynew]in,vin)},

d1d2d3

11 12 13

11 12

13 m m

mass

{[key

][key

][key

]value}=>map{([keynewkeynewkeynew]in,vin)}

d1d2d3

11 12 23

11 12

23 m m ,

mass

{[key

][key

][key

]value}=>map{([keynewkeynewkeynew]in,vin)}

d1d2d3

11 12 33

11 12

33 m m

,...,

massdidpdj{[keyki][keykp][keykj]value}=>

{([

new

new

new]in,

in)

map

keyki

keykp

keykj

mvm

,...,

massdpdjdn{[keykp][keykj][keykn]value}

=> {([

new

new

new]in,

in)

map

keykp

keykj

keykn

mvm

,...,

massd1d3d3...dn

{[keyk1

][keyk2

][keyk3

]...[keykn

]value}=>

{([

new

new

new'...

new]in,

in)}

map

keyk1

keyk2

keyk3

keykn

mvm .

Барлық

map{keyin,vin}- түріндегі деректер шығыс деректері болып,map-

m m

фаза орындалған түйінде сақталынады. Шығыс деректері келесідегідей түрде жазылады:

map{([keynew]out,vout)},

map{([keynew]out,vout)},

map{([keynew]out,vout)},...,

11 m m

21 m m

31 m m

{([

new]out,

out)}

new

out

out

new

out

out

map

keyk1

mvm

,...,

map{([keyk2

]m,vm

)},...,

map{([keyk3

]m,vm

)},...,

{([

new]out,

out)}

new

new

out

out

map

keykn

mvm

,...,

map{([key11

key12

]m,vm

)},

map{([keynewkeynew]out,vout)} map{([keynewkeynew]out,vout)}

11 22 m m ,

11 32 m m

,...,

map

{([

keynew

k

i

key

new]out,

m

kj

vout)}

,...,

map{([keynew

k

j

key

new

kn

outm

,vout

)},

m

m

]

map{([keynewkeynewkeynew]out,vout)},map{([keynewkeynewkeynew]out,vout)}

11 12

13 m m

11 12

23 m m ,

map{([keynewkeynewkeynew]out,vout)}

{([

new

new

new]out,

out)}

11 12

33 m m

,...,

map

keyki

keykp

keykj

mvm

,...,

{([

new

new

new]out,

out)}

new

new

new'

new

out

out

map

keykp

keykj

keykn

mvm

,...,map{([keyk1

keyk2

keyk3

...keykn

]m,vm

)}.

Əр бірmap()– функция арқылы барлық түйіндердегі ДБ-ларынан іздеу нəтижесінде алынған деректерді{key,value}- түріндегі тізімге келтіру əр түрлі құрылымда сақталынатын жəне түрлі моделде ұсынылатын деректерді біріктіре өңдеуге жəне бірегей құрылымға (форматқа) келтіруге мүмкіндік береді.

Деректерді Reduce-фазада өңдеу. Map-фазасынан алынған шығыс

деректермассиві map{keyout,vout}Reduce-фазасына кіріс деректеріретінде

m m

{ in,in}

reduce keyrvr- функциясына қабылданады. Кластердің барлықтүйіндерінде

бірдейreduce()- функциясы экземплярлары жүктелінеді.

map{([keynew]out,vout)}=>reduce{([keynew]in,vin)},

11 m m 11 r r

map{([keynew]out,vout)}=>reduce{([keynew]in,vin)}

21 m m

21 r r ,

map{([keynew]out,vout)}=>reduce{([keynew]in,vin)}

k

...,

31 m m

31 r r ,

{([

new]out,

out)}

newin in

map

k

...,

keyk1

mvm

=>reduce{([key

1

]r,vr

)},

{([

new]out,

out)}

newin in

map

...,

keyk2

mvm

=>reduce{([key

2

]r,vr

)},

{([

new]out,

out)}

newin in

map

...,

keyk3

mvm

=>reduce{([keyk3

]r,vr

)},

{([

new]out,

out)}

newin in

map

keykn

mvm

=>map{([keykn

]r,vr)}

map{([keynewkeynew]out,vout)}=>reduce{([keynewkeynew]in,vin)},

11 12 m m 11 12 r r

map{([keynewkeynew]out,vout)}=>reduce{([keynewkeynew]in,vin)},

11 22 m m 11 22 r r

map{([keynewkeynew]out,vout)}=>reduce{([keynewkeynew]in,vin)},

m

r

r

]

...,

11 32 m m

11 32 r r

map

...,

{([

keynew

k

i

key

new]out,

m

kj

vout)}

=>reduce{([keynew

k

i

key

new

kj

in,vin

)},

map

{([

keynew

k

j

key

new]out,

m

kn

vout)}

=>reduce{([keynew

k

j

key

new

kn

in,vin

)},

m

r

r

]

map{([keynewkeynewkeynew]out,vout)}=>reduce{([keynewkeynewkeynew]in,vin)}

11 12

13 m m

11 12

13 r r ,

map{([keynewkeynewkeynew]out,vout)}=>reduce{([keynewkeynewkeynew]in,vin)}

11 12

23 m m

11 12

23 r r ,

map{([keynewkeynewkeynew]out,vout)}=>reduce{([keynewkeynewkeynew]in,vin)},

11 12

33 m m

11 12

33 r r

...,

{([

new

new

new]out,

out)}

k

new

new

newin in

map

k

...,

keyki

keykp

keykj

mvm

=>reduce{([key

i

keykp

keykj

]r,vr

)},

{([

new

new

new]out,

out)}

new

new

newin in

map

...,

keykp

keykj

keykn

mvm

=>reduce{([key

p

keykj

keykn

]r,vr

)},

{([

new

new

new...

new]out,

out)}

map

keyk1

keyk2

keyk3

keykn

mvm =>

{([

new

new

new...

new]in,

in)}

reduce

keyk1

keyk2

keyk3

keykn

rvr

Деректерді

reduce{keyin,vin}

– функциясына қабылдау аяқталғаннан кейін

r r

барлық түйіндер бойынша кілттерінің мəндері бірдей жұптарды біріктіру

(агрегациялау) жүзеге асырылады:

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

кілттердің мəндері бірдей болатын

{keyin,vin}жұптар топтастырылады.

r r

Топтастырылған жұптарды төмендегідей белігілеулер түрінде беруге болады:

{([keynew]in,vin),([keynew]in,vin),([keynew]in,vin),...,([keynew]in,vin)}, {

11 r r1

11 r r2

11 r r3

11 r ra

([keynew]in,vin),

([keynew]in,vin),([keynew]in,vin),...,

([keynew]in,vin)}, {

21 r r1

21 r r2

21 r r3

21 r ra

([keynew]in,vin),

([keynew]in,vin),([keynew]in,vin),...,

([keynew]in,vin)},..., {

31 r r1

31 r r2

31 r r3

31 r ra

([ new]in,

in)

newin in

newin in

newin in

k

r

key

1

new]in,in)

keynew]in,

k2 r

in newin

vin),...,

r3

([keynew]in,

k2 r

vinra

new]in,in)

new]in,in)

keynew]in,

k3 r

new in

vin),([keynew]in,

r2 k3 r

in newin

vin),...,

r3

in

([keynew]in,

k3 r

new in

vinra

in

([

v1,([keyk1

]r,vr2),

([keyk1

]r,v

r

3

),...,

([keyk1

]r,vra

)},..., {

r

keyk2

([keyk3

([keykn

rvr1

rvr1

rvr1

, ([

,([

,([keykn

vr2),

]r,vr2),

([keyk2

([keykn

]r,

]r,vr3),...,

([keykn

)},..., {

)},..., {

]r,vra)}, {

([keynewkeynew]in,vin),

([keynewkeynew]in,vin),

([keynewkeynew]in,vin),...,

11 12 r r1

11 12 r r2

11 12 r r3

([ new

new]in,

in)

new

newin in

new

newin in

1

key

1

key

1

r

2

va}, { ([key11

key22

]r,vr1) ,

([key11

key22

]r,vr2) ,

r

{([keynewkeynew]in,vin)},...,([keynewkeynew]in,vin)}, {([keynewkeynew]in,vin),

11 22 r r3

11 22 r ra

11 32 r r1

([keynewkeynew]in,vin),

([keynewkeynew]in,vin),...,

([keynewkeynew]in,vin)},..., {

11 32 r r2

11 32 r r3

11 32 r ra

k

([keynew

i

key

new]in,

r

kj

vin)

r

1

,([keynew

k

i

key

new

k

kj

in,vin

r

r

]

2

),([keynew

k

i

key

new

kj

in,vin

r

r

]

3

),...,

([ new

new]in,

in)

new

newin in

new

newin in

keyki

key

kj

rvra

},..., {([key

j

key

]

kn

]r,vr1),

([keykj

key

kn

]r,vr2),

k

([keynew

key

new]in,

vin)

r

3

,...,

([keynew

key

new

in,vin

)},{([key

new

key

new

key

new

]in

,vin),

r

j kn

j kn a

11 12

13 r r1

r

r

k

([keynewkeynewkeynew]in,vin),([keynewkeynewkeynew]in,vin),...,([keynewkeynewkeynew]in,vin)

11 12

13 r r2

11 12

13 r r3

11 12

13 r ra

}, {([keynewkeynewkeynew]in,vin),([keynewkeynewkeynew]in,vin),([keynewkeynewkeynew]in,vin)

11 12

23 r r1

11 12

23 r r2

11 12

23r r3

,...,([

new

new

new]in,

in)

new

new

newin in

key11

key12

key23

rvra

}, {([key

1

key12

key33

]r,vr1),

1

k

([keynewkeynewkeynew]in,vin),([keynewkeynewkeynew]in,vin),...,

11 12

33 r r2

11 12

33 r r3

([ new

new

new]in,

in)

new

new

newin in

key11

key12

key33

rvra

},..., {([key

i

keykp

keykj

]r,vr1),

([ new

new

new]in,

in)

new

new

newin in

k

keyki

keykp

keykj

rvr2

,([keyki

keykp

keykj

]r,vr3),...,

([ new

new

new]in,

in)

new

new

newin in

keyki

keykp

keykj

rvra

},..., {([key

p

keykj

keykn

]r,vr1),

([ new

new

new]in,

in)

new

new

newin in

keykp

keykj

keykn

rvr2

,([keykp

keykj

keykn

]r,vr3),...,

([ new

new

new]in,

in)

new

new

new

newin in

keykp

keykj

keykn

rvra

},..., {([keyk1

keyk2

keyk3

...keykn

]r,vr1),

([ new

new

new...

new]in,

in)

new

new

new

newin in

keyk1

keyk2

keyk3

keykn

rvr2

,([keyk1

keyk2

keyk3

...keykn

]r,vr3),...,

([ new new

new... new]in,

in)

keyk1keyk2

keyk3keykn

rvra}.

Мұндағы, a – төменгі индексі əр бір кілтке сəйкес келетін жəне агрегацияланатын бірнеше мəндердің санын беретін айнымалымəн.

  1. Кілт мəндері бірдей жұптарды біріктіру. Біріктіруді төмендегідей белгілеулер түрінде беругеболады:

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

11 r

r1 r2 r3 ra

11 r r

reduce([keynew]in,{vin,vin,vin,...,vin}) =>reduce([keynew]out,vagr) ,

21 r

r1 r2 r3 ra

21 r r

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

...

31 r

r1 r2 r3 ra

31 r r

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

...

k1 r

r1 r2 r3 ra

k1 r r

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

...

k2 r

r1 r2 r3 ra

k2 r r

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

...

k3 r

r1 r2 r3 ra

k3 r r

reduce([keynew]in,{vin,vin,vin,...,vin})=>reduce([keynew]out,vagr),

kn r

r1 r2 r3 ra

kn r r

([ new

new]in,{

in,

in,

in,...,

in})

reduce

key11

key12

r vr1

vr2

vr3

vra=>

reduce([keynewkeynew]out,vagr) ,

11 12 r r

new

new

reduce([key1 key2 ']in,{vin,vin,vin,...,vin})=>

1 2 r

r1 r2 r3 ra

reduce([keynewkeynew]out,vagr) ,

11 22 r r

new new

reduce([key1 key3 ']in,{vin,vin,vin,...,vin})=>

1 2 r

r1 r2 r3 ra

reduce([keynewkeynew]out,vagr) ,

...

11 32 r r

([ new

new']in,{

in,

in,

in,...,

in})

reduce

keyki

keykj

r vr1

vr2

vr3

vra =>

([ new

new]out,agr)

reduce

...

keyki

keykj r vr ,

([ new

new']in,{

in,

in,

in,...,

in})

reduce

keykj

keykn

r vr1

vr2

vr3

vra=>

([ new

new]out,

agr)

reduce keykj

([

keykn

new

r vr ,

new new]in,{

in,

in,

in,...,

in})

reduce

key11

key12key13

r vr1

vr2

vr3

vra=>

reduce([keynewkeynewkeynew]out,vagr),

11 12 13 r r

([ new new new]in,{in,

in,

in,...,

in})

reduce key11key12key23 r vr1

vr2

vr3

vra =>

reduce([keynewkeynewkeynew]out,vagr),

11 12 23 r r

([ new new new]in,{in,

in,

in,...,

in})

reduce

key11key12key33 r vr1

vr2

vr3

vra=>

reduce([keynewkeynewkeynew]out,vagr),

11 12 33 r r

...,

([ new new new]in,{

in,

in,

in,...,

in})

reduce

([

keyki

new

keykp

new

keykj

new]out,

r vr1

agr)

vr2

vr3

vra=>

reduce keyki

...,

([

keykpkeykj

new new

r vr ,

new]in,{in,

in,

in,...,

in})

reduce

keykpkeykj

keykn r vr1

vr2

vr3

vra =>

([ new

new new]out,

agr)

reduce keykp

...,

([

keykjkeykn

new new

r

new...

vr ,

new]in,{

in,

in,

in,...,

in})

reduce

keyk1

keyk2

keyk3

keykn r

vr1

vr2

vr3

vra=>

([ new

new

new...

new]out, agr)

reduce

keyk1

keyk2

keyk3

keykn r vr .

Кілттердің мəндері бірдей болатын

{keyin,vin}жұптар бір түйін ішінде де

r r

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

түйінде сəйкес

{keyin,vin} -жұптарды біріктіру, алынған нəтижені {keyout,vout}

r r r r

барлық түйіндер бойынша есептелінетінreduce()-функцияға қайта жіберіп

{ out,out}

{ in,in}

keyr vr

keyrvr

орындауға болады. Соңғыreduce()-функциядан

агрегациялық мəндерді аламыз ({keyin,vin}{keyout,vagr}).

r r r r

Reduce() функциясы нəтижесінде алынған соңғы шығыс деректері

( out,agr)

out

keyr vr

деректер қоймасына жазылады. Деректер қоймасына

keyr-

r

агрегациялық деректерге қатынау кілті болып жазылады, ал агрегациялық (преарегациялық мəн) мəндер болып жазылады.

vagr-бастапқы

Жоғарыда келтірілген əр түрлі ДБ-ларынан деректерді кілт-мəн түрінде

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

Сурет 2.9 – Əр түрлі SQL жəне NoSQL ДБ-ларынан деректерді кілт-мəн түрінде алу, алынған деректерді MapReduce

параллелді моделі бойынша өңдеу арқылы бастапқы агрегациялық мəндерді есептеу сұлбасы

79

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