Кіріспе

Деректер қорының бір мезгілде жұмыс істеуін басқару техникасы

Міндеттемелерді реттеу (CO) – деректер қорының бір мезгілде жұмыс істеуін басқару, транзакцияларды өңдеу және осыған байланысты қолданбаларда өзара әрекеттесетін сериалдастыру техникаларының класы. Ол оптимистік (тоқтаусыз) жүзеге асыруға мүмкіндік береді. Көп ядролы процессорлардың таралуымен CO бір мезгілде бағдарламалауда, транзакциялық жадта және бағдарламалық транзакциялық жадта (STM) сериалдастыруға оптимистік түрде қол жеткізу үшін жиірек қолданылады. CO – 1988 жылы динамикалық атомдық деп анықталған нәтижелік транзакция кестесінің (тарихының) қасиетінің атауы. CO талаптарына сәйкес келетін кестеде транзакциялардың міндеттеме оқиғаларының хронологиялық реті тиісті транзакциялардың басымдық ретімен үйлесімді болады. CO – қақтығыс сериалдастыруының кең арнайы жағдайы және әртүрлі бір мезгілде басқару механизмдерін қолданатын деректер қоры жүйелерінің кез келген жиынтығында жаһандық сериалдастыруға (модульдік сериалдастыруға) қол жеткізудің тиімді құралы (сенімді, жоғары өнімділік, таратылған және кеңейтілген). CO талаптарына сәйкес келмейтін әрбір деректер қоры жүйесі CO компонентімен (міндеттемелерді реттеуші – COCO) толықтырылады, ол деректерге қол жеткізуге де, басқа транзакция операцияларына да араласпай, CO талаптарына сәйкес міндеттеме оқиғаларын реттейді. Осылайша, CO жаһандық сериалдастыру (және таратылған сериалдастыру) үшін төмен шығынды, жалпы шешім ұсынады, көп деректер қоры жүйелерінің және басқа транзакциялық объектілердің жаһандық бір мезгілде жұмыс істеуін басқаруға (және таратылған бір мезгілде жұмыс істеуін басқаруға) арналған құрал, мүмкін таратылған (мысалы, бұлтты есептеу, желілік есептеу және смартфондар желісінде). Атомдық міндеттеме протоколы (ACP; кез келген типті) – шешімнің негізгі бөлігі, ол қақтығыс (алдын ала, сериалдастыру) графигіндегі жаһандық циклдарды бұзу үшін қолданылады. CO – жаһандық сериалдастыруды кепілдік беретін ең жалпы қасиет (қажетті шарт), егер қатысатын деректер қоры жүйелері атомдық міндеттеме протоколынан (өзгертілмеген) хабарлардан басқа бір мезгілде жұмыс істеу туралы ақпаратты бөліспесе және транзакциялардың жаһандық немесе жергілікті екендігі туралы білмейтін болса (деректер қоры жүйелері автономды). Осылайша, CO (оның нұсқаларымен) – жергілікті бір мезгілде жұмыс істеу туралы ақпаратты әдеттегідей қымбат таратуды қажет етпейтін жалғыз жалпы техника. Ол екі фазалық міндеттеме протоколымен (2PC) бірге (SS2PL негізіндегі) деректер қоры жүйелерінде жаһандық сериалдастыруға қол жеткізудің де-факто стандарты болып табылатын танымал күшті қатаң екі фазалық құлыптау (SS2PL) қасиетін жалпылайды. Нәтижесінде, CO-ға сәйкес келетін деректер қоры жүйелері (әр түрлі бір мезгілде жұмыс істеу түрлерімен) жаһандық сериалдастыру үшін осындай SS2PL негізіндегі шешімдерге ашық түрде қосыла алады. Сонымен қатар, құлыптауға негізделген жаһандық тұйықталулар CO негізіндегі бірнеше деректер қоры ортасында автоматты түрде шешіледі, бұл маңызды қосымша пайда (толық SS2PL негізіндегі ортаның ерекше жағдайы қоса алғанда; SS2PL үшін бұрын байқалмаған факт). Бұдан басқа, қатаң міндеттемелерді реттеу (SCO; Raz 1991c), қатаңдық пен CO қиылысы, оқып-жазу қақтығыстары болған кезде SS2PL-ге қарағанда жақсы өнімділікті (орташа транзакцияны аяқтау уақыты қысқарады және транзакцияларды өткізудің жақсы деңгейіне әкеледі) ұсынады (жазу-оқу және жазу-жазу қақтығыстары үшін бірдей тоқтау мінез-құлқы; салыстырмалы құлыптау үстеме шығыны). SCO артықшылығы әсіресе құлыптаулар арасындағы соғыс кезінде байқалады. Қатаңдық SS2PL және SCO-ға бірдей тиімді деректер қорын қалпына келтіру механизмдерін пайдалануға мүмкіндік береді. CO-ның екі негізгі жалпылау нұсқасы бар, кеңейтілген CO (ECO; Raz 1993a) және CO-ның көп нұсқасы (MVCO; Raz 1993b). Олар да жергілікті бір мезгілде жұмыс істеу туралы ақпаратты таратусыз жаһандық сериалдастыруды қамтамасыз етеді, кез келген тиісті бір мезгілде жұмыс істеумен біріктірілуі мүмкін және оптимистік (тоқтаусыз) жүзеге асыруға мүмкіндік береді. Екеуі де CO шектеулерін жеңілдету және жақсы бір мезгілде жұмыс істеу мен өнімділікке қол жеткізу үшін қосымша ақпаратты пайдаланады. Дауыс беру тәртібі (VO немесе жалпыланған CO (GCO); Raz 2009) – CO және оның барлық нұсқалары үшін контейнерлік кесте жиынтығы (қасиеті) және техника. Жергілікті VO, егер атомдық міндеттеме протоколының (ACP) қатысушылары бір мезгілде жұмыс істеу туралы ақпаратты бөліспесе (жалпыланған автономдылық қасиетіне ие болса), жаһандық сериалдастыруды кепілдік беру үшін қажет. CO және оның нұсқалары әртүрлі нұсқалармен аралас, гетерогенді ортада бірге жаһандық сериалдастыруды және автоматты жаһандық тұйықталуларды шешуді кепілдіктейді.

