- •Мукажанов нуржан какенұлы Əр түрлі құрылымды деректерді жедел аналитикалық өңдеу үдерістерінің ақпараттық-есептеуін қамтамасыз ету
- •6D070400 – Есептеу техникасы жəне бағдарламалық қамтамасыз ету Философия докторы (PhD)
- •Мазмұны
- •Деректерді аналитикалықөңдеудіңқазіргікездегіжай-күйі 14
- •Жедел аналитикалық өңдеулерүшінреляциялық жəне nosql деректерді бірыңғай құрылымға келтіру үлгілеріменəдістері 48
- •Бөлімбойыншатұжырым 80
- •Деректерді жедел аналитикалықөңдеугеарналған деректер қоймасына тиімді деректер құрылымынəзірлеу 81
- •Бөлімбойыншатұжырым 113
- •Əзірленген үлгілер,əдістержəнеалгоритмдердің ашық үкіметпорталыашықдеректерін аналитикалықөңдеудегіпрактикалықапробациясы 114
- •4 Бөлімбойыншатұжырым 131
- •Пайдаланылғанəдебиеттертізімі 133
- •Нормативтік сілтемелер
- •Анықтамалар
- •Белгілеулер мен қысқартулар
- •Диссертациялық жұмысты қорғауға келесі нəтижелер шығарылады
- •Деректерді аналитикалық өңдеудің қазіргі кездегі жай-күйі
- •Деректерді аналитикалық өңдеудің шешімдер қабылдауды қолдау жүйелеріндегі орыны менрөлі
- •Деректерді аналитикалық өңдеудің əдістері, технологиялары жəне платформалары
- •Деректерді көп өлшемді жедел аналитикалық өңдеудің мəселелері жəне зерттеу тапсырмаларыныңқойылымы
- •Бөлім бойыншатұжырым
- •Жедел аналитикалық өңдеулер үшін реляциялық жəне nosql деректерді бірыңғай құрылымға келтіру үлгілері менəдістері
- •Деректерді бірыңғай құрылымға келтіруəдістері
- •Деректер базалары моделдерініңерекшеліктері
- •Реляциялық жəне NoSql деректерді бірыңғай құрылымға келтіру əдісінəзірлеу
- •Бөлім бойыншатұжырым
- •Деректерді жедел аналитикалық өңдеуге арналған деректер қоймасына тиімді деректер құрылымын əзірлеу
- •Деректер қоймасы ішкі құрлымыныңұйымдастырылуы
- •Аналитикалық деректерді өңдеудің көп өлшемді индекстік деректер құрылымынұйымдастыру
- •Агрегациялық мəндерді есептеудің ағаш түріндегі құрылымын əзірлеу
- •Бөлім бойыншатұжырым
- •Əзірленген үлгілер, əдістер жəне алгоритмдердің ашық үкімет порталы ашық деректерін аналитикалық өңдеудегі практикалықапробациясы
- •Ақпараттық-аналитикалық жүйелердің мемлекеттік секторларда қолданылуы
- •Деректерді жедел аналитикалық өңдеудің мемлекеттік секторда қолданылуы
- •Ашық деректерді жедел аналитикалық өңдеудің ақпараттық- аналитикалық жүйесінəзірлеу
- •4 Бөлім бойынша тұжырым
- •Қорытынды
- •Пайдаланылған əдебиеттер тізімі
- •Қосымша а
- •Қосымша б
- •Қосымша в
- •Қосымша г
- •Қосымша д
Реляциялық жəне NoSql деректерді бірыңғай құрылымға келтіру əдісінəзірлеу
Деректерді аналитикалық өңдеу арқылы білімдерді алу осы сəттегі жəне көне деректерге сүйенеді. Көптеген ірі компанияларда, жеке ұйымдарда, мемлекеттік мекемелерде, банктерде жəне т.б. ұзақ жылдар бойы реляциялық үлгідегі, кестелік типтегі ДБ пайдаланылып кегендіктен, реляциялық базаларда аналитикалық тапсырмаларға қажетті білімдер жинақталған. Соңғы жылдарда, желілік технологиялар мен қыземттердің қарқынды дамуы, қолдану өзектілігінің артуына байланысты NoSQL-типіндегі деректер базалары кеңінен қолданылуда. Осыған байланысты, бастапқы дереккөздерде деректер əр түрлі құрылымды деп қарастырылады. Əр түрлі құрылымды деректер ретінде, бірінші бөлімде атап көрсеткендей, реляциялық, кілт-мəн, құжат-бағытталған жəне баған-бағытталған үлгілералынады.
Əр түрлі дереккөздердегі мəліметтерді көп өлшемді аналитикалық өңдеу мақсатында бірыңғай құрылымға келтіру əдісін əзірлеу келесі қадамдардан тұрады:
Əр түрлі деректер қорларынан деректерді іздеу шаблонын қалыптастыру;
Шаблон бойынша іздеу жүргізу жəне іздеу нəтижесінде алынған массив түріндегі деректерді map-фазағаберу.
Map-Reduce параллелді моделі арқылы əр түрлі таратылған түйіндердегі деректерді параллелдіөңдеу;
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
={m2
,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 -1inаралығындағы
сандық мəн деп алсақ. Онда, сөздік қуаттылығын 1-формуламенанықтауға
болады.
n
|V|nki
i1
(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
1key
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 1ijn 1ijpn
Тізбек бойынша алынған əр түрлі мөлшердегі жəне мүмкін болатын барлық кілттік мəндер тізбектері көлемі аса үлкен болса, көп операцияны жəне үлкен көлемді жадыны талап етеді. Бұл тапсырманы жеңілдету үшін мөлшері ең үлкен кілттер бойынша іздеу жасап, кілттік тізбекке кіретін барлық мəндерді қарастыру. Егер кілттік тізбекте бар сөздікке сəйкес қандайда бір жазба табылса, жазбаның мөлшерін анықтау, мөлшеріне жəне жазба өлшемдеріне тура келетін шаблон бойынша құрастырылған тізбекті кілт ретіндеменшіктеу.
Деректерді іздеу шаблонын жəне сөздіктерден алынатын тілдік тізбекті деректер қоймасы серверінде немесе бастапқы дереккөздер болып табылатын ДБ орналасқан түйіндерде қалыптастыруға болады.
Егер барлық түйіндердегі ДБ құрылымы бірдей болса жəне шаблон бойынша алынатын сөздік пен тілдік тізбектердің мөлшері аса үлкен болмаған жағдайда, шаблонды деректер қоймасы серверінде қалыптастырып, барлық түйіндер үшін бір шаблонды экземплярлау арқылы барлық түйіндерден іздеу үшін пайдалануға болады.
Егер түйіндердегі ДБ-лары құрылымдар əр түрлі болса жəне шаблон бойынша алынатын сөздік пен тілдік тізбектердің мөлшері аса үлкен болған жағдайда шаблондарды əр түйінде жеке қалыптастырған тиімді. Біріншіден, деректер қоймасы серверінде мыңдаған түйіндерге арналған мыңдаған шаблонды қалыптастыру бір серверге үлкен жүктеме түсіреді жəне деректер базасы сервері мұндай үлкен жүктемені қолдай алмауы да мүмкін. Екінші, əр бір ДБ құрылымына арналған шаблон, сөздік жəне тілдік тізбек сақтау үшін жады ресурсын қажет етеді. Мыңдаған түйінге арналған шаблон, сөздік жəне тілдік тізбек ресурстарын сақтау көлемді жадыны талап етеді жəне оларды желі арқылы түйіндерге көшірмелеу желіге түсетін жүктемелерді арттырады. Аталған мəселелерге байланысты деректерді іздеу образын əр түйінде жеке қалыптастыру жүзеге асырылады. Əр түйін деректер қоймасынан сөздік элементтері болып табылатын өлшемдер мен өлшемдер элементтерін алады жəне ДБ құрылымына байланысты көп өлшемді іздеу образы (шаблоны) қалыптастырылады.
Іздеу барысында тек шаблонға жəне сөздікте бар элементтерге сəйкес келетін деректер жұп жазбалардан тұратын "кілт-мəн" түріндегі тізімдерге келтіріліп, алынады. Кілттер сөздік арқылы қалыптастырылған тілдегі тізбектерге сəйкес келеді, ал мəн сандық көрсеткіш болады. Мəнді алу қойылған тапсырмаға сəйкес жүргізіледі. Іздеу барысында сөздік бойынша құрастылыған кілтке сəйкес табылған жазбадан сандық мəн алынады. Сандық мəн ретінде белгілі бір өрістегі нақты сандық көрсеткіштер, құжаттағы немесе өрістегі кілттік сөздер саны, жазбалар арасындағы байланыстар (мысалы, ДБ жазбалардың байланысы арқылы қатынастардың сандық көрсеткішін беру) жəне т.б. алынуымүмкін.
Қалыптастырылған шаблон бойынша деректерді іздеу.Қалыптастырылған кілттік тізбектермен салыстыру арқылы барлық ДБ- ларындағы жазбаларға іздеу (оқу) жүгізіледі де, тек сəйкес жазбалар ғана алынады. Жоғарыда айтылғандай деректерді іздеуде ассоциативті массив мүмкіндіктері қолданылады. Ассоциативті массивтің негізгі мүмкіндіктері деректерге "символ" жəне "жол" типіндегі кілттермен қатынауға мүмкіндік береді, сонымен қатар көп өлшемді кілттерді қолдайды. Өлшемдер жиыны жəне өлшемдер жиынының ішкі жиындары элементтері терулері бойынша алынған кілттік мəндер тізбектері ассоциативті массив кілттеріне сəйкес келетіндіктен деректерді іздеу жəне алу үшін ассоциативті массив мүмкіндіктерін пайдалануға толық негіз бар. Деректер массивінен қажетті1-өлшемненn- өлшемге дейінгі аналитикалық деректерді іздеу сұранымы образын қалыптасыру үшін шаблон бойынша алдын ала қалыптастырылған кілттік тізбектер пайдаланылады. Іздеу сұранымы образы нақты деректер құрылымына байланысты қалыптастырылуықажет.
Ұсынылып отырған шаблон бойынша NoSQL ДБ-ларынан іздеу əдісі іздеу нəтижесінде алынатын деректерді бір өлшемді жəне көп өлшемді "кілттерден" тұратын "кілт...->мəн" тізімі түрінде береді. Ідеу барысында кілттік мəндерден тұратын тізбектер жиыны элементтері ассоциативті массив кілттері мəндері ретінде пайдаланылады.1-денn-өлшемдерге дейінгі кілттер бойыншаіздеу
нəтижесін келесідегідей түрде жазуға болады:
massd1{[key11]value},
mass
{[key
]value},mass1{[key1]value},...,
mass{[key]value}
, ...,
1 1d1 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 2d1d2
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 3djdn
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
ikey
new]out,
m
kjvout)}
,...,
map{([keynew
k
jkey
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
ikey
new]out,
m
kjvout)}
=>reduce{([keynew
k
ikey
new
kj
in,vin
)},
map
{([
keynew
k
jkey
new]out,
m
knvout)}
=>reduce{([keynew
k
jkey
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
барлық түйіндер бойынша кілттерінің мəндері бірдей жұптарды біріктіру
(агрегациялау) жүзеге асырылады:
Барлықтүйіндердекілтмəндерібойыншасұрыптаужүргізілуарқылы
кілттердің мəндері бірдей болатын
{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
key1
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
key1
key
1
r
2va}, { ([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
([keynewi
key
new]in,
r
kjvin)
r
1,([keynew
k
ikey
new
k
kjin,vin
r
r
]
2),([keynew
k
ikey
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
([keynewkey
new]in,
vin)
r
3,...,
([keynew
key
new
in,vin
)},{([key
new
key
new
key
new
]in
,vin),
r
j knj 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
keykikeykp
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 – төменгі индексі əр бір кілтке сəйкес келетін жəне агрегацияланатын бірнеше мəндердің санын беретін айнымалымəн.
Кілт мəндері бірдей жұптарды біріктіру. Біріктіруді төмендегідей белгілеулер түрінде беругеболады:
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
