Кіріспе

Бір мезгілділікті бақылау әдісі
Оптимистік бір мезгілділікті бақылау (OCC), сондай-ақ оптимистік құлыптау деп аталады, – бұл реляциялық деректер қорын басқару жүйелері және бағдарламалық транзакциялық жад сияқты транзакциялық жүйелерге қолданылатын құлыптауды қажет етпейтін бір мезгілділікті бақылау әдісі. OCC көптеген транзакциялар бір-біріне кедергі келтірмей жиі аяқталуы мүмкін деп есептейді. Орындалу барысында транзакциялар осы ресурстарға құлып қоймастан дерек ресурстарын пайдаланады. Міндеттеме жасамас бұрын әрбір транзакция өзі оқыған деректерді ешқандай басқа транзакция өзгерте қоймағанын тексереді. Егер тексеру қарама-қайшылықты өзгерістерді көрсетсе, міндеттеме транзакциясы кері қайтарылады және қайта іске қосылуы мүмкін. Оптимистік бір мезгілділікті бақылауды алғаш рет 1979 жылы Х.Т. Кунг және Джон Т. Робинсон ұсынған. OCC әдетте деректерге талас аз ортада қолданылады. Конфликттер сирек болатын жағдайда транзакциялар құлыптарды басқаруға кеткен шығындарсыз және басқа транзакциялардың құлыптарының босатылуын күтпей аяқталуы мүмкін, бұл басқа бір мезгілділікті бақылау әдістеріне қарағанда жоғары өнімділікке әкеледі. Дегенмен, егер дерек ресурстары үшін талас жиі болса, транзакцияларды қайта-қайта іске қосудың құны өнімділікке елеулі зиян келтіреді, мұндай жағдайда басқа бір мезгілділікті бақылау әдістері тиімдірек болуы мүмкін. Алайда, құлыптауға негізделген ("пессимистік") әдістер де нашар өнімділік көрсетуі мүмкін, себебі құлыптау тіпті өшіруден сақтаған жағдайда да тиімді бір мезгілділікті күрт шектей алады.

Мысалдар

MediaWiki-дің өңдеу беттері OCC-ді пайдаланады. Bugzilla OCC-ді пайдаланады; өңдеу қақтығыстары "әуедегі соқтығысулар" деп аталады. Ruby on Rails фреймворкі OCC үшін API-ға ие. Grails фреймворкі OCC-ті әдепкі конвенцияларында қолданады. GT.M деректер базасы операцияларды басқару үшін OCC-ді пайдаланады (тіпті жеке жаңартулар да шағын транзакциялар ретінде қарастырылады). Microsoft-тың Entity Framework (соның ішінде Code First) OCC-ді екілік уақыт белгісі мәніне негізделген қолдаумен қамтамасыз етеді. Көптеген нұсқаны бақылау жүйелері бірмезгілдестіктің "біріктіру" моделін қолдайды, ол OCC. Mimer SQL – тек оптимистік қатарласуды басқаруды іске асыратын ДБСЖ. Google App Engine деректер қоймасы OCC-ді пайдаланады. Apache Solr іздеу жүйесі OCC-ді нұсқа өрісі арқылы қолдайды. Elasticsearch іздеу жүйесі құжаттарын OCC арқылы жаңартады. Әр құжат нұсқасына реттік нөмір беріледі, ал жаңа нұсқаларға жоғары реттік нөмірлер тағайындалады. Құжаттарға енгізілген өзгерістер асинхронды түрде келіп түскендіктен, бағдарламалық жасақтама жаңа нұсқаны ескі нұсқамен жаңартудан сақтау үшін реттік нөмірді пайдалана алады. CouchDB OCC-ді құжаттың өңдеулері арқылы іске асырады. MonetDB бағанға бағдарланған деректерді басқару жүйесінің транзакцияларды басқару схемасы OCC негізінде құрылған. Бағдарламалық транзакциялық жадтың көптеген іске асырылуы OCC-ді пайдаланады. Redis WATCH командасы арқылы OCC-ді қамтамасыз етеді. Firebird деректерді басқару үшін OCC-ді іске асыру ретінде көп буынды архитектураны қолданады. DynamoDB шартты жаңартуды OCC-ді іске асыру ретінде пайдаланады. Kubernetes ресурстарды жаңарту кезінде OCC-ді қолданады. YugabyteDB – бұлттық деректер базасы, ол негізінен OCC-ді пайдаланады. Firestore – Firebase компаниясының NoSQL деректер базасы, ол транзакцияларында OCC-ді пайдаланады.