Жүзеге асыру мәселесі: міндеттемелерді орындау жөніндегі координатор (COCO)

Көп деректер базасы ортасында деректер базасы жүйесі қарастырылады. Бағдарламалық архитектура тұрғысынан, жалпы CO алгоритмін жергілікті түрде іске асыратын CO компоненті, яғни Міндеттемелерді Келісу Координаторы (COCO), бір деректер базасы жүйесі мен атомдық міндеттеме протоколы компоненті арасындағы делдал ретінде тікелей жобалануы мүмкін (Raz 1991b). Дегенмен, COCO әдетте деректер базасы жүйесінің ажырамас бөлігі болып табылады. COCO-ның функциялары: дайын жаһандық транзакцияларға (өңдеу аяқталған) жергілікті міндеттемелер тәртібіне сәйкес міндеттемеге дауыс беру, деректер базасы жүйесі тоқтатуды бастаған транзакцияларды тоқтатуға дауыс беру (деректер базасы жүйесі көптеген себептермен кез келген транзакция үшін тоқтатуды бастай алады) және атомдық міндеттеме шешімін деректер базасы жүйесіне жіберу. Жергілікті транзакциялар үшін (олар анықталған жағдайда) дауыс беру қажет емес. Міндеттемелер тәртібін анықтау үшін COCO, шешілмеген (міндеттелмеген де, тоқтатылмаған) транзакциялардың жергілікті конфликт графигінің (немесе құлыптаулардың тудырған конфликттерін де қамтитын жергілікті кеңейтілген конфликт графигінің) жаңартылған бейнесін деректер құрылымы ретінде сақтайды (мысалы, конфликттерді анықтау үшін құлыптау сияқты механизмдерді пайдалану, бірақ деректерге қол жеткізуді шектемей). COCO компоненті деректер базасы жүйесінен "конфликт", "дайын" (өңдеу аяқталды; жаһандық транзакция бойынша дауыс беруге немесе жергілікті транзакцияны міндеттемеге дайындық) және "тоқтату" хабарламаларын алу үшін интерфейске ие. Сондай-ақ, ол әрбір жаһандық транзакция бойынша атомдық міндеттеме протоколымен дауыс беру және оның шешімін алу үшін өзара әрекеттеседі. Шешімдер COCO-дан деректер базасы жүйесіне олардың интерфейсі арқылы, сондай-ақ жергілікті транзакциялардың міндеттемелері туралы хабарламалар арқылы тиісті тәртіппен жеткізіледі. COCO, оның интерфейстерімен бірге, егер ол CO-ның басқа түрін іске асырса (төменде қараңыз) немесе атомдық міндеттеме бойынша дауыс беруден басқа деректер базасының бірмезгілділік бақылау механизмінде рөл атқарса, жақсартуға болады. COCO сондай-ақ атомдық міндеттеме протоколымен интерфейсі жоқ, бірыңғай, оқшауланған деректер базасында жергілікті CO кепілдігін қамтамасыз етеді.

