{"id":56365,"date":"2020-02-11T00:00:00","date_gmt":"2020-02-10T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike"},"modified":"2020-02-18T14:04:37","modified_gmt":"2020-02-18T11:04:37","slug":"highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike","status":"publish","type":"post","link":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike","title":{"rendered":"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00f6vb\u0259ti HighLoad++ konfrans\u0131 2020-ci il aprel ay\u0131n\u0131n 6 v\u0259 7-d\u0259 Sankt-Peterburqda ke\u00e7iril\u0259c\u0259k. <br \/>\nT\u0259f\u0259rr\u00fcatlar v\u0259 biletl\u0259r <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">baxmaq m\u00fcmk\u00fcnd\u00fcr.<\/a><\/noindex>. HighLoad++ Siberia 2019. \"Krasnoyarsk\" zal\u0131. 25 iyun, 12:00. T\u00f6zisl\u0259r v\u0259 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/siberia\/2019\/abstracts\/5253\">prezentasiya<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/cded9c5434d670db7295aadf5da0a9f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u0259z\u0259n praktiki t\u0259l\u0259bl\u0259r n\u0259z\u0259riyy\u0259 il\u0259 \u00e7\u0259ki\u015fm\u0259 \u0259rs\u0259y\u0259 g\u0259tirir, burada is\u0259 ticar\u0259t m\u0259hsulu \u00fc\u00e7\u00fcn vacib olan aspektl\u0259r n\u0259z\u0259r\u0259 al\u0131nm\u0131r. Bu t\u0259qdimatda, bir komersiya m\u0259hsulunun t\u0259l\u0259bl\u0259rin\u0259 \u0259saslanaraq, Causal consistency komponentl\u0259rinin yarad\u0131lmas\u0131 \u00fc\u00e7\u00fcn m\u00fcxt\u0259lif yana\u015fmalar\u0131n se\u00e7ilm\u0259si v\u0259 kombinasiyas\u0131 prosesini t\u0259qdim ed\u0259c\u0259yik. Dinl\u0259yicil\u0259r logical clocks, dependency tracking, system security, clock synchronization m\u00f6vzular\u0131nda m\u00f6vcud n\u0259z\u0259ri yana\u015fmalar haqq\u0131nda bilgil\u0259n\u0259c\u0259kl\u0259r v\u0259 MongoDB-nin hans\u0131 q\u0259rarlar\u0131 nec\u0259 verdiyin\u0259 dair m\u0259lumat alacaqlar.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Mixail Tyulenyev (bundan sonra \u2013 MT):<\/b> \u2013 M\u0259n Causal consistency haqq\u0131nda dan\u0131\u015faca\u011fam \u2013 bu, MongoDB-d\u0259 i\u015fl\u0259diyimiz bir x\u00fcsusiyy\u0259tdir. M\u0259n paylanm\u0131\u015f sisteml\u0259r qrupunda i\u015fl\u0259yir\u0259m, bu x\u00fcsusiyy\u0259ti t\u0259xmin\u0259n iki il \u0259vv\u0259l yaratd\u0131q.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/b8d0a5b64e715f53b033fa8c398e2eb4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProses zaman\u0131 bir \u00e7ox akademik ara\u015fd\u0131rmalarla tan\u0131\u015f olmal\u0131 olduq, \u00e7\u00fcnki bu x\u00fcsusiyy\u0259t kifay\u0259t q\u0259d\u0259r yax\u015f\u0131 \u00f6yr\u0259nilib. Ayd\u0131n oldu ki, he\u00e7 bir m\u0259qal\u0259 istehsal \u00fc\u00e7\u00fcn t\u0259l\u0259b olunanlar\u0131 tam olaraq qar\u015f\u0131lam\u0131r, databazan\u0131n \u00f6z spesifik t\u0259l\u0259bl\u0259rin\u0259 g\u00f6r\u0259, n\u0259hay\u0259t, hans\u0131sa istehsal t\u0259tbiqetm\u0259l\u0259rind\u0259.<\/p>\n<p>M\u0259n, akademik ara\u015fd\u0131rmalara istinadan, biz haz\u0131rlad\u0131\u011f\u0131m\u0131z \u015feyl\u0259rin nec\u0259 oldu\u011funu, sonra bunu istifad\u0259\u00e7il\u0259rimiz\u0259 rahat, etibarl\u0131 \u015f\u0259kild\u0259 t\u0259qdim ed\u0259c\u0259yimizi dan\u0131\u015faca\u011fam.<\/p>\n<h3>Causal consistency. Terminl\u0259ri m\u00fc\u0259yy\u0259nl\u0259\u015fdirm\u0259k.<\/h3>\n<p>\n\u018fvv\u0259lc\u0259, Causal consistency-nin n\u0259 oldu\u011funu q\u0131saca izah etm\u0259k ist\u0259yir\u0259m. \u0130ki xarakter var \u2013 leonard v\u0259 Penny (\"B\u00f6y\u00fck partlay\u0131\u015f teorisi\" serial\u0131):<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/ee0835b604ae5d5d6c0fa1bc369e6b18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nG\u0259lin d\u00fc\u015f\u00fcn\u0259k ki, Penny Avropadad\u0131r, Leonard is\u0259 ona s\u00fcrpriz etm\u0259y\u0259 \u00e7al\u0131\u015f\u0131r, onun \u00fc\u00e7\u00fcn bir t\u0259dbir t\u0259\u015fkil etm\u0259k ist\u0259yir. V\u0259 o, daha yax\u015f\u0131 bir \u015fey d\u00fc\u015f\u00fcnm\u00fcr, onun dostlar\u0131ndan h\u0259r k\u0259s\u0259 \"Penny-ni sevindir\u0259k!\" (o Avropadad\u0131r, yatd\u0131\u011f\u0131 zaman, bunlar\u0131n he\u00e7 birini g\u00f6rm\u00fcr) dey\u0259r\u0259k bir post yollay\u0131r. N\u0259tic\u0259d\u0259 bu postu silir, \"Fid\"-d\u0259n silir v\u0259 Penny-nin he\u00e7 bir \u015fey g\u00f6rm\u0259m\u0259si \u00fc\u00e7\u00fcn access-i b\u0259rpa edir.<br \/>\nBunlar g\u00f6z\u0259l, lakin g\u0259lin d\u00fc\u015f\u00fcn\u0259k ki, sistem paylanm\u0131\u015fd\u0131r v\u0259 hadis\u0259l\u0259r bir az f\u0259rqli gedir. M\u00fcmk\u00fcn ki, Penny-nin access m\u0259hdudiyy\u0259ti bu postdan sonra ba\u015f verib, \u0259g\u0259r hadis\u0259l\u0259r bir-birin\u0259 s\u0259b\u0259b-n\u0259tic\u0259 m\u00fcnasib\u0259tind\u0259 deyils\u0259. \u018fslind\u0259, bu \u2013 biznes funksiyas\u0131n\u0131 yerin\u0259 yetirm\u0259k \u00fc\u00e7\u00fcn Causal consistency-nin t\u0259l\u0259b olundu\u011fu bir n\u00fcmun\u0259dir (bu halda).<\/p>\n<p>\u018fslind\u0259 bu, database-in kifay\u0259t q\u0259d\u0259r q\u0259liz x\u00fcsusiyy\u0259tl\u0259ridir \u2013 bu c\u00fcr x\u00fcsusiyy\u0259tl\u0259ri \u00e7ox az adam d\u0259st\u0259kl\u0259yir. G\u0259lin modell\u0259r\u0259 ke\u00e7\u0259k.<\/p>\n<h3>Uy\u011funla\u015fma modell\u0259ri (Consistency Models)<\/h3>\n<p>\n\u00dcmumiyy\u0259tl\u0259, veril\u0259nl\u0259r bazalar\u0131nda konsistensiya modeli n\u0259dir? Bu, paylanm\u0131\u015f sistemin m\u00fc\u015ft\u0259ril\u0259r\u0259 hans\u0131 m\u0259lumatlar\u0131n v\u0259 hans\u0131 ard\u0131c\u0131ll\u0131qla t\u0259qdim edil\u0259c\u0259yin\u0259 dair verdiyi m\u00fc\u0259yy\u0259n z\u0259man\u0259tl\u0259rdir.<\/p>\n<p>\u018fslind\u0259, b\u00fct\u00fcn konsistensiya modell\u0259ri, paylanm\u0131\u015f sistemin n\u0259y\u0259 q\u0259d\u0259r bir nodda, m\u0259s\u0259l\u0259n, bir noutbukun \u00fcz\u0259rind\u0259 i\u015fl\u0259y\u0259n sistem\u0259 b\u0259nz\u0259diyi il\u0259 ba\u011fl\u0131d\u0131r. V\u0259 sistemin, minl\u0259rl\u0259 co\u011frafi b\u00f6lg\u0259l\u0259rd\u0259 olan \"Nod\" \u00fcz\u0259rind\u0259 i\u015fl\u0259diyi zaman, bunlar\u0131n \u00f6z\u00fcnd\u0259 b\u00fct\u00fcn bu x\u00fcsusiyy\u0259tl\u0259rin avtomatik \u015f\u0259kild\u0259 yerin\u0259 yetirilib-yetirilm\u0259diyin\u0259 bax\u0131l\u0131r.<\/p>\n<p>Bu s\u0259b\u0259bd\u0259n konsistensiya modell\u0259ri yaln\u0131z paylanm\u0131\u015f sisteml\u0259r\u0259 aiddir. \u018fvv\u0259lki d\u00f6vrl\u0259rd\u0259 bir vertikal miqyasda \u00e7al\u0131\u015fan b\u00fct\u00fcn sisteml\u0259r bel\u0259 probleml\u0259rl\u0259 qar\u015f\u0131la\u015fm\u0131rd\u0131. Orada yaln\u0131z bir Buffer Cache var idi v\u0259 b\u00fct\u00fcn m\u0259lumatlar h\u0259mi\u015f\u0259 oradan oxunurdu.<\/p>\n<h3>Strong modeli<\/h3>\n<p>\n\u018fslind\u0259, ilk model \u2013 Strong (ya da onu tez-tez Rise Ability adland\u0131r\u0131r). Bu konsistensiya modeli, h\u0259r bir d\u0259yi\u015fiklik, onun ba\u015f verdiyi t\u0259sdiqi al\u0131nan kimi, sistemin b\u00fct\u00fcn istifad\u0259\u00e7il\u0259rin\u0259 g\u00f6r\u00fcnm\u0259sini t\u0259min edir.<\/p>\n<p>Bu, veril\u0259nl\u0259r bazas\u0131nda b\u00fct\u00fcn hadis\u0259l\u0259rin qlobal ard\u0131c\u0131ll\u0131\u011f\u0131n\u0131 yarad\u0131r. Bu, konsistensiyan\u0131n \u00e7ox g\u00fccl\u00fc bir x\u00fcsusiyy\u0259tidir v\u0259 h\u0259qiq\u0259t\u0259n d\u0259, \u00e7ox bahal\u0131d\u0131r. Buna baxmayaraq, bu \u00e7ox yax\u015f\u0131 d\u0259st\u0259kl\u0259nir. Sad\u0259c\u0259 olaraq, bu \u00e7ox bahal\u0131 v\u0259 yava\u015fd\u0131r \u2013 ona g\u00f6r\u0259 d\u0259 nadir hallarda istifad\u0259 olunur. Buna Rise Ability deyilir.<\/p>\n<p>H\u0259m\u00e7inin, \"Spanner\"d\u0259 d\u0259st\u0259kl\u0259n\u0259n daha g\u00fccl\u00fc bir x\u00fcsusiyy\u0259t var \u2013 buna Xarici Konsistensiya deyilir. Bunun haqq\u0131nda bir az sonra dan\u0131\u015faca\u011f\u0131q.<\/p>\n<h3>Causal<\/h3>\n<p>\nN\u00f6vb\u0259ti model Causal'd\u0131r, bu da m\u0259hz sad\u0131q oldu\u011fum \u015feydir. Strong v\u0259 Causal aras\u0131nda daha bir ne\u00e7\u0259 alt s\u0259viyy\u0259 var, amma bunlar\u0131n ham\u0131s\u0131 Causal-a aiddir. Bu, vacib bir modeldir, \u00e7\u00fcnki bu, b\u00fct\u00fcn modell\u0259r aras\u0131nda \u0259n g\u00fccl\u00fcs\u00fcd\u00fcr, \u015f\u0259b\u0259k\u0259 v\u0259 ya par\u00e7alanmalar oldu\u011fu zaman \u0259n g\u00fccl\u00fc konsistensiyad\u0131r.<\/p>\n<p>Causals, faktiki olaraq, hadis\u0259l\u0259rin s\u0259b\u0259b-n\u0259tic\u0259 \u0259laq\u0259si il\u0259 ba\u011fl\u0131 oldu\u011fu v\u0259ziyy\u0259tdir. \u00c7ox vaxt m\u00fc\u015ft\u0259ri n\u00f6qteyi-n\u0259z\u0259rind\u0259n bunu \"Read your own rights\" kimi ba\u015fa d\u00fc\u015f\u00fcrl\u0259r. \u018fg\u0259r m\u00fc\u015ft\u0259ri b\u0259zi d\u0259y\u0259rl\u0259ri m\u00fc\u015fahid\u0259 edibs\u0259, o, ke\u00e7mi\u015fd\u0259 olan d\u0259y\u0259rl\u0259ri g\u00f6r\u0259 bilmir. O art\u0131q prefiks oxumalar\u0131n\u0131 g\u00f6rm\u0259y\u0259 ba\u015flay\u0131r. Bunlar\u0131n ham\u0131s\u0131 bir-birin\u0259 b\u0259nz\u0259yir.<br \/>\nCausals, konsistensiya modeli olaraq, serverd\u0259 hadis\u0259l\u0259rin m\u00fc\u0259yy\u0259n ard\u0131c\u0131ll\u0131qda qism\u0259n s\u0131ralanmas\u0131d\u0131r; bu zaman b\u00fct\u00fcn m\u00fc\u015ft\u0259ril\u0259rd\u0259n g\u0259l\u0259n hadis\u0259l\u0259r eyni ard\u0131c\u0131ll\u0131qla m\u00fc\u015fahid\u0259 olunur. Bu halda \u2013 Leonard v\u0259 Penny.<\/p>\n<h3>Eventual<\/h3>\n<p>\n\u00dc\u00e7\u00fcnc\u00fc model \u2013 Eventual Consistency'dir. Bu, tamamil\u0259 b\u00fct\u00fcn paylanm\u0131\u015f sisteml\u0259r t\u0259r\u0259find\u0259n d\u0259st\u0259kl\u0259n\u0259n, m\u0259na k\u0259sb ed\u0259n minimal modeldir. Bu, o dem\u0259kdir ki, veril\u0259nl\u0259rd\u0259 m\u00fc\u0259yy\u0259n d\u0259yi\u015fiklikl\u0259r ba\u015f verdikd\u0259, bir zaman i\u00e7ind\u0259 onlar konsistent olur.<\/p>\n<p>Bu anlarda o he\u00e7 n\u0259 demir, \u0259ks halda External Consistency-y\u0259 \u00e7evril\u0259rdi - tamamil\u0259 f\u0259rqli bir hekay\u0259 olard\u0131. Lakin bu, \u00e7ox populyar bir modeldir, \u0259n yayg\u0131n olan\u0131d\u0131r. Default olaraq, b\u00fct\u00fcn paylanm\u0131\u015f sistem istifad\u0259\u00e7il\u0259ri m\u0259hz Eventual Consistency-d\u0259n istifad\u0259 edirl\u0259r.<\/p>\n<p>B\u0259zi m\u00fcqayis\u0259li n\u00fcmun\u0259l\u0259r g\u0259tirm\u0259k ist\u0259yir\u0259m:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/c23e59b30d96de6ec456aaa76c67ad61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBu oxlar n\u0259 dem\u0259kdir?<\/p>\n<ul>\n<li><b>Gecikme.<\/b> Konsistensiya g\u00fcc\u00fc artd\u0131qca, anlay\u0131\u015fl\u0131 s\u0259b\u0259bl\u0259rd\u0259n daha \u00e7ox olur: daha \u00e7ox yaz\u0131 etm\u0259k, klasterd\u0259 i\u015ftirak ed\u0259n b\u00fct\u00fcn hostlardan v\u0259 nodlardan t\u0259sdiq almaq laz\u0131m g\u0259lir ki, m\u0259lumat orada art\u0131q var. Buna g\u00f6r\u0259 d\u0259 Eventual Consistency-d\u0259 \u0259n s\u00fcr\u0259tli cavabd\u0131r, \u00e7\u00fcnki orada ad\u0259t\u0259n h\u0259r \u015fey, h\u0259tta yadda\u015fda da qeyd\u0259 al\u0131na v\u0259 bununla kifay\u0259tl\u0259nil\u0259 bil\u0259r.<\/li>\n<li><b>M\u00f6vcudluq.<\/b> Bunu sistemin \u015f\u0259b\u0259k\u0259 k\u0259sintil\u0259ri, partitions v\u0259 ya dig\u0259r nasazl\u0131qlarla cavab verm\u0259 imkan\u0131 kimi anlad\u0131qda - konsistensiya modelinin azald\u0131lmas\u0131 il\u0259 m\u00f6vcudluq artar, \u00e7\u00fcnki bizim yaln\u0131z bir hostun \u00e7al\u0131\u015fmas\u0131 v\u0259 bu m\u0259lumatlar\u0131 verm\u0259si kifay\u0259tdir. Eventual Consistency m\u0259lumatlarla ba\u011fl\u0131 he\u00e7 bir z\u0259man\u0259t vermir - bu, ist\u0259nil\u0259n \u015fey ola bil\u0259r.<\/li>\n<li><b>Anomaliyalar.<\/b> Bu halda, \u0259lb\u0259td\u0259, anomaliyalar\u0131n say\u0131 art\u0131r. G\u00fccl\u00fc Konsistensiya \u00fc\u00e7\u00fcn dem\u0259k olar ki, he\u00e7 bir anomaliya olmamal\u0131d\u0131r, lakin Eventual Consistency-d\u0259 h\u0259r c\u00fcr anomaliya ola bil\u0259r. Suallara s\u0259b\u0259b olur: niy\u0259 insanlar Eventual Consistency-ni se\u00e7irl\u0259r, \u0259g\u0259r orada anomaliyalar varsa? Cavab budur ki, Eventual Consistency modell\u0259ri istifad\u0259 oluna bil\u0259r, anomaliyalarsa, m\u0259s\u0259l\u0259n, q\u0131sa bir zaman m\u00fcdd\u0259tind\u0259 m\u00f6vcuddur; oxumaq \u00fc\u00e7\u00fcn master istifad\u0259 etm\u0259k imkan\u0131 var v\u0259 nisb\u0259t\u0259n konsistent m\u0259lumatlar oxumaq m\u00fcmk\u00fcnd\u00fcr; tez-tez g\u00fccl\u00fc konsistensiya modell\u0259rind\u0259n istifad\u0259 etm\u0259 imkan\u0131 var. Praktikas\u0131 budur ki, \u00e7ox vaxt anomaliyan\u0131n say\u0131 zamanla m\u0259hduddur.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CAP Teoremas\u0131<\/h3>\n<p>\nConsistency, availability s\u00f6zl\u0259rini g\u00f6rd\u00fckd\u0259, a\u011fl\u0131n\u0131za n\u0259 g\u0259lir? D\u00fczd\u00fcr - CAP teoremas\u0131! M\u0259n indi bir mifin \u00fcst\u00fcnd\u0259n ke\u00e7m\u0259k ist\u0259yir\u0259m... Bu m\u0259n deyil\u0259m - Martin Kleppmann, m\u00fck\u0259mm\u0259l bir m\u0259qal\u0259, m\u00fck\u0259mm\u0259l bir kitab yazm\u0131\u015fd\u0131r.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/02a9b84585218c4e85afd65f7e88aa26.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCAP teoremas\u0131 \u2013 2000-ci ill\u0259rd\u0259 formala\u015fm\u0131\u015f bir prinsipdir ki, Consistency, Availability, Partitions: h\u0259r hans\u0131 iki se\u00e7in, \u00fc\u00e7\u00fcnc\u00fcs\u00fcn\u00fc se\u00e7\u0259 bilm\u0259zsiniz. Bu, m\u00fc\u0259yy\u0259n bir prinsip idi. Bir ne\u00e7\u0259 ild\u0259n sonra teorema olaraq s\u00fcbut edildi, bunu Gilbert v\u0259 Lynch etdil\u0259r. Sonra bu, \u015f\u00fcar kimi istifad\u0259 olunma\u011fa ba\u015flad\u0131 - sisteml\u0259r CA, CP, AP v\u0259 s. olaraq t\u0259snifl\u0259\u015fm\u0259y\u0259 ba\u015flad\u0131.<\/p>\n<p>Bu teorema \u0259slind\u0259 hans\u0131 hallarda s\u00fcbut olundu... Birincisi, M\u00f6vcudluq, s\u0131f\u0131rdan y\u00fcz\u0259 q\u0259d\u0259r davaml\u0131 bir d\u0259y\u0259r kimi (0 - sistem \"\u00f6l\u00fcd\u00fcr\", 100 - tez cavab verir; biz onu bel\u0259 d\u00fc\u015f\u00fcnm\u0259y\u0259 \u00f6yr\u0259\u015fmi\u015fik) deyil, icra at\u0131lamalar\u0131n\u0131n b\u00fct\u00fcn m\u00fcdd\u0259tind\u0259 m\u0259lumat qay\u0131tma\u011f\u0131 t\u0259min ed\u0259n bir alqoritm x\u00fcsusiyy\u0259ti kimi n\u0259z\u0259rd\u0259n ke\u00e7irilib.<\/p>\n<p>Cavab m\u00fcdd\u0259ti haqq\u0131nda he\u00e7 bir s\u00f6z yoxdur! M\u0259lumatlar\u0131 100 ild\u0259n sonra qaytaran bir alqoritm var - tamamil\u0259 g\u00f6z\u0259l available-alqoritm, CAP teoremas\u0131n\u0131n bir hiss\u0259sidir.<br \/>\n\u0130kincisi: teorema eyni a\u00e7ar d\u0259y\u0259rinin d\u0259yi\u015fiklikl\u0259rin\u0259 g\u00f6r\u0259 s\u00fcbut edilmi\u015fdir, bu d\u0259yi\u015fiklikl\u0259rin is\u0259 resizable x\u0259tti olmas\u0131d\u0131r. Bu, dem\u0259kdir ki, faktiki olaraq, bunlar az istifad\u0259 olunur, \u00e7\u00fcnki dig\u0259r Eventual Consistency, Strong Consistency modell\u0259ri var.<\/p>\n<p>B\u00fct\u00fcn bunlar n\u0259y\u0259 g\u00f6r\u0259dir? CAP teoremas\u0131 o formada, hans\u0131 ki, s\u00fcbut edilib, praktik olaraq t\u0259tbiq edil\u0259 bilmir, nadir istifad\u0259 olunur. Teorik formada bir \u015f\u0259kild\u0259 h\u0259r \u015feyi m\u0259hdudla\u015fd\u0131r\u0131r. N\u0259tic\u0259d\u0259, bir prinsip yaran\u0131r ki, bu da intuitiv olaraq do\u011frudur, lakin \u00fcmumiyy\u0259tl\u0259 s\u00fcbut edilmir.<\/p>\n<h3>Kausall\u0131q konsistentliyi \u2013 \u0259n g\u00fccl\u00fc modeldir.<\/h3>\n<p>\nHaz\u0131rda ba\u015f ver\u0259nl\u0259r \u2013 \u00fc\u00e7 \u015feyi \u0259ld\u0259 etm\u0259k m\u00fcmk\u00fcnd\u00fcr: Consistency, Availability, Partitions vasit\u0259sil\u0259 \u0259ld\u0259 edilir. X\u00fcsusil\u0259, Kausall\u0131q konsistentliyi \u2013 Partitions (\u015f\u0259b\u0259k\u0259 k\u0259sintil\u0259ri) olduqda bel\u0259 i\u015fl\u0259y\u0259n \u0259n g\u00fccl\u00fc konsistentlik modelidir. Buna g\u00f6r\u0259 d\u0259, bu b\u00f6y\u00fck maraq do\u011furur v\u0259 biz bu il\u0259 m\u0259\u015f\u011fuluq.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/c4320294320261858a6d22faa97b9e23.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBu, birincisi, t\u0259tbiq inki\u015faf etdiricil\u0259rinin i\u015fini asanla\u015fd\u0131r\u0131r. X\u00fcsusil\u0259, server t\u0259r\u0259find\u0259n b\u00f6y\u00fck d\u0259st\u0259k olma\u011f\u0131: b\u00fct\u00fcn qeydl\u0259rin, hans\u0131 ki, bir m\u00fc\u015ft\u0259ri daxilind\u0259 ba\u015f verir, dig\u0259r m\u00fc\u015ft\u0259ri \u00fcst\u00fcnd\u0259 m\u00fc\u0259yy\u0259n bir ard\u0131c\u0131ll\u0131qla g\u0259lm\u0259si z\u0259man\u0259tidir. \u0130kincisi, o, partitions-\u0259 d\u00f6z\u0259 bilir.<\/p>\n<h3>MongoDB-nin daxili m\u0259tb\u0259xi.<\/h3>\n<p>\nNahar vaxt\u0131n\u0131 unutmadan, m\u0259tb\u0259x\u0259 ke\u00e7irirk. M\u0259n sistem modelind\u0259n dan\u0131\u015faca\u011fam, y\u0259ni MongoDB-nin n\u0259 oldu\u011funu, bununla ilk d\u0259f\u0259 e\u015fid\u0259nl\u0259r \u00fc\u00e7\u00fcn.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/a1784442ff1c44403b5347f4f43a1197.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/a1f9bcb4daebb43e4fc848a5f5f07c60.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMongoDB (bundan sonra \u00abMongoDB\u00bb) \u2013 \u015faquli miqyaslanma d\u0259st\u0259kl\u0259y\u0259n, y\u0259ni \u015farding, paylanm\u0131\u015f sistemdir; v\u0259 h\u0259r bir sharda o, m\u0259lumatlar\u0131n art\u0131q oldu\u011fu, y\u0259ni replikasiyonu da d\u0259st\u0259kl\u0259yir.<\/p>\n<p>MongoDB-d\u0259 (m\u00fcraci\u0259t etm\u0259y\u0259n DB) \u015farding avtomatik olaraq balansla\u015fd\u0131rma h\u0259yata ke\u00e7irir, y\u0259ni, h\u0259r bir s\u0259n\u0259d kolleksiyas\u0131 (y\u0259ni, riyazi m\u0259lumatlar\u0131n terminologiyas\u0131nda \u00abc\u0259dv\u0259l\u00bb) hiss\u0259l\u0259r\u0259 ayr\u0131l\u0131r, v\u0259 server avtomatik olaraq onlar\u0131 sharlara k\u00f6\u00e7\u00fcr\u00fcr.<\/p>\n<p>Sor\u011fu Router, m\u00fc\u015ft\u0259ri \u00fc\u00e7\u00fcn bir m\u00fc\u015ft\u0259ri olaraq i\u015fl\u0259yir, onun vasit\u0259sil\u0259 i\u015fl\u0259yir. Art\u0131q harada v\u0259 hans\u0131 m\u0259lumatlar\u0131n oldu\u011funu bilir, b\u00fct\u00fcn sor\u011fular\u0131 d\u00fczg\u00fcn sharda y\u00f6nl\u0259ndirir.<\/p>\n<p>Ba\u015fqa bir vacib m\u0259s\u0259l\u0259: MongoDB - t\u0259k ustad\u0131r. Bir Primary var - o, \u00f6z\u00fcnd\u0259 saxlad\u0131\u011f\u0131 a\u00e7arlar\u0131 d\u0259st\u0259kl\u0259y\u0259n qeydl\u0259ri g\u00f6t\u00fcr\u0259 bil\u0259r. Multi-master yazmaq m\u00fcmk\u00fcn deyil.<\/p>\n<p>Biz 4.2 versiyas\u0131n\u0131 buraxd\u0131q - burada yeni maraql\u0131 \u015feyl\u0259r ortaya \u00e7\u0131xd\u0131. X\u00fcsusil\u0259, Lucene \u2013 axtar\u0131\u015f \u2013 tam olaraq \u00abMongo\u00bb-da executable java daxil edildi v\u0259 burada Lucene il\u0259, \u00abElastic\u00bb-d\u0259 oldu\u011fu kimi axtar\u0131\u015f aparmaq m\u00fcmk\u00fcn oldu.<\/p>\n<p>Yeni bir \u00fcr\u00fcn geli\u015ftirdik - Charts, ayn\u0131 zamanda \"Atlas\"ta (kendi Cloud \"Mongo\") mevcut. \u00dccretsiz katmanlar\u0131 var - bununla deneme yapabilirsiniz. Charts'\u0131 \u00e7ok be\u011fendim - veri g\u00f6rselle\u015ftirmesi, olduk\u00e7a sezgisel.<\/p>\n<h3>Causal consistency bile\u015fenleri<\/h3>\n<p>\nBu konuyla ilgili yakla\u015f\u0131k 230 makale sayd\u0131m - Leslie Lampert'tan. \u015eu anda akl\u0131mdan baz\u0131 b\u00f6l\u00fcmlerini sizinle payla\u015faca\u011f\u0131m.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/e88b34b7a724e94837b944a4ddd21a04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer \u015fey Leslie Lampert'\u0131n 1970'lerde yazd\u0131\u011f\u0131 makaleyle ba\u015flad\u0131. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, bu konuyla ilgili h\u00e2l\u00e2 baz\u0131 ara\u015ft\u0131rmalar devam ediyor. \u015eu anda Causal consistency, da\u011f\u0131t\u0131k sistemlerin geli\u015fimiyle ilgili olarak ilgi g\u00f6r\u00fcyor.<\/p>\n<h3>M\u0259hdudiyy\u0259tl\u0259r<\/h3>\n<p>\nHangi k\u0131s\u0131tlamalar var? Bu asl\u0131nda en \u00f6nemli konulardan biri, \u00e7\u00fcnk\u00fc \u00fcretim sistemlerinin koydu\u011fu k\u0131s\u0131tlamalar, akademik makalelerdeki k\u0131s\u0131tlamalardan olduk\u00e7a farkl\u0131. Genellikle, bu k\u0131s\u0131tlamalar hayli yapay.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/9583ba9ff870e4ddc7aad4ba4c59ecc1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>\u00d6ncelikle, \"MongoDB\" tek anahtara sahiptir, daha \u00f6nce de s\u00f6yledi\u011fim gibi (bu durumu olduk\u00e7a basit hale getirir).<\/li>\n<li>Sistemin yakla\u015f\u0131k 10.000 shard desteklemesi gerekti\u011fini d\u00fc\u015f\u00fcn\u00fcyoruz. Bu de\u011feri a\u00e7\u0131k\u00e7a s\u0131n\u0131rlayan herhangi bir mimari karar alamay\u0131z.<\/li>\n<li>Bir bulutumuz var, ancak kullan\u0131c\u0131lar\u0131n binary dosyay\u0131 indirdi\u011finde, diz\u00fcst\u00fc bilgisayar\u0131nda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamas\u0131 gerekti\u011fini d\u00fc\u015f\u00fcn\u00fcyoruz.<\/li>\n<li>Ara\u015ft\u0131rmada nadiren kullan\u0131lan bir durum \u00f6ng\u00f6r\u00fcyoruz: d\u0131\u015f m\u00fc\u015fteriler her \u015feyi yapabilir. \"MongoDB\" a\u00e7\u0131k kaynakl\u0131d\u0131r. Dolay\u0131s\u0131yla, m\u00fc\u015fteriler olduk\u00e7a zeki veya k\u00f6t\u00fc niyetli olabilir - her \u015feyi k\u0131rmaya \u00e7al\u0131\u015fabilirler. Biz, Bizans Hatalar\u0131n\u0131n ortaya \u00e7\u0131kabilece\u011fini \u00f6ng\u00f6r\u00fcyoruz.<\/li>\n<li>D\u0131\u015f m\u00fc\u015fteriler i\u00e7in, perimetrin d\u0131\u015f\u0131ndaki \u00f6nemli bir k\u0131s\u0131tlama vard\u0131r: bu \u00f6zellik kapat\u0131ld\u0131\u011f\u0131nda, herhangi bir performans d\u00fc\u015f\u00fc\u015f\u00fc g\u00f6zlemlenmemelidir.<\/li>\n<li>Bir ba\u015fka \u00f6nemli nokta - tamamen akademik olmayan: \u00f6nceki s\u00fcr\u00fcmler ile gelecekteki s\u00fcr\u00fcmlerin uyumlulu\u011fu. Eski s\u00fcr\u00fcc\u00fcler, yeni g\u00fcncellemeleri desteklemeli ve veritaban\u0131 eski s\u00fcr\u00fcc\u00fcleri desteklemelidir.<\/li>\n<\/ul>\n<p>\nGenel olarak, t\u00fcm bunlar k\u0131s\u0131tlamalar getiriyor.<\/p>\n<h3>Causal consistency bile\u015fenleri<\/h3>\n<p>\n\u015eimdi baz\u0131 bile\u015fenleri anlataca\u011f\u0131m. Causal consistency genel olarak de\u011ferlendirildi\u011finde, bloklar halinde ay\u0131rabiliriz. Biz, belirli bir blo\u011fa ait \u00e7al\u0131\u015fmalardan se\u00e7tik: Dependency Tracking, saatlerin se\u00e7imleri, bu saatlerin nas\u0131l senkronize edilece\u011fi ve g\u00fcvenli\u011fi nas\u0131l sa\u011flad\u0131\u011f\u0131m\u0131z - bunlar, konu\u015faca\u011f\u0131m konular\u0131n genel \u00e7er\u00e7evesi.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/10c2631d6e61a280139b448628db763e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tam ba\u011f\u0131ml\u0131l\u0131k takibi (Full Dependency Tracking)<\/h3>\n<p>\nNeden gereklidir? Veriler tekrarland\u0131\u011f\u0131nda - her kay\u0131t, her veri de\u011fi\u015fikli\u011fi, hangi de\u011fi\u015fikliklere ba\u011fl\u0131 oldu\u011funu i\u00e7eren bilgiyi ta\u015f\u0131malar\u0131 i\u00e7in. En basit ve ilkel de\u011fi\u015fiklik, her mesaj\u0131n, i\u00e7erdi\u011fi kayd\u0131 ge\u00e7mi\u015f mesajlar hakk\u0131nda bilgi ta\u015f\u0131yacak \u015fekilde tasarlanmas\u0131d\u0131r:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/fa5d0086c3c77e33631d8a2cd5c217fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBu n\u00fcmun\u0259d\u0259 s\u00fcsl\u00fc m\u00f6t\u0259riz\u0259l\u0259rd\u0259ki n\u00f6mr\u0259 qeydl\u0259rin n\u00f6mr\u0259l\u0259ridir. B\u0259z\u0259n bu qeydl\u0259r tam \u015f\u0259kild\u0259 d\u0259y\u0259rl\u0259rl\u0259 birg\u0259 \u00f6t\u00fcr\u00fcl\u00fcr, b\u0259z\u0259n is\u0259 n\u0259 is\u0259 versiyalar g\u00f6nd\u0259rilir. M\u0259zmun bel\u0259dir ki, h\u0259r d\u0259yi\u015fiklik \u0259vv\u0259lki haqq\u0131nda m\u0259lumat\u0131 ehtiva edir (bu, a\u00e7\u0131q \u015f\u0259kild\u0259 i\u00e7\u0259risind\u0259 da\u015f\u0131n\u0131r).<\/p>\n<p>Niy\u0259 bu yana\u015fmadan istifad\u0259 etm\u0259m\u0259y\u0259 q\u0259rar verdik (tam izl\u0259m\u0259)? Ayd\u0131n olan odur ki, bu yana\u015fma praktik deyil: h\u0259r sosial \u015f\u0259b\u0259k\u0259d\u0259ki d\u0259yi\u015fiklik \u0259vv\u0259lki b\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259rd\u0259n as\u0131l\u0131d\u0131r v\u0259 bu, h\u0259r yenil\u0259m\u0259d\u0259 \"Facebook\" v\u0259 ya \"VKontakte\"-ni \u00f6t\u00fcr\u00fcr. Buna baxmayaraq, tam as\u0131l\u0131l\u0131q izl\u0259m\u0259si il\u0259 ba\u011fl\u0131 \u00e7oxlu t\u0259dqiqatlar var \u2013 bu, sosial \u015f\u0259b\u0259k\u0259l\u0259rd\u0259n \u0259vv\u0259lki bir \u015feydir; b\u0259zi hallarda bu, h\u0259qiq\u0259t\u0259n d\u0259 i\u015fl\u0259yir.<\/p>\n<h3>Aydin As\u0131l\u0131l\u0131q \u0130zl\u0259m\u0259 (Explicit Dependency Tracking)<\/h3>\n<p>\nN\u00f6vb\u0259ti yana\u015fma daha m\u0259hdudla\u015fd\u0131r\u0131lm\u0131\u015fd\u0131r. Burada da yaln\u0131z a\u00e7\u0131q as\u0131l\u0131 olan m\u0259lumatlar\u0131n \u00f6t\u00fcr\u00fclm\u0259si n\u0259z\u0259rd\u0259n ke\u00e7irilir. N\u0259l\u0259rin n\u0259d\u0259n as\u0131l\u0131 oldu\u011funu, ad\u0259t\u0259n, T\u0259tbiq m\u00fc\u0259yy\u0259n edir. M\u0259lumatlar replikasiya edildikd\u0259, sor\u011fu zaman\u0131 yaln\u0131z \u0259vv\u0259lki as\u0131l\u0131l\u0131qlar t\u0259min olundu\u011fu zaman cavablar t\u0259qdim olunur, y\u0259ni g\u00f6st\u0259rilmi\u015fdir. Bu, Causal consistency-nin nec\u0259 i\u015fl\u0259diyinin \u0259sas\u0131n\u0131 t\u0259\u015fkil edir.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/7fe101b998c1a0c922788d8d36a5243f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO, 5-ci qeydin 1, 2, 3, 4 qeydl\u0259rind\u0259n as\u0131l\u0131 oldu\u011funu g\u00f6r\u00fcr \u2013 buna g\u00f6r\u0259 d\u0259, m\u00fc\u015ft\u0259ri, Penny-nin icra etdiyi d\u0259yi\u015fiklikl\u0259r\u0259 \u00e7\u0131x\u0131\u015f \u0259ld\u0259 etm\u0259zd\u0259n \u0259vv\u0259l b\u00fct\u00fcn \u0259vv\u0259lki d\u0259yi\u015fiklikl\u0259rin veril\u0259nl\u0259r bazas\u0131nda ke\u00e7diyin\u0259 \u0259min olur.<\/p>\n<p>Bu da bizi qane etmir, \u00e7\u00fcnki h\u0259l\u0259 d\u0259 m\u0259lumat \u00e7oxdur v\u0259 bu, yava\u015fladacaq. Dig\u0259r bir yana\u015fma var\u2026<\/p>\n<h3>Lamport Saat\u0131 (Lamport Clock)<\/h3>\n<p>\nOnlar \u00e7ox k\u00f6hn\u0259dir. Lamport Saat\u0131 bu as\u0131l\u0131l\u0131qlar\u0131n bir skalar funksiya hal\u0131na g\u0259tirildiyini n\u0259z\u0259rd\u0259 tutur ki, bu da Lamport Saat\u0131 adlan\u0131r.<\/p>\n<p>Skalar funksiya m\u00fc\u0259yy\u0259n bir abstrakt \u0259d\u0259ddir. \u00c7ox vaxt onu m\u0259ntiqi zaman adland\u0131r\u0131rlar. H\u0259r hadis\u0259d\u0259 bu say\u011fac art\u0131r. Hal-haz\u0131rda proses t\u0259r\u0259find\u0259n bilin\u0259n say\u011fac h\u0259r mesaj\u0131 g\u00f6nd\u0259rir. Ayd\u0131nd\u0131r ki, prosesl\u0259r senkroniz\u0259 edilm\u0259mi\u015f ola bil\u0259r, onlarda tamamil\u0259 f\u0259rqli zaman ola bil\u0259r. Buna baxmayaraq, bu c\u00fcr mesaj m\u00fcbadil\u0259si sistemi bir \u015f\u0259kild\u0259 saatlar\u0131n balansla\u015fd\u0131r\u0131lmas\u0131na k\u00f6m\u0259k edir. Bu halda n\u0259 ba\u015f verir?<\/p>\n<p>M\u0259n o b\u00f6y\u00fck shard-\u0131 iki hiss\u0259y\u0259 b\u00f6lm\u00fc\u015f\u0259m ki, ayd\u0131n olsun: Friends bir nodda qala bil\u0259r, orada bir kolleksiyan\u0131n hiss\u0259si saxlan\u0131l\u0131r, Feed is\u0259 tamamil\u0259 f\u0259rqli bir nodda ola bil\u0259r ki, orada bu kolleksiyan\u0131n bir hiss\u0259si m\u00f6vcuddur. Ayd\u0131nd\u0131r ki, onlar nec\u0259 s\u0131rada olmas\u0131nlar? \u018fvv\u0259lc\u0259 Feed dey\u0259c\u0259k: \"Replika edildi\", sonra is\u0259 \u2013 Friends. \u018fg\u0259r sistem, Friends kolleksiyas\u0131ndak\u0131 as\u0131l\u0131l\u0131qlar t\u0259min olunmadan Feed-in g\u00f6st\u0259rilm\u0259m\u0259sin\u0259 z\u0259man\u0259t vermirs\u0259, o zaman m\u0259nim b\u0259hs etdiyim v\u0259ziyy\u0259t yarana bil\u0259r.<\/p>\n<p>Siz Feed-d\u0259 say\u011fac\u0131n m\u0259ntiqi zaman\u0131n\u0131n nec\u0259 artd\u0131\u011f\u0131n\u0131 g\u00f6r\u0259 bilirsiniz:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/bae152d1890b53804f2cb28122983df6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBununla birlikte, bu Lamport Saati ve Sebep uyumlulu\u011funun (Lamport Saati \u00fczerinden a\u00e7\u0131klanan) temel \u00f6zelli\u011fi \u015fudur: A ve B olaylar\u0131m\u0131z varsa ve B olay\u0131 A olay\u0131na ba\u011f\u0131ml\u0131ysa *, o halde Event A'n\u0131n LogicalTime'\u0131, Event B'nin LogicalTime'\u0131ndan daha azd\u0131r.<\/p>\n<p><i>* Bazen A'n\u0131n B'den \u00f6nce ger\u00e7ekle\u015fti\u011fi, yani A'n\u0131n B'den \u00f6nce oldu\u011fu s\u00f6ylenir - bu, ger\u00e7ekle\u015fmi\u015f t\u00fcm olaylar k\u00fcmesini k\u0131smen s\u0131ralayan bir ili\u015fkidir.<\/i><\/p>\n<p>Tam tersi yanl\u0131\u015ft\u0131r. Bu asl\u0131nda Lamport Saati'nin temel dezavantajlar\u0131ndan biri - k\u0131smi s\u0131ralama. E\u015fzamanl\u0131 olaylar kavram\u0131 vard\u0131r, yani ne (A B'den \u00f6nce oldu) ne de (A B'den \u00f6nce oldu) diyebiliriz. \u00d6rne\u011fin, Leonard'\u0131n ba\u015fka birini arkada\u015f olarak eklemesi (\u015fimdilik Leonard de\u011fil de Sheldon \u00f6rne\u011fin) bir \u00f6rnek olabilir.<br \/>\n\u0130\u015fte bu, Lamport saatleri ile \u00e7al\u0131\u015f\u0131rken s\u0131kl\u0131kla kullan\u0131lan bir \u00f6zelliktir: tam olarak i\u015fe bakar\u0131z ve bununla sonu\u00e7 \u00e7\u0131kar\u0131r\u0131z - bu olaylar\u0131n ba\u011f\u0131ml\u0131 olup olmad\u0131klar\u0131. \u00c7\u00fcnk\u00fc bir y\u00f6nde bu do\u011frudur: E\u011fer LogicalTime A, LogicalTime B'den k\u00fc\u00e7\u00fckse, o zaman B, A'dan \u00f6nce olamaz; ama e\u011fer b\u00fcy\u00fckse, olabilir.<\/p>\n<h3>Vekt\u00f6r saatleri (Vector Clock)<\/h3>\n<p>\nLamport saatlerinin mant\u0131ksal geli\u015ftirmesi Vekt\u00f6r saatleridir. Bunlar, burada bulunan her d\u00fc\u011f\u00fcm\u00fcn kendi ayr\u0131 saatini i\u00e7erdi\u011fi ve bunlar\u0131n bir vekt\u00f6r olarak iletildi\u011fi \u015fekilde farkl\u0131d\u0131r.<br \/>\nBu durumda, vekt\u00f6r\u00fcn s\u0131f\u0131r indeksinin Feed'e, birinci indeksinin ise Friends'e (bu d\u00fc\u011f\u00fcmlerin her biri) kar\u015f\u0131l\u0131k geldi\u011fini g\u00f6rebilirsiniz. Ve \u015fimdi artacaklar: s\u0131f\u0131r indeks 'Feed' kaydedilirken - 1, 2, 3:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/d89292686ed8dd41aef06090f16db1c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVekt\u00f6r saatleri neden daha iyidir? \u00c7\u00fcnk\u00fc hangi olaylar\u0131n e\u015fzamanl\u0131 oldu\u011funu ve bunlar\u0131n farkl\u0131 d\u00fc\u011f\u00fcmlerde ne zaman ger\u00e7ekle\u015fti\u011fini anlamaya olanak tan\u0131r. Bu, shardlama sistemleri i\u00e7in \u00e7ok \u00f6nemlidir, \u00f6rne\u011fin 'MongoDB'. Ancak biz bunu se\u00e7medik, oysa ki bu harika bir \u015fey ve m\u00fckemmel \u00e7al\u0131\u015f\u0131yor, belki bize de uygun olabilirdi...<\/p>\n<p>E\u011fer 10 bin shard\u0131m\u0131z varsa, 10 bin bile\u015feni iletemeyiz, her ne kadar s\u0131k\u0131\u015ft\u0131rsak veya ba\u015fka bir \u015fey denesek bile - yine de faydal\u0131 y\u00fck, bu vekt\u00f6r\u00fcn t\u00fcm hacminden kat kat daha az olacakt\u0131r. Bu y\u00fczden, kalbimizi ve di\u015flerimizi s\u0131karak bu yakla\u015f\u0131mdan vazge\u00e7tik ve ba\u015fka birine ge\u00e7tik.<\/p>\n<h3>Spanner TrueTime. Atom saatleri<\/h3>\n<p>\n\u2018Spanner\u2019dan bahsedece\u011fim. Bu harika bir \u015fey, tam XXI. y\u00fczy\u0131l: atom saatleri, GPS senkronizasyonu.<\/p>\n<p>Fikir nedir? \u2018Spanner\u2019 - bu Google'\u0131n sistemi, yak\u0131n zamanda insanlar i\u00e7in eri\u015filebilir hale geldi (onun \u00fcst\u00fcne SQL eklediler). Her i\u015flem orada belirli bir zaman damgas\u0131na sahiptir. Zaman senkronize oldu\u011fu i\u00e7in*, her olaya belirli bir zaman atanabilir - atom saatlerinin bir bekleme zaman\u0131 vard\u0131r, bu s\u00fcre dolduktan sonra garantili olarak ba\u015fka bir zaman ger\u00e7ekle\u015fir.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/707b5998fbb500d201aafffccc666f0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBel\u0259likl\u0259, sad\u0259c\u0259 DB-y\u0259 yazaraq v\u0259 m\u00fc\u0259yy\u0259n bir m\u00fcdd\u0259t g\u00f6zl\u0259y\u0259r\u0259k hadis\u0259l\u0259rin Serializability-ni avtomatik t\u0259min etm\u0259k m\u00fcmk\u00fcnd\u00fcr. Onlar\u0131n \u0259n g\u00fccl\u00fc Consistency modeli var ki, bu da \u0259sas\u0259n t\u0259qdim edil\u0259 bil\u0259c\u0259k \u2013 bu, External Consistency-dir.<\/p>\n<p>* Bu, Lemparta saatlar\u0131n\u0131n \u0259sas probleml\u0259rind\u0259n biridir \u2013 onlar he\u00e7 vaxt paylanm\u0131\u015f sisteml\u0259rd\u0259 sinkronla\u015fd\u0131r\u0131lm\u0131r. NTP olsa da, h\u0259l\u0259 d\u0259 yax\u015f\u0131 i\u015fl\u0259mir. \"Spanner\" atom saatlar\u0131 v\u0259 sinkronla\u015fd\u0131rma\u011fa malikdir, mikrosaniy\u0259l\u0259r\u0259 q\u0259d\u0259r.<\/p>\n<p>Niy\u0259 biz se\u00e7m\u0259dik? Biz sizin istifad\u0259\u00e7il\u0259rinizin daxil edilmi\u015f atom saatlar\u0131na sahib oldu\u011funu d\u00fc\u015f\u00fcnm\u00fcr\u00fck. Onlar h\u0259r laptopa daxil edildikd\u0259, super m\u00fck\u0259mm\u0259l GPS sinkronizasiyas\u0131 olacaq \u2013 o zaman b\u0259li... Ancaq indiy\u0259 q\u0259d\u0259r m\u00fcmk\u00fcn olan \u0259n yax\u015f\u0131 \u015fey \"Amazon\", Base Stations \u2013 fanatlar \u00fc\u00e7\u00fcn... Buna g\u00f6r\u0259 biz ba\u015fqa saatlar istifad\u0259 etdik.<\/p>\n<h3>Hibrid saatlar (Hybrid Clock)<\/h3>\n<p>\nBu, faktiki olaraq, Causal consistency-ni t\u0259min ed\u0259n \"MongoDB\"d\u0259 t\u0131k-t\u0131k ed\u0259n \u015feydir. Onlar hibrid n\u0259dir? Hibrid bir skalar d\u0259y\u0259rdir, amma iki komponentd\u0259n ibar\u0259tdir:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/dab03a87d9f6ee2e716f75baff1736bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>Birincisi \u2013 Unix d\u00f6vr\u00fc (\"komp\u00fcter d\u00fcnyas\u0131n\u0131n ba\u015flan\u011f\u0131c\u0131ndan b\u0259ri ne\u00e7\u0259 saniy\u0259 ke\u00e7mi\u015fdir\").<\/li>\n<li>\u0130kincisi \u2013 32-bit unsigned int olan bir inkrement.<\/li>\n<\/ul>\n<p>\nBu, \u0259slind\u0259, budur. Bel\u0259 bir yana\u015fma var: vaxtla \u0259laq\u0259li hiss\u0259 h\u0259r zaman saatlarla sinkronla\u015fd\u0131r\u0131l\u0131r; h\u0259r d\u0259f\u0259 yenil\u0259m\u0259 ba\u015f verdikd\u0259, bu hiss\u0259 saatlarla sinkronla\u015f\u0131r v\u0259 bel\u0259likl\u0259 vaxt h\u0259r zaman az-\u00e7ox d\u00fczg\u00fcn olur, inkrement is\u0259 eyni anda ba\u015f vermi\u015f hadis\u0259l\u0259ri f\u0259rql\u0259ndirm\u0259y\u0259 imkan verir.<\/p>\n<p>Bu, \"MongoDB\" \u00fc\u00e7\u00fcn niy\u0259 vacibdir? \u00c7\u00fcnki m\u00fc\u0259yy\u0259n bir zamana b\u0259rpa-updatel\u0259r etm\u0259y\u0259 imkan verir, y\u0259ni hadis\u0259 vaxtla indeksl\u0259\u015fdirilir. Bu, m\u00fc\u0259yy\u0259n hadis\u0259l\u0259ri t\u0259l\u0259b etdiyind\u0259 vacibdir; m\u0259lumat bazas\u0131 \u00fc\u00e7\u00fcn hadis\u0259l\u0259r \u2013 m\u00fc\u0259yy\u0259n zaman intervallar\u0131nda ba\u015f vermi\u015f d\u0259yi\u015fiklikl\u0259rdir.<\/p>\n<p>\u018fn vacib s\u0259b\u0259bi yaln\u0131z siz\u0259 dey\u0259c\u0259y\u0259m (xahi\u015f edir\u0259m, yaln\u0131z he\u00e7 kim\u0259 dem\u0259yin)! Biz bunu etdik, \u00e7\u00fcnki \"MongoDB\" OpLog-da s\u0131ralanm\u0131\u015f, indeksl\u0259\u015fdirilmi\u015f m\u0259lumatlar bel\u0259 g\u00f6r\u00fcn\u00fcr. OpLog \u2013 bu m\u0259lumat bazas\u0131nda ba\u015f vermi\u015f b\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259ri saxlayan bir m\u0259lumat strukturu: \u0259vv\u0259lc\u0259 onlar OpLog-a daxil olur, sonra is\u0259 replikasiya olunmu\u015f m\u0259lumat v\u0259 ya shard olaylar\u0131nda Storage-a t\u0259tbiq olunur.<\/p>\n<p>Bu, \u0259sas s\u0259b\u0259b idi. Yen\u0259 d\u0259 m\u0259lumat bazas\u0131n\u0131n inki\u015faf\u0131na praktik t\u0259l\u0259bl\u0259r var, bu da dem\u0259kdir ki, sad\u0259 olmal\u0131d\u0131r \u2013 az kod, m\u00fcmk\u00fcn q\u0259d\u0259r az pozulmu\u015f \u015feyl\u0259r olmal\u0131, bunlar\u0131 yenid\u0259n yazmaq v\u0259 s\u0131naqdan ke\u00e7irm\u0259k laz\u0131md\u0131r. Bizim oploqlar\u0131n hibrid saatlarla indeksl\u0259\u015fdirilm\u0259si \u00e7ox k\u00f6m\u0259k etdi v\u0259 d\u00fczg\u00fcn se\u00e7imi etm\u0259k imkan\u0131 verdi. Bu, h\u0259qiq\u0259t\u0259n \u00f6z\u00fcn\u00fc do\u011frultdu v\u0259 bir n\u00f6v sehrli \u015f\u0259kild\u0259 i\u015fl\u0259di, birinci prototipd\u0259. \u00c7ox g\u00f6z\u0259l idi!<\/p>\n<h3>Saatlar\u0131n sinkronizasiyas\u0131<\/h3>\n<p>\nElmi \u0259d\u0259biyyatda t\u0259svir olunan bir ne\u00e7\u0259 sinxronizasiya \u00fcsulu vard\u0131r. M\u0259n iki f\u0259rqli shard olduqda sinxronizasyadan dan\u0131\u015f\u0131ram. \u018fg\u0259r bir replikasiya seti varsa, burada he\u00e7 bir sinxronizasiyaya ehtiyac yoxdur: bu \u2018t\u0259k-master\u2019dir; b\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259rin daxil oldu\u011fu OpLog adl\u0131 bir sistemimiz var - bu halda h\u0259r \u015fey art\u0131q \u2018OpLog\u2019 i\u00e7ind\u0259 ard\u0131c\u0131l olaraq s\u0131ralanm\u0131\u015fd\u0131r. Lakin iki f\u0259rqli shard\u0131m\u0131z varsa, burada zaman sinxronizasiyas\u0131 vacibdir. Burada vektor saatlar\u0131 daha yax\u015f\u0131 k\u00f6m\u0259k edir! Amma bizd\u0259 yoxdur.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/7d3306747490ac044b7f8130defea0c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0130kinci \u00fcsul \u2018Hearthbeats\u2019dir. Zaman vahidind\u0259 ba\u015f ver\u0259n b\u0259zi siqnallar\u0131 m\u00fcbadil\u0259 ed\u0259 bil\u0259rsiniz. Lakin \u2018Hearthbeats\u2019 \u00e7ox yava\u015fd\u0131r, m\u00fc\u015ft\u0259rimiz \u00fc\u00e7\u00fcn latency t\u0259min ed\u0259 bilmirik.<\/p>\n<p>Do\u011fru zaman - \u0259lb\u0259tt\u0259 ki, \u0259la bir \u015feydir. Amma, yen\u0259 d\u0259, bu, ehtimal ki, g\u0259l\u0259c\u0259kdir\u2026 Lakin \u2018Atlas\u2019da art\u0131q bunu ed\u0259 bil\u0259rsiniz, art\u0131q s\u00fcr\u0259tli \u2018Amazon\u2019 sinxronizatorlar\u0131 var. Amma bu, ham\u0131 \u00fc\u00e7\u00fcn \u0259l\u00e7atan olmayacaq.<\/p>\n<p>Gossiping - bu, b\u00fct\u00fcn mesajlar\u0131n zaman m\u0259lumat\u0131n\u0131 ehtiva etm\u0259sidir. Bu, t\u0259xmin\u0259n istifad\u0259 etdiyimiz \u015feydir. Nodalardan, s\u00fcr\u00fcc\u00fc, mar\u015frutla\u015fd\u0131r\u0131c\u0131 data nodlar\u0131 aras\u0131nda h\u0259r bir mesaj - tam \u2018MongoDB\u2019-d\u0259 olan bu c\u00fcr elementl\u0259r, veril\u0259nl\u0259r bazas\u0131n\u0131n komponentl\u0259ri var ki, i\u00e7ind\u0259 axan saatlar var. H\u0259r yerd\u0259 hibrid zamanda bir d\u0259y\u0259ri m\u00f6vcuddur, bu, \u00f6t\u00fcr\u00fcl\u00fcr. 64 bit? Bu m\u00fcmk\u00fcnd\u00fcr, bu yararl\u0131d\u0131r.<\/p>\n<h3>B\u00fct\u00fcn bunlar bir yerd\u0259 nec\u0259 i\u015fl\u0259yir?<\/h3>\n<p>\nBurada bir replikasiya setini daha sad\u0259 ba\u015fa d\u00fc\u015fm\u0259k \u00fc\u00e7\u00fcn n\u0259z\u0259rd\u0259n ke\u00e7irir\u0259m. Burada Primary v\u0259 Secondary var. Secondary replikasiyan\u0131 h\u0259yata ke\u00e7irir v\u0259 h\u0259mi\u015f\u0259 tam olaraq Primary il\u0259 sinxron olmur.<\/p>\n<p>\u2018Primary\u2019d\u0259 m\u00fc\u0259yy\u0259n bir zaman d\u0259y\u0259ri il\u0259 bir insert olur. Bu insert daxili say\u011fac\u0131 11 art\u0131r\u0131r, \u0259g\u0259r bu maksimumdursa. Yoxsa, saat d\u0259y\u0259rl\u0259rini yoxlayacaq v\u0259 \u0259g\u0259r saat d\u0259y\u0259rl\u0259ri daha \u00e7oxdursa, saatlarla sinxronla\u015facaq. Bu is\u0259 zamanla s\u0131ralama\u011fa imkan tan\u0131y\u0131r.<\/p>\n<p>O yazd\u0131qdan sonra vacib bir an ba\u015f verir. \u2018MongoDB\u2019 d\u0259ki saatlar yaln\u0131z \u2018OpLog\u2019-da yaz\u0131 oldu\u011fu halda art\u0131r\u0131l\u0131r. Bu sistemin v\u0259ziyy\u0259tini d\u0259yi\u015f\u0259n hadis\u0259dir. B\u00fct\u00fcn klassik m\u0259qal\u0259l\u0259rd\u0259 hadis\u0259, mesaj\u0131n nod-a daxil olmas\u0131d\u0131r: mesaj g\u0259ldi - dem\u0259li, sistem v\u0259ziyy\u0259tini d\u0259yi\u015fdi.<\/p>\n<p>Bu, ara\u015fd\u0131rma zaman\u0131 h\u0259min mesaj\u0131n nec\u0259 \u015f\u0259rh edil\u0259c\u0259yini tam ba\u015fa d\u00fc\u015fm\u0259yin \u00e7\u0259tin olmas\u0131 il\u0259 ba\u011fl\u0131d\u0131r. Biz tamamil\u0259 bilirik ki, \u0259g\u0259r o \u2018OpLog\u2019-da \u0259ks olunmay\u0131bsa, o, he\u00e7 bir \u015f\u0259kild\u0259 \u015f\u0259rh edilm\u0259y\u0259c\u0259k v\u0259 sistemin v\u0259ziyy\u0259tini d\u0259yi\u015f\u0259n yegan\u0259 \u015fey \u2018OpLog\u2019-a yaz\u0131d\u0131r. Bu, h\u0259r \u015feyi asanla\u015fd\u0131r\u0131r: h\u0259m modelin sad\u0259l\u0259\u015fm\u0259sini, h\u0259m d\u0259 bir replikasiya seti \u00e7\u0259r\u00e7iv\u0259sind\u0259 ard\u0131c\u0131ll\u0131\u011f\u0131 t\u0259min etm\u0259y\u0259 imkan verir v\u0259 bir \u00e7ox dig\u0259r faydal\u0131 \u015feyl\u0259ri m\u00fcmk\u00fcn edir.<\/p>\n<p>D\u0259y\u0259r, art\u0131q \u00abOplog\u00bbda yaz\u0131l\u0131b \u2013 biz bilirik ki, \u00abOplog\u00bbda bu d\u0259y\u0259r var, v\u0259 onun vaxt\u0131 \u2013 12. \u0130ndi, dey\u0259k ki, oxuma ba\u015fqa bir noddan (\u0130kincil) ba\u015flay\u0131r, v\u0259 o art\u0131q mesajda afterClusterTime-i \u00f6t\u00fcr\u00fcr. O deyir: \u00abM\u0259n\u0259 laz\u0131md\u0131r, ba\u015f vermi\u015f b\u00fct\u00fcn hadis\u0259l\u0259r \u0259n az\u0131 12-d\u0259n sonra v\u0259 ya on iki zaman\u0131\u00bb (yuxar\u0131dak\u0131 \u015f\u0259kil\u0259 bax\u0131n).<\/p>\n<p>Buna Causal a consistent (CAT) deyilir. Teoriyada bel\u0259 bir anlay\u0131\u015f var ki, bu, \u00f6z-\u00f6z\u00fcn\u0259 konsistent olan bir zaman k\u0259siyidir. Bu halda, sistemin v\u0259ziyy\u0259ti, 12 vaxt\u0131nda m\u00fc\u015fahid\u0259 olunan bir hal kimi ifad\u0259 oluna bil\u0259r.<\/p>\n<p>\u0130ndiy\u0259 q\u0259d\u0259r burada he\u00e7 n\u0259 yoxdur, \u00e7\u00fcnki bu, \u0130kincil-in Primary-d\u0259n m\u0259lumatlar\u0131 replikasiya etm\u0259si laz\u0131m olan v\u0259ziyy\u0259ti simulyasiya edir. O g\u00f6zl\u0259yir... v\u0259 i\u015fte m\u0259lumatlar g\u0259ldi \u2013 o bu d\u0259y\u0259rl\u0259ri geri qaytar\u0131r.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/54d9de3e2696c1e5d19f4da206be090b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u00f6yle i\u015fl\u0259yir. Dem\u0259k olar ki.<\/p>\n<p>\u00abDem\u0259k olar ki\u00bb n\u0259 dem\u0259kdir? G\u0259lin f\u0259rz ed\u0259k ki, tutaq ki, bir insan var, o, bunun nec\u0259 i\u015fl\u0259diyini oxuyub anlad\u0131. Anlad\u0131 ki, h\u0259r d\u0259f\u0259 ClusterTime olur, daxili lojiq saatlar\u0131 yenil\u0259yir, v\u0259 sonra n\u00f6vb\u0259ti yaz\u0131 bir vahid art\u0131r\u0131r. Bu funksiyan\u0131n 20 s\u0259tiri var. F\u0259rz ed\u0259k ki, bu insan maksimum 64 bit-lik \u0259d\u0259d, bir vahid azd\u0131r.<\/p>\n<p>Niy\u0259 \u00abbir vahid azd\u0131r\u00bb? \u00c7\u00fcnki daxili saatlar bu d\u0259y\u0259r\u0259 qoyulacaq (a\u015fkar ki, bu indiki vaxtdan daha b\u00f6y\u00fck ola bil\u0259r), sonra \u00abOplog\u00bba yaz\u0131lacaq, v\u0259 saat bir vahid daha art\u0131r\u0131lacaq \u2013 v\u0259 art\u0131q maksimum d\u0259y\u0259r olacaq (orada sad\u0259c\u0259 b\u00fct\u00fcn 1-l\u0259r var, daha ir\u0259lil\u0259yi\u015f yoxdur, unsaint int-lar).<\/p>\n<p>Ayd\u0131nd\u0131r ki, bundan sonra sistem tamamil\u0259 eri\u015film\u0259z olur. Onu yaln\u0131z y\u00fckl\u0259m\u0259k, t\u0259mizl\u0259m\u0259k olur \u2013 \u00e7oxlu \u0259l i\u015fl\u0259ri. Tam \u0259l\u00e7atanl\u0131q:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/634b25fe0ef1e0af39181cd59c7b522f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u0259m\u00e7inin, \u0259g\u0259r bu hara da replikasiya edilirs\u0259, b\u00fct\u00fcn klaster d\u00fc\u015f\u0259c\u0259k. Tamamil\u0259 q\u0259bul edil\u0259 bilm\u0259z bir v\u0259ziyy\u0259t, ki, h\u0259r k\u0259s bunu \u00e7ox s\u00fcr\u0259tl\u0259 v\u0259 asanl\u0131qla t\u0259\u015fkil ed\u0259 bil\u0259r! Buna g\u00f6r\u0259 biz bu m\u0259s\u0259l\u0259y\u0259 \u0259n vacibl\u0259rd\u0259n biri olaraq baxd\u0131q. Bunu nec\u0259 \u00f6nl\u0259m\u0259k olar?<\/p>\n<h3>Bizim yolumuz \u2013 clusterTime-i imzalamaqd\u0131r.<\/h3>\n<p>\nBel\u0259c\u0259, bu mesajda \u00f6t\u00fcr\u00fcl\u00fcr (mavi m\u0259tn\u0259 q\u0259d\u0259r). Ancaq biz el\u0259c\u0259 d\u0259 imza yaratma\u011fa ba\u015flad\u0131q (mavi m\u0259tnd\u0259):<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/c16e985f9610e01a61293e0d6dde459b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0130mza, veril\u0259nl\u0259r bazas\u0131nda, qorunan perimetrin i\u00e7ind\u0259 saxlan\u0131lan a\u00e7arla yarad\u0131l\u0131r; \u00f6z\u00fc yarad\u0131l\u0131r, yenil\u0259nir (istifad\u0259\u00e7il\u0259r bunun he\u00e7 birini g\u00f6rm\u00fcr). Hash yarad\u0131l\u0131r, v\u0259 h\u0259r mesaj yarad\u0131lark\u0259n imzalan\u0131r, al\u0131nd\u0131qda is\u0259 t\u0259sdiql\u0259nir.<br \/>\n\u0130nsanlarda sual yaran\u0131r: \u00abBu n\u0259 d\u0259r\u0259c\u0259d\u0259 yava\u015flad\u0131r?\u00bb Deyirdim ki, bu x\u00fcsusiyy\u0259t olmadan x\u00fcsusil\u0259 s\u00fcr\u0259tli i\u015fl\u0259m\u0259lidir.<\/p>\n<p>Bu halda Causal consistency istifad\u0259 etm\u0259k n\u0259 dem\u0259kdir? Bu, afterClusterTime parametrini n\u00fcmayi\u015f etdirm\u0259kdir. Bunu etm\u0259d\u0259n, o, b\u00fct\u00fcn hallarda d\u0259y\u0259rl\u0259ri \u00f6t\u00fcr\u0259c\u0259k. Gossiping, 3.6 versiyas\u0131ndan etibar\u0259n, h\u0259mi\u015f\u0259 i\u015fl\u0259yir.<\/p>\n<p>\u018fg\u0259r biz daimi imza yarad\u0131lmas\u0131n\u0131 saxlayarsaq, bu, sistemi yava\u015fladacaq, h\u0259tta x\u00fcsusiyy\u0259t olmad\u0131qda bel\u0259; bu, bizim yana\u015fmalar\u0131m\u0131za v\u0259 t\u0259l\u0259bl\u0259rimiz\u0259 uy\u011fun deyil. B\u0259s biz n\u0259 etdik?<\/p>\n<h3>Bunu tez et!<\/h3>\n<p>\n\u018fslind\u0259, olduqca sad\u0259 bir \u015fey, amma maraql\u0131 bir f\u0259nd - payla\u015faca\u011fam, b\u0259lk\u0259 kimins\u0259 i\u015fin\u0259 yarayar.<br \/>\nBizim imzalanm\u0131\u015f m\u0259lumatlar\u0131 saxlayan bir h\u0259\u015f var. B\u00fct\u00fcn m\u0259lumatlar k\u0259\u015fd\u0259n ke\u00e7ir. K\u0259\u015f konkret zamana imza atm\u0131r, \u0259ksin\u0259, aral\u0131\u011fa imza at\u0131r. M\u00fc\u0259yy\u0259n bir d\u0259y\u0259r g\u0259ldikd\u0259, biz aral\u0131\u011f\u0131 yarad\u0131r\u0131q, son 16 biti gizl\u0259dirik v\u0259 bu d\u0259y\u0259ri imzalay\u0131r\u0131q:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/f4810456f08ba1cc69730ac0079d4206.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBel\u0259 bir imza alaraq sistemi (\u015f\u0259xs\u0259n) 65 min d\u0259f\u0259 s\u00fcr\u0259tl\u0259ndiririk. Bu, m\u00fck\u0259mm\u0259l i\u015fl\u0259yir: eksperimentl\u0259ri qoyanda \u2013 h\u0259qiq\u0259t\u0259n d\u0259 10 min d\u0259f\u0259 ard\u0131c\u0131l yenil\u0259m\u0259 zaman\u0131 azald\u0131. Ayd\u0131nd\u0131r ki, onlar bir-birin\u0259 qar\u0131\u015fanda, bu, al\u0131nm\u0131r. Amma \u0259ks\u0259r praktik hallarda bu i\u015fl\u0259yir. Aral\u0131\u011f\u0131n imzas\u0131 il\u0259 birg\u0259 imza t\u0259hl\u00fck\u0259sizlik problemini h\u0259ll etm\u0259y\u0259 k\u00f6m\u0259k etdi.<\/p>\n<h3>N\u0259 \u00f6yr\u0259ndik?<\/h3>\n<p>\nBundan \u00e7\u0131xard\u0131\u011f\u0131m\u0131z d\u0259rsl\u0259r:<\/p>\n<ul>\n<li>Fikirl\u0259r, hekay\u0259l\u0259r, m\u0259qal\u0259l\u0259r oxumaq laz\u0131md\u0131r, \u00e7\u00fcnki \u00e7ox maraql\u0131 \u015feyl\u0259rimiz var. Biz m\u00fc\u0259yy\u0259n bir x\u00fcsusiyy\u0259t \u00fcz\u0259rind\u0259 i\u015fl\u0259y\u0259rk\u0259n (x\u00fcsusil\u0259 indi, tranzaksiyalar etdiyimiz zaman v\u0259 s.), oxumaq v\u0259 ba\u015fa d\u00fc\u015fm\u0259k laz\u0131md\u0131r. Bu vaxt apar\u0131r, amma \u0259slind\u0259 \u00e7ox faydal\u0131d\u0131r, \u00e7\u00fcnki yerl\u0259\u015fdiyimiz yer ayd\u0131n olur. Biz \u0259slind\u0259 yeni bir \u015fey icad etm\u0259mi\u015fik - sad\u0259c\u0259 inqrediyentl\u0259ri g\u00f6t\u00fcrm\u00fc\u015f\u00fck.\n<p>\u00dcmumiyy\u0259tl\u0259, akademik konfrans oldu\u011funda d\u00fc\u015f\u00fcnc\u0259 sistemind\u0259 m\u00fc\u0259yy\u0259n f\u0259rq olur (m\u0259s\u0259l\u0259n, \u00abSigmon\u00bb)- orada ham\u0131 yeni fikirl\u0259r\u0259 fokuslan\u0131r. Bizim algoritmimizin yeniliyi n\u0259dir? Burada x\u00fcsusi bir yenilik yoxdur. Yenilik daha \u00e7ox m\u0259vcud yana\u015fmalar\u0131 nec\u0259 birl\u0259\u015fdirdiyimizd\u0259dir. Buna g\u00f6r\u0259 birincisi - klassikl\u0259ri, L\u0259mpartdan ba\u015flamaqla oxumaq laz\u0131md\u0131r.<\/li>\n<li>\u0130stehsalda tamamil\u0259 f\u0259rqli t\u0259l\u0259bl\u0259r var. M\u0259n \u0259min\u0259m ki, bir \u00e7oxunuz \u00absfari\u015fedici\u00bb veril\u0259nl\u0259r bazalar\u0131 il\u0259 deyil, real, normal \u0259\u015fyalarla \u00fczl\u0259\u015firsiniz, onlar\u0131n availability, latency v\u0259 etibars\u0131zl\u0131q probleml\u0259ri var.<\/li>\n<li>Sonuncusu - m\u00fcxt\u0259lif fikirl\u0259r \u00fcz\u0259rind\u0259 d\u00fc\u015f\u00fcnm\u0259k v\u0259 \u00fcmumiyy\u0259tl\u0259 f\u0259rqli bir ne\u00e7\u0259 m\u0259qal\u0259ni bir yana\u015fmada birl\u0259\u015fdirm\u0259k m\u0259cburiyy\u0259tind\u0259 qald\u0131q. \u0130mza qoyma fikri, m\u0259s\u0259l\u0259n, Paxos protokolunu \u0259hat\u0259 ed\u0259n bir m\u0259qal\u0259d\u0259n g\u0259ldi, bu,.authorization protocolu i\u00e7ind\u0259 olmayan qeyri-vizantiya Failorlar\u0131 \u00fc\u00e7\u00fcn, vizantiya \u00fc\u00e7\u00fcn is\u0259 \u2013 authorization x\u0259ttind\u0259n k\u0259narda... \u00dcmumiyy\u0259tl\u0259, biz n\u0259 il\u0259 n\u0259tic\u0259l\u0259nmi\u015fik.\n<p>Burada tamamil\u0259 yeni bir \u015fey yoxdur! Amma biz bunlar\u0131 bir yer\u0259 qar\u0131\u015fd\u0131rd\u0131qdan sonra... Salat Olivier reseptinin sad\u0259c\u0259, yumurta, mayonez v\u0259 xiyarlar\u0131n art\u0131q icad olundu\u011fu oldu\u011fu kimi, bunun m\u0259nas\u0131 yoxdur dem\u0259si kimidir... Bu, dem\u0259k olar ki, eyni hekay\u0259dir.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/2f9e5cb77079f9a0f7bdf76430c3386e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBurada dayanaca\u011fam. T\u0259\u015f\u0259kk\u00fcr edir\u0259m!<\/p>\n<h3>Suallar<\/h3>\n<p>\n<b>\u0130\u015ftirak\u00e7\u0131dan sual (davamedir \u2013 V):<\/b> \u2013 T\u0259\u015f\u0259kk\u00fcr edir\u0259m, Mixail, t\u0259qdimat \u00fc\u00e7\u00fcn! Zamanla ba\u011fl\u0131 m\u00f6vzu maraql\u0131d\u0131r. Siz Gossiping istifad\u0259 edirsiniz. Dediniz ki, h\u0259r k\u0259sin \u00f6z zaman\u0131n\u0131 var, ham\u0131 \u00f6z yerli zaman\u0131n\u0131 bilir. M\u0259n bel\u0259 anlad\u0131m ki, bizd\u0259 s\u00fcr\u00fcc\u00fc var - m\u00fc\u015ft\u0259ril\u0259rin s\u00fcr\u00fcc\u00fc il\u0259 \u00e7ox ola bil\u0259r, query-planner\u2019lar da, shard-lar da \u00e7oxdur... B\u0259s sistem hans\u0131 v\u0259ziyy\u0259t\u0259 d\u00fc\u015f\u00fcr, \u0259g\u0259r bir anda bizd\u0259 uy\u011funsuzluq yaranarsa: kimins\u0259 fikri var ki, o bir d\u0259qiq\u0259 ir\u0259lid\u0259dir, kimins\u0259 is\u0259 bir d\u0259qiq\u0259 gerid\u0259? Biz harada olaca\u011f\u0131q?<\/p>\n<p><b>MT:<\/b> \u2013 \u018fslind\u0259, \u0259la suald\u0131r! M\u0259n d\u0259 shard-lar haqq\u0131nda dan\u0131\u015fmaq ist\u0259yirdim. \u018fg\u0259r sual\u0131 d\u00fczg\u00fcn ba\u015fa d\u00fc\u015fs\u0259m, bizd\u0259 bel\u0259 bir v\u0259ziyy\u0259t var: shard 1 v\u0259 shard 2 var, oxuma bu iki shard-dan ba\u015f verir - onlar\u0131n aras\u0131nda uy\u011funsuzluq var, \u00e7\u00fcnki onlar\u0131n bildiyi zaman f\u0259rqlidir, x\u00fcsus\u0259n d\u0259 onlar\u0131n log-lar\u0131nda m\u00f6vcud olan zaman.<br \/>\nG\u00f6t\u00fcr\u0259k ki, shard 1 bir milyon qeydl\u0259r edib, shard 2 is\u0259 he\u00e7 n\u0259 etm\u0259yib, amma sor\u011fu iki shard-a g\u0259lib. Birincisinin afterClusterTime d\u0259y\u0259ri bir milyondan \u00e7oxdur. Bel\u0259 bir v\u0259ziyy\u0259td\u0259, izah etdiyim kimi, shard 2 he\u00e7 vaxt cavab verm\u0259y\u0259c\u0259k.<\/p>\n<p><b>A:<\/b> \u2013 M\u0259n bilm\u0259k ist\u0259yirdim, onlar nec\u0259 senkroniz\u0259 olunur v\u0259 bir m\u0259ntiqi zaman se\u00e7irl\u0259r?<\/p>\n<p><b>MT:<\/b> \u2013 Onlar \u00e7ox asanl\u0131qla senkroniz\u0259 olurlar. Shard, afterClusterTime g\u0259ldiyi zaman, v\u0259 o 'Optolog'da zaman tapmad\u0131\u011f\u0131 zaman - no approved-i i\u015f\u0259 sal\u0131r. Y\u0259ni \u00f6z\u00fc \u00f6z zaman\u0131n\u0131 bu d\u0259y\u0259r\u0259 qald\u0131r\u0131r. Bu, onun bu sor\u011fuya uy\u011fun hadis\u0259l\u0259rinin olmad\u0131\u011f\u0131 dem\u0259kdir. O, bu hadis\u0259ni s\u00fcni \u015f\u0259kild\u0259 yarad\u0131r v\u0259 bel\u0259likl\u0259 Causal Consistent olur.<\/p>\n<p><b>A:<\/b> \u2013 B\u0259s, buna sonra \u015f\u0259b\u0259k\u0259d\u0259 it\u0259n hadis\u0259l\u0259r g\u0259ls\u0259, n\u0259 olar?<\/p>\n<p><b>MT:<\/b> \u2013 Shard-lar bel\u0259 yerl\u0259\u015fir ki, art\u0131q bu hadis\u0259l\u0259r g\u0259l\u0259 bilm\u0259z, \u00e7\u00fcnki bu single master-dir. \u018fg\u0259r o, art\u0131q qeyd edibs\u0259, o, art\u0131q g\u0259lm\u0259mi\u015f olacaq, yaln\u0131z sonrak\u0131lar olacaq. Bel\u0259 ola bilm\u0259z ki, haradasa n\u0259s\u0259 ili\u015fib qals\u0131n, sonra o, no write etsin, v\u0259 bu hadis\u0259l\u0259r g\u0259lsin - v\u0259 Causal consistency pozulsun. O, no write etdikd\u0259, ham\u0131s\u0131 g\u0259lm\u0259lidir (o, onlar\u0131 g\u00f6zl\u0259y\u0259c\u0259k).<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/dbbc7c5c653f0c9fa449cceb88ed62ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>A:<\/b> \u2013 M\u0259nim bir ne\u00e7\u0259 sual\u0131m var s\u0131ra il\u0259 ba\u011fl\u0131. Causal consistency m\u00fc\u0259yy\u0259n bir h\u0259r\u0259k\u0259tl\u0259r s\u0131ras\u0131n\u0131 n\u0259z\u0259rd\u0259 tutur ki, bunlar icra olunmal\u0131d\u0131r. \u018fg\u0259r bizim bir paketi itirs\u0259k, n\u0259 ba\u015f ver\u0259c\u0259k? 10-cu, 11-ci... 12-ci itdi, dig\u0259rl\u0259ri is\u0259 onun icras\u0131n\u0131 g\u00f6zl\u0259yir. V\u0259 bird\u0259n bizim ma\u015f\u0131n s\u00f6n\u00fcr, he\u00e7 n\u0259 ed\u0259 bilmirik. \u0130cra edilm\u0259d\u0259n \u0259vv\u0259l maksimum hans\u0131 uzunluqda s\u0131ra olmal\u0131d\u0131r? H\u0259r hans\u0131 bir v\u0259ziyy\u0259ti itirm\u0259kd\u0259 hans\u0131 fatal failure ba\u015f verir? H\u0259m d\u0259, \u0259g\u0259r biz yaz\u0131r\u0131qsa ki, \u0259vv\u0259lki bir v\u0259ziyy\u0259t var, dem\u0259li, biz buna \u0259saslanmal\u0131y\u0131q? Amma ondan \u0259saslanmam\u0131\u015f\u0131q!<\/p>\n<p><b>MT:<\/b> \u2013 Bu da g\u00f6z\u0259l suald\u0131r! B\u0259s n\u0259 edirik? MongoDB-d\u0259 kvorum qeydl\u0259ri, kvorum oxuma anlay\u0131\u015f\u0131 var. Hansi hallarda mesaj it\u0259 bil\u0259r? Qeydim qeyri-kvorumlu olduqda v\u0259 ya oxuma qeyri-kvorumlu olduqda (h\u0259m\u00e7inin hans\u0131sa zibil d\u0259 ola bil\u0259r).<br \/>\nCausal consistency il\u0259 ba\u011fl\u0131 geni\u015f bir eksperiment apar\u0131lm\u0131\u015fd\u0131r ki, bunun n\u0259tic\u0259si g\u00f6st\u0259rir ki, qeydl\u0259r v\u0259 oxuma qeyri-kvorum olduqda, Causal consistency pozulmalar\u0131 ba\u015f verir. Tam olaraq dediyiniz kimi!<\/p>\n<p>M\u0259sl\u0259h\u0259timiz: Causal consistency istifad\u0259 ed\u0259rk\u0259n, \u0259n az\u0131 kvorum oxumaqdan istifad\u0259 edin. Bu halda, he\u00e7 bir \u015fey it\u0259c\u0259k, h\u0259tta kvorum yazma it\u0259c\u0259k... Bu ortogonal bir v\u0259ziyy\u0259tdir: istifad\u0259\u00e7i m\u0259lumatlar\u0131n itm\u0259sini ist\u0259mirs\u0259, kvorum yazma\u011f\u0131 istifad\u0259 etm\u0259lidir. Causal consistency davaml\u0131l\u0131q z\u0259man\u0259ti vermir. Davaml\u0131l\u0131q z\u0259man\u0259tini replication v\u0259 replication il\u0259 ba\u011fl\u0131 mexanizm verir.<\/p>\n<p><b>A:<\/b> \u2013 Biz instance yarad\u0131r\u0131q, hans\u0131 ki, \u015fardinqi (master deyil, m\u00fcvafiq olaraq slave) yerin\u0259 yetirir, o, \u00f6z qur\u011fusunun unix vaxt\u0131na v\u0259 ya 'master'\u0131n vaxt\u0131na \u0259saslan\u0131r; ilk d\u0259f\u0259 yoxsa m\u00fct\u0259madi olaraq sinkronizasiya edilir?<\/p>\n<p><b>MT:<\/b> \u2013 \u0130ndi a\u00e7\u0131qlayacam. Shard (y\u0259ni, horizontal partisiya) \u2013 burada h\u0259mi\u015f\u0259 Primary var. V\u0259 shard-da 'master' ola bil\u0259r v\u0259 replika ola bil\u0259r. Lakin shard h\u0259mi\u015f\u0259 yazma\u011f\u0131 d\u0259st\u0259kl\u0259yir, \u00e7\u00fcnki o, m\u00fc\u0259yy\u0259n bir domeni d\u0259st\u0259kl\u0259m\u0259lidir (shard-da Primary yerl\u0259\u015fir).<\/p>\n<p><b>A:<\/b> \u2013 Y\u0259ni, h\u0259r \u015fey tamamil\u0259 'master' dan as\u0131l\u0131d\u0131r? H\u0259mi\u015f\u0259 'master' vaxt\u0131 istifad\u0259 olunur?<\/p>\n<p><b>MT:<\/b> \u2013 B\u0259li. \u0130fada etm\u0259k \u00fc\u00e7\u00fcn des\u0259k: saatlar t\u0131q\u0131lt\u0131 edir, 'master'a yazma ba\u015f verdikd\u0259, 'Opolog' da.<\/p>\n<p><b>A:<\/b> \u2013 Bizd\u0259 m\u00fc\u015ft\u0259ri var, o qo\u015fulur v\u0259 onun vaxt haqq\u0131nda he\u00e7 bir \u015fey bilm\u0259sin\u0259 ehtiyac yoxdur?<\/p>\n<p><b>MT:<\/b> \u2013 \u00dcmumiyy\u0259tl\u0259 he\u00e7 bir \u015fey bilm\u0259sin\u0259 ehtiyac yoxdur! M\u00fc\u015ft\u0259ri nec\u0259 i\u015fl\u0259diyini des\u0259k: m\u00fc\u015ft\u0259ri, Causal consistency istifad\u0259 etm\u0259k ist\u0259dikd\u0259, sessiya a\u00e7mal\u0131d\u0131r. \u0130ndi orada h\u0259r \u015fey var: sessiyada tranzaksiyalar v\u0259 h\u00fcquqlar\u0131 geri alma... Sessiya, m\u00fc\u015ft\u0259ri il\u0259 ba\u015f ver\u0259n m\u0259ntiqi hadis\u0259l\u0259rin s\u0131ralanmas\u0131d\u0131r.<\/p>\n<p>\u018fg\u0259r o, bu sessiyan\u0131 a\u00e7\u0131r v\u0259 orada Causal consistency ist\u0259diyini deyirs\u0259 (\u0259g\u0259r sessiya standart olaraq Causal consistency d\u0259st\u0259kl\u0259yirs\u0259), h\u0259r \u015fey avtomatik i\u015fl\u0259yir. Driver bu zaman\u0131 yadda saxlay\u0131r v\u0259 yeni mesaj alanda onu art\u0131r\u0131r. O, serverd\u0259n geri d\u00f6n\u0259n \u0259vv\u0259lki cavab\u0131n n\u0259 oldu\u011funu yadda saxlay\u0131r. N\u00f6vb\u0259ti sor\u011fu afterCluster ('bu vaxtdan daha \u00e7ox') ehtiva ed\u0259c\u0259k.<\/p>\n<p>M\u00fc\u015ft\u0259rid\u0259n tamamil\u0259 he\u00e7 bir \u015fey bilm\u0259si t\u0259l\u0259b olunmur! Bu, onun \u00fc\u00e7\u00fcn tamamil\u0259 \u015f\u00fc\u015f\u0259dir. \u018fg\u0259r insanlar bu funksiyalar\u0131 istifad\u0259 ed\u0259rs\u0259, n\u0259 etm\u0259y\u0259 imkan verir? Birincisi, ikinci planda etibarl\u0131 oxumaq m\u00fcmk\u00fcnd\u00fcr: Primary-y\u0259 yazmaq m\u00fcmk\u00fcnd\u00fcr, geolokasiyal\u0131 replika edilmi\u015f secondaries-d\u0259n oxumaq m\u00fcmk\u00fcnd\u00fcr v\u0259 bunun i\u015fl\u0259diyin\u0259 \u0259min olmaq m\u00fcmk\u00fcnd\u00fcr. Eyni zamanda, Primary-d\u0259 yaz\u0131lm\u0131\u015f sessiyalar h\u0259l\u0259 d\u0259 Secondary-y\u0259 \u00f6t\u00fcr\u00fcl\u0259 bil\u0259r, y\u0259ni sad\u0259c\u0259 bir sessiya deyil, bir ne\u00e7\u0259 sessiya istifad\u0259 etm\u0259k olar.<\/p>\n<p><b>A:<\/b> \u2013 Eventual consistency m\u00f6vzusu yeni Compute science qat\u0131na - CRDT (Conflict-free Replicated Data Types) tipli m\u0259lumatlara \u00e7ox ba\u011fl\u0131d\u0131r. Siz bu m\u0259lumat tipl\u0259rinin veril\u0259nl\u0259r bazas\u0131na inteqrasiya edilm\u0259si m\u0259s\u0259l\u0259sini m\u00fczakir\u0259 etmisinizmi v\u0259 bunun haqq\u0131nda n\u0259 dey\u0259 bil\u0259rsiniz?<\/p>\n<p><b>MT:<\/b> \u2013 Yax\u015f\u0131 suald\u0131r! CRDT yazma m\u00fcnaqi\u015f\u0259l\u0259ri \u00fc\u00e7\u00fcn m\u0259na k\u0259sb edir: MongoDB-d\u0259 \u2013 single master.<\/p>\n<p><b>A:<\/b> \u2013 M\u0259nim devopslardan bir sual\u0131m var. M\u00fcasir d\u00fcnyada bel\u0259 jezuityan v\u0259ziyy\u0259tl\u0259r olur ki, Bizans tipi bir u\u011fursuzluq ba\u015f verir v\u0259 qorunan perimetrin i\u00e7in\u0259 d\u00fc\u015fm\u00fc\u015f pis insanlar protokol il\u0259 m\u0259\u015f\u011ful olma\u011fa ba\u015flay\u0131b, x\u00fcsusi \u015f\u0259kild\u0259 haz\u0131rlanm\u0131\u015f paketl\u0259r g\u00f6nd\u0259r\u0259 bilirl\u0259rmi?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/99a521d04b416e6978aa68ce7c4a4c46.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MT:<\/b> \u2013 Qorunan perimetrin i\u00e7ind\u0259ki pis insanlar \u2013 Troya at\u0131 il\u0259 eynidir! Qorunan perimetrin i\u00e7ind\u0259ki pis insanlar bir \u00e7ox pis i\u015fl\u0259r g\u00f6r\u0259 bil\u0259rl\u0259r.<\/p>\n<p><b>A:<\/b> \u2013 Ayd\u0131nd\u0131r ki, serverd\u0259 sad\u0259c\u0259 bir de\u015fik qoymaq, bestizlik m\u0259qs\u0259dil\u0259 b\u00fct\u00fcn bir fill\u0259r zoopark\u0131n\u0131 \u00f6t\u00fcrm\u0259y\u0259 v\u0259 b\u00fct\u00fcn klasteri daimi olaraq a\u015f\u0131rma\u011fa imkan verm\u0259k\u2026 B\u0259rpa m\u00fcdd\u0259ti t\u0259l\u0259b ed\u0259c\u0259k\u2026 Sad\u0259c\u0259 olaraq, bu, d\u00fcz deyil. Dig\u0259r t\u0259r\u0259fd\u0259n, maraql\u0131 bir sual var: Ger\u00e7\u0259k h\u0259yatda, t\u0259cr\u00fcb\u0259d\u0259 bel\u0259 daxili h\u00fccumlar\u0131n ba\u015f verdiyi v\u0259ziyy\u0259tl\u0259r olurmu?<\/p>\n<p><b>MT:<\/b> \u2013 Real h\u0259yatda security breach hallar\u0131na az rast g\u0259ldiyim \u00fc\u00e7\u00fcn bunu dem\u0259k \u00e7\u0259tindir \u2013 ola bilsin, a\u00e7\u0131l\u0131r. Lakin inki\u015faf f\u0259ls\u0259f\u0259sin\u0259 g\u0259ldikd\u0259, biz bel\u0259 d\u00fc\u015f\u00fcn\u00fcr\u00fck: bizim bir perimetrimiz var ki, bu da t\u0259hl\u00fck\u0259sizlik i\u015fini g\u00f6r\u0259n u\u015faqlar\u0131 t\u0259min ed\u0259n bir qap\u0131, divard\u0131r; v\u0259 perimetrin daxilind\u0259 ist\u0259diyimiz h\u0259r \u015feyi ed\u0259 bil\u0259rik. Ayd\u0131nd\u0131r ki, bax\u0131\u015f imkan\u0131 olan istifad\u0259\u00e7il\u0259r var, bir d\u0259 kataloqu silm\u0259k imkan\u0131 olan istifad\u0259\u00e7il\u0259r var.<\/p>\n<p>\u0130stifad\u0259\u00e7il\u0259rin h\u00fcquqlar\u0131ndan as\u0131l\u0131 olaraq, ziyan\u0131, b\u0259lk\u0259 d\u0259, si\u00e7an ola bil\u0259r, b\u0259lk\u0259 d\u0259, fill\u0259. Ayd\u0131nd\u0131r ki, tam h\u00fcquqlara malik istifad\u0259\u00e7i ist\u0259diyini ed\u0259 bil\u0259r. \u0130stifad\u0259\u00e7i m\u0259hdud h\u00fcquqlara sahib olduqda ziyan daha az ola bil\u0259r. X\u00fcsusil\u0259, o sistemi m\u0259hv ed\u0259 bilmir.<\/p>\n<p><b>A:<\/b> \u2013 Qorunan perimetrd\u0259 kimins\u0259 server \u00fc\u00e7\u00fcn g\u00f6zl\u0259nilm\u0259z protokollar formala\u015fd\u0131rmas\u0131na c\u0259hd etm\u0259si, serveri sars\u0131tmaq v\u0259 \u015fansl\u0131 olduqda b\u00fct\u00fcn klasteri sars\u0131tma\u011fa \u00e7al\u0131\u015fmas\u0131\u2026 Bel\u0259 hallarda \"\u00e7ox yax\u015f\u0131\" olurmu?<\/p>\n<p><b>MT:<\/b> \u2013 Bel\u0259 \u015feyl\u0259r e\u015fitm\u0259mi\u015f\u0259m. Serveri bel\u0259 y\u0131xma\u011f\u0131n sirri yoxdur. Protokoldan i\u00e7\u0259ri girib, bir n\u0259f\u0259rin \u00f6z\u00fcn\u00fc tan\u0131tm\u0131\u015f istifad\u0259\u00e7i kimi, mesajda bir \u015fey yazmas\u0131 il\u0259 i\u00e7\u0259rid\u0259n y\u0131xma\u011f\u0131 bacarmas\u0131\u2026 \u018fslind\u0259 m\u00fcmk\u00fcn deyil, \u00e7\u00fcnki o, m\u00fctl\u0259q t\u0259sdiql\u0259n\u0259c\u0259k. \u0130st\u0259m\u0259y\u0259n istifad\u0259\u00e7il\u0259r \u00fc\u00e7\u00fcn bu t\u0259sdiqi dayand\u0131rma se\u00e7imi var \u2013 bu, onlar\u0131n probleml\u0259ri; onlar, sad\u0259c\u0259 olaraq, divarlar\u0131 \u00f6z \u0259ll\u0259ri il\u0259 da\u011f\u0131td\u0131lar v\u0259 ora bir fillin daxil olmas\u0131na icaz\u0259 verdil\u0259r\u2026 \u00dcmumiyy\u0259tl\u0259, b\u0259lk\u0259 d\u0259, ustalar kimi geyinib g\u0259lib onu \u00e7\u0259kib \u00e7\u0131xarmaq olar!<\/p>\n<p><b>A:<\/b> \u2013 T\u0259\u015f\u0259kk\u00fcr edir\u0259m, hesabat \u00fc\u00e7\u00fcn. Sergey (\"Yandex\"). \"Mongo\"da, Replica Set-d\u0259 s\u0259s ver\u0259n \u00fczvl\u0259rin say\u0131n\u0131 m\u0259hdudla\u015fd\u0131ran bir sabit var v\u0259 bu sabit 7-y\u0259 b\u0259rab\u0259rdir. Niy\u0259 bu sabitdir? Niy\u0259 bu, bir parametr deyil?<\/p>\n<p><b>MT:<\/b> \u2013 Bizim Replica Set-d\u0259 40 nod da olur. H\u0259mi\u015f\u0259 \u0259ks\u0259riyy\u0259t t\u0259l\u0259b olunur. Hans\u0131 versiya oldu\u011funu bilmir\u0259m\u2026<\/p>\n<p><b>A:<\/b> \u2013 Replica Set-d\u0259 s\u0259sverm\u0259y\u0259n \u00fczvl\u0259ri i\u015f\u0259 salmaq m\u00fcmk\u00fcnd\u00fcr, lakin s\u0259s ver\u0259nl\u0259rin say\u0131 maksimum 7 olmal\u0131d\u0131r. Bel\u0259 bir halda, \u0259g\u0259r bizim Replica Set 3 m\u0259lumat m\u0259rk\u0259zin\u0259 yay\u0131l\u0131bsa, \u00e7\u0131x\u0131\u015f etm\u0259yi nec\u0259 idar\u0259 ed\u0259c\u0259yik? Bir m\u0259lumat m\u0259rk\u0259zi asanl\u0131qla ba\u011flana bil\u0259r v\u0259 ba\u015fqa bir ma\u015f\u0131n da \u00e7\u0131x\u0131\u015f ed\u0259 bil\u0259r.<\/p>\n<p><b>MT:<\/b> \u2013 Bu art\u0131q hesabat\u0131n bir az xaricind\u0259dir. Bu \u00fcmumi bir suald\u0131r. B\u0259lk\u0259, sonra bunu izah ed\u0259 bil\u0259r\u0259m.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mixail Tyulenyev (MongoDB): Kausial konsistensiya: n\u0259z\u0259riyy\u0259d\u0259n praktikaya\" src=\"\/wp-content\/uploads\/2020\/02\/161966c7e77704dc619674ff0302ff57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"UnAprFMX1d4\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/UnAprFMX1d4\/hqdefault.jpg\" alt=\"Videonu izl\u0259yin\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Bir az reklam \ud83d\ude42<\/h3>\n<p>\nBiziml\u0259 qald\u0131\u011f\u0131n\u0131z \u00fc\u00e7\u00fcn t\u0259\u015f\u0259kk\u00fcr edirik. Bizim m\u0259qal\u0259l\u0259rimizi b\u0259y\u0259nirsiniz? Daha maraql\u0131 materiallar g\u00f6rm\u0259k ist\u0259yirsiniz? Bizi d\u0259st\u0259kl\u0259yin, sifari\u015f ver\u0259r\u0259k v\u0259 ya tan\u0131\u015flar\u0131n\u0131za t\u00f6vsiy\u0259 ed\u0259r\u0259k. <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">\u0130nki\u015faf\u00e7\u0131lar \u00fc\u00e7\u00fcn bulud VPS-d\u0259n $4.99-dan<\/a><\/noindex>, <b>Sizin \u00fc\u00e7\u00fcn icad etdiyimiz b\u0259nz\u0259rsiz entry-level serverl\u0259rin analoqu:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">VPS (KVM) E5-2697 v3 (6 Core) 10GB DDR4 480GB SSD 1Gbps haqq\u0131nda b\u00fct\u00fcn h\u0259qiq\u0259t $19-dan, v\u0259 ya serveri nec\u0259 d\u00fczg\u00fcn b\u00f6lm\u0259k olur?<\/a><\/noindex> (RAID1 v\u0259 RAID10 il\u0259 variantlar, 24 n\u00fcv\u0259y\u0259 q\u0259d\u0259r v\u0259 40GB DDR4-a q\u0259d\u0259r m\u00f6vcuddur).<\/p>\n<p><b>Dell R730xd, Amsterdamdak\u0131 Equinix Tier IV data m\u0259rk\u0259zind\u0259 iki d\u0259f\u0259 ucuz?<\/b> Yaln\u0131z bizd\u0259 <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB yaln\u0131z 199 $-dan<\/a><\/noindex> Niderlandda! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 99 $-dan!<\/b><\/b> Bunun haqq\u0131nda oxuyun <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Dell R730xd E5-2650 v4 serverl\u0259rind\u0259n istifad\u0259 etm\u0259kl\u0259 korporativ s\u0259viyy\u0259li infrastruktur nec\u0259 qurmaq olar - 9000 avro d\u0259y\u0259rind\u0259 olanlar\u0131 c\u00fczdanla \u0259ld\u0259 etm\u0259k?<\/a><\/noindex><br \/>\n<br \/>M\u0259nb\u0259: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/487638\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. HighLoad++ Siberia 2019. \u0417\u0430\u043b \u00ab\u041a\u0440\u0430\u0441\u043d\u043e\u044f\u0440\u0441\u043a\u00bb. 25 \u0438\u044e\u043d\u044f, 12:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0442 \u0441 \u0442\u0435\u043e\u0440\u0438\u0435\u0439, \u0433\u0434\u0435 \u043d\u0435 \u0443\u0447\u0442\u0435\u043d\u044b \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u0430\u0441\u043f\u0435\u043a\u0442\u044b. \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-56365","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"az_AZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47HighLoad++, \u041c\u0438\u0445\u0430\u0438\u043b \u0422\u044e\u043b\u0435\u043d\u0435\u0432 (MongoDB): Causal consistency: \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-10T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:37+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HighLoad++, Mixail Tyulenyev (MongoDB): Kausal uy\u011funluq: n\u0259z\u0259riyy\u0259d\u0259n praktika | ProHoster","description":"N\u00f6vb\u0259ti HighLoad++ konfrans\u0131 2020-ci il aprel ay\u0131n\u0131n 6-7-d\u0259 Sankt-Peterburqda ke\u00e7iril\u0259c\u0259k. \u018ftrafl\u0131 m\u0259lumat v\u0259 biletl\u0259r \u00fc\u00e7\u00fcn ke\u00e7id\u0259 bax\u0131n.","canonical_url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"az_AZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47HighLoad++, \u041c\u0438\u0445\u0430\u0438\u043b \u0422\u044e\u043b\u0435\u043d\u0435\u0432 (MongoDB): Causal consistency: \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster","og:description":"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.","og:url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/highload-mihail-tyulenev-mongodb-causal-consistency-ot-teorii-k-praktike","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-10T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56365","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:26:38","updated":"2022-09-29 16:36:31","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/56365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/comments?post=56365"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/56365\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=56365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=56365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=56365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}