Ескертпелер

Деректердің бөлінісі (x A-да; y B-де) маңызды, себебі оның болмауы x-ке мысалы, B-ден тікелей қол жеткізуге мүмкіндік береді. Егер транзакция B-де және осы транзакциямен бір мезгілде x-ті тікелей жазатын болса, онда таралған құлыптау басқарушысы болмаса, A-да ұсталып тұрған x-тің оқу құлпы B-де көрінбейді және жазуды тоқтата алмайды (немесе бұғаттамайтын CO нұсқасы үшін нақты қақтығысты хабарлай алмайды; төменде қараңыз). Осылайша, сериалдану бұзылуы мүмкін. Деректердің бөлінісіне байланысты x-ке B-ден тікелей қол жеткізуге болмайды. Дегенмен, функционалдық шектелмейді, және B-де іске қосылған транзакция x үшін жазу немесе оқу сұранысын жіберуі мүмкін (бұл жиі кездеспейді). Бұл сұрау A-дағы транзакцияның жергілікті қосалқы транзакциясына (егер ол әлі жоқ болса, жаңасы құрылады) жіберіледі, ол бұл сұрауды A-дағы жергілікті деректерді басқарушыға жібереді.

СО нұсқалары: ерекше жағдайлар және жалпылаулар

Арнайы жағдай кестесі қасиеттерінің кластары (мысалы, SS2PL және төмендегі SCO) қатаң түрде CO класына кіреді. Жалпылау кластары (ECO және MVCO) қатаң түрде CO класын қамтиды (яғни, CO талаптарына сәйкес келмейтін кестелерді де қамтиды). Жалпылау варианттары сонымен қатар жергілікті бір мезгілдестікті басқару туралы ақпаратты таратпай, жаһандық сериалдастыруды кепілдендіреді (әрбір деректер қоры жалпыланған автономия қасиетіне ие: ол тек жергілікті ақпаратты пайдаланады), сонымен бірге CO шектеулерін жеңілдетеді және жақсы бір мезгілдестік пен өнімділікті қамтамасыз ету үшін қосымша (жергілікті) ақпаратты пайдаланады: ECO транзакциялардың жергілікті екенін (яғни, бір деректер қорымен шектелгенін) білуді пайдаланады, ал MVCO деректер нұсқаларының қолжетімділігін пайдаланады. CO сияқты, екі жалпылау варианттары да бұғаттамайды, кез келген транзакцияның операцияларын жоспарлауына кедергі келтірмейді және кез келген тиісті бір мезгілдестікті басқару механизмімен үйлесімді жұмыс істей алады. CO варианты термині, әдетте CO, ECO, MVCO немесе олардың кез келген тиісті бір мезгілдестікті басқару механизмімен немесе қасиетімен (соның ішінде көп нұсқалы ECO, MVECO) бірігуін білдіреді. Басқа жалпылау варианттары (жергілікті бір мезгілдестікті басқару туралы ақпаратты таратпай жаһандық сериалдастыруды кепілдік беретін) әзірге белгісіз, бірақ оларды табу мүмкін.

Қатты екі фазалы бұғаттауыш (SS2PL)

Қатты екі фазалы құлыптау (SS2PL; сондай-ақ қатаңдық немесе қатаң жоспарлау деп аталады) транзакцияның оқу және жазу құлыптары транзакция аяқталғаннан кейін ғана босатылады (комитталған немесе тоқтатылған). SS2PL кестелерінің жиынтығы CO кестелерінің жиынтығының нақты кіші жиынтығы болып табылады. Бұл қасиет деректер базасы жүйелерінде кеңінен қолданылады, және ол CO-ны білдіретіндіктен, оны пайдаланатын және жаһандық транзакцияларға қатысатын деректер базасы бірігіп, сериалдануға болатын жаһандық кесте құрайды (көп деректер базасы ортасындағы атомдық үшін қажетті кез келген атомдық міндеттеме протоколын қолданған кезде). Бұл жағдайда CO үлестірілген шешіміне қатысу үшін деректер базасын өзгерту немесе қосу қажет емес: жоғарыда көрсетілген жергілікті жалпы CO алгоритмінде комитте алдында тоқтатылатын шешілмеген транзакциялар жиынтығы құлыптардың нәтижесінде бос болады, сондықтан мұндай алгоритм бұл жағдайда қажет емес. Транзакцияға деректер базасы жүйесімен "дайын" күйге енгеннен кейін, яғни жергілікті түрде өз міндетін орындап болғаннан кейін, бірден дауыс беруге болады. Оның құлыптары атомдық міндеттеме протоколымен шешілгеннен кейін ғана деректер базасы жүйесімен босатылады, сондықтан жоғарыда көрсетілген Global CO теоремасының шарты автоматты түрде сақталады. Егер деректер базасы жүйесі жергілікті тайм-аут механизмін (жергілікті) SS2PL тұйықталуларын шешу үшін қолданса, онда тоқтатылған транзакциялар жаһандық қақтығыс графигіндегі ықтимал жергілікті циклдарды (күшейтілген қақтығыс графигіндегі нақты циклдарды) ғана емес, сонымен қатар деректер базасы жүйесінің ықтимал жаһандық циклдарын да бұзады, егер атомдық міндеттеме протоколының тоқтату механизмі салыстырмалы түрде баяу болса. Мұндай бірнеше субъектілердің тәуелсіз тоқтатулары көбінесе бір ғана жаһандық цикл бойынша бірнеше транзакцияны қажетсіз тоқтатуға әкелуі мүмкін. Графикке негізделген механизмдер үшін жағдай басқаша: олар жаһандық циклдарды анықтай алмайды, ал атомдық міндеттеме протоколы дауыс берудің тұйықталуы басқа деректер базасында ертерек шешілмесе, жаһандық циклды бұзады. Жергілікті SS2PL және атомдық міндеттеме жаһандық сериалдануды білдіреді, сонымен қатар тікелей қорытуға болады: Барлық транзакциялар, соның ішінде үлестірілгендер, 2PL (SS2PL) ережелеріне бағынады. Мұнда атомдық келісім протоколының механизмі келісімге келу үшін қажет емес, керісінше екінші фазаның синхрондау нүктесінің соңы үшін қажет. Осы себепті, атомдық міндеттемелерді дауыс беру механизмін ескермей, автоматты жаһандық тұйықталуды шешу CO-дан бұрын байқалмаған болуы мүмкін.

Қатаң КО (SCO)

Қатаң міндеттемелерді сақтау тәртібі (SCO; (Raz 1991c)) – қатаңдық пен CO-ның (қайта жаңғыртудың ерекше жағдайы) қиылысы болып табылады және екі қасиет болған жағдайда кестедегі бір мезгілдестік деңгейіне жоғарғы шек қояды. Оны құлыптау сияқты тоқтату механизмдерін (бұғаттау) пайдаланып іске асыруға болады, бұл механизмдер танымал SS2PL үшін де қолданылады және ұқсас шығындарға ие. SS2PL-ден айырмашылығы, SCO оқу-жазу қақтығысында тоқтамайды, бірақ оның орнына міндеттеме кезінде тоқтатуы мүмкін. SCO және SS2PL басқа екі қақтығыс түріне қатысты бірдей тоқтату мінез-құлқына ие: жазу-оқу және жазу-жазу. Осының нәтижесінде SCO-да тоқтатудың орташа мерзімі қысқа, ал бір мезгілдестік жоғары (мысалы, реттелген ортақ пайдаланумен құлыптардың ең маңызды түріне сәйкес келетін SCO үшін бір дерекқорының өнімділік симуляциясы оны анық көрсетеді, кейбір транзакциялық жүктемелер үшін шамамен 100% пайда; сондай-ақ, бірдей транзакциялық жүктемелер үшін SCO құлыптардың бұзылуына дейін SS2PL-ге қарағанда жоғары транзакциялық деңгейге жете алады). Жоғары бір мезгілдестік дегеніміз, берілген есептеу ресурстарымен уақыт бірлігінде көбірек транзакциялар аяқталады (жоғары транзакциялық жылдамдық, өткізу қабілеті), ал транзакцияның орташа ұзақтығы қысқа (жылдам аяқталу; кестеге қараңыз). SCO-ның артықшылығы құлыптармен күрес кезінде ерекше айқын. SCO vs. SS2PL өнімділік теоремасы SCO оқу-жазу қақтығыстары болған жағдайда SS2PL-ге қарағанда транзакцияны аяқтау уақытын қысқартады. Басқа жағдайларда SCO және SS2PL бірдей (жазу-оқу және жазу-жазу қақтығыстары кезінде бірдей тоқтату мінез-құлқы). SCO SS2PL сияқты практикалық, себебі SS2PL сияқты ол сериалдастырудан басқа қатаңдықты да қамтамасыз етеді, бұл дерекқорының сәтсіздіктен қалпына келтірілуінің тиімді негізі ретінде кеңінен қолданылады. SS2PL механизмін қалпына келтіру әдістерін өзгертпей, жақсы өнімділік үшін SCO механизміне тікелей түрлендіруге болады. SCO іске асырылуының сипаттамасын (Perrizo and Tatarinov 1998) қараңыз. Сондай-ақ, жартылай оптимистік дерекқор кестесін қараңыз. SS2PL – SCO-ның нақты кіші жиыны (SCO SS2PL-ге қарағанда аз шектеулі және жоғары бір мезгілдестік қамтамасыз ететінінің тағы бір түсіндірмесі).

Оптимистік СО (ОСО)

Оптимистік міндеттемелерді (ОКО) іске асыру үшін деректерге қол жеткізуді тоқтатусыз және жергілікті тұйықталусыз жалпы жергілікті ОКО алгоритмі пайдаланылады. Транзакцияларға немесе операцияларды жоспарлау шектеулеріне қатысты талаптары жоқ ОКО, СО класының толық көлемін қамтиды және СО класының ерекше жағдайы емес, оның орнына пайдалы ОКО түрі және механизмді сипаттау болып табылады.

Мысалы: CO негізделген снэпшотты оқшаулау (COSI)

CO негізделген снэпшоттық оқшаулау (COSI) – снэпшоттық оқшаулаудың (SI) MVCO-мен қиылысы. SI – көп нұсқалы бір мезгілдестікті басқару әдісі, жақсы өнімділігі және серияландырылуға (1SER) ұқсастығының арқасында кеңінен қолданылады. Жоғарыда сипатталған MVCO теориясы (Raz 1993b) кейіннен (Fekete et al. 2005) және басқа SI мақалаларында, мысалы, (Cahill et al. 2008); сондай-ақ, «Снэпшоттық оқшаулауды серияландыру және ондағы сілтемелер» еңбегінде, SI-дегі қақтығыстарды талдау үшін пайдаланылады, осы арқылы серияландырылуға қол жеткізіледі. (Cahill et al. 2008) ұсынған «Серияландырылған снэпшоттық оқшаулау» (SerializableSI) – SI-дің төмен шығынды модификациясы, серияландырылуды қамтамасыз ету үшін минималды салдармен SI-ге қарағанда жақсы нәтижелер береді. SI-ді MVCO (COSI) арқылы біріктірудің тағы бір әдісі, жалпы CO алгоритмін бір нұсқалы механизмдермен біріктіруге ұқсас, салыстырмалы түрде төмен шығынмен SI-ді серияландырады. Сонымен қатар, нәтижесіндегі COSI, MVCO талаптарына сәйкес келеді, COSI-ға сәйкес келетін деректер базасы жүйелерінің өзара әрекеттесуіне және үлестірілген/жалпы серияландырылуға арналған CO шешіміне ашық қатысуына мүмкіндік береді (төменде қараңыз). Шығындардан басқа, протоколдардың мінез-құлқы да сандық түрде салыстырылуы керек. Бір жағынан, барлық серияландырылған SI кестелерін COSI транзакцияларды тоқтатпай (қажет болған жағдайда кешіктіру арқылы) MVCO-ға айналдыруға болады. Екінші жағынан, SerializableSI серияландырылған SI кестелерінде де транзакциялардың белгілі бір пайызын қажетсіз тоқтатып, қайта іске қосатыны белгілі.