{"id":69568,"date":"2020-02-20T15:24:23","date_gmt":"2020-02-20T12:24:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/google-cloud-spanner-horoshij-plohoj-zloj"},"modified":"2020-03-03T16:14:50","modified_gmt":"2020-03-03T13:14:50","slug":"google-cloud-spanner-horoshij-plohoj-zloj","status":"publish","type":"post","link":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","title":{"rendered":"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Salam, Habr sakinl\u0259ri. Ad\u0259t oldu\u011fu kimi, yeni kurslar\u0131n ba\u015flamas\u0131ndan \u0259vv\u0259l maraql\u0131 materiallar\u0131 payla\u015fma\u011fa davam edirik. Bug\u00fcn sizl\u0259r \u00fc\u00e7\u00fcn, Google Cloud Spanner haqq\u0131nda bir m\u0259qal\u0259 t\u0259qdim etdik v\u0259 bu m\u0259qal\u0259ni kursun ba\u015flanmas\u0131 il\u0259 \u0259laq\u0259l\u0259ndirdik. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">\u00ab\u0130nki\u015faf\u00e7\u0131lar \u00fc\u00e7\u00fcn AWS\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/b27b8a09543d10b078480c317553ca46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>\u0130lk d\u0259f\u0259 n\u0259\u015fr olunub <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lightspeedhq.com\/blog\/\">Lightspeed HQ blogunda<\/a><\/noindex>.<\/i><\/p>\n<p>D\u00fcnyan\u0131n h\u0259r yerind\u0259 p\u0259rak\u0259nd\u0259 sat\u0131\u015f\u00e7\u0131lar, restoran sahibl\u0259ri v\u0259 onlayn sat\u0131c\u0131lar \u00fc\u00e7\u00fcn bir \u00e7ox bulud \u0259sasl\u0131 POS h\u0259ll\u0259ri t\u0259klif ed\u0259n Lightspeed \u015firk\u0259ti, bir \u00e7ox tranzaksiya, analitik v\u0259 axtar\u0131\u015f senaril\u0259ri \u00fc\u00e7\u00fcn bir ne\u00e7\u0259 f\u0259rqli tip veril\u0259nl\u0259r bazas\u0131 platformas\u0131 istifad\u0259 edir. Bu veril\u0259nl\u0259r bazas\u0131 platformalar\u0131n\u0131n h\u0259r birinin \u00f6z g\u00fccl\u00fc v\u0259 z\u0259if t\u0259r\u0259fl\u0259ri var. Buna g\u00f6r\u0259 d\u0259, Google, bazara Cloud Spanner t\u0259qdim ed\u0259nd\u0259 - \u0259laq\u0259li veril\u0259nl\u0259r bazalar\u0131nda g\u00f6r\u00fcnm\u0259mi\u015f v\u0259d olunan funksiyalarla, m\u0259s\u0259l\u0259n, faktiki olaraq sonsuz \u00fcf\u00fcqi miqyaslanma v\u0259 99.999% xidm\u0259t s\u0259viyy\u0259si sazi\u015fi (SLA) il\u0259 - bunu \u0259limiz\u0259 almaq imkan\u0131 \u0259ld\u0259n verm\u0259k ist\u0259m\u0259dik!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nCloud Spanner il\u0259 t\u0259cr\u00fcb\u0259mizi v\u0259 istifad\u0259 etdiyimiz qiym\u0259tl\u0259ndirm\u0259 meyarlar\u0131n\u0131 \u0259hat\u0259li bir \u015f\u0259kild\u0259 t\u0259qdim etm\u0259k \u00fc\u00e7\u00fcn a\u015fa\u011f\u0131dak\u0131 m\u00f6vzular\u0131 \u0259l\u0259 alaca\u011f\u0131q:<\/p>\n<ol>\n<li>Qiym\u0259tl\u0259ndirm\u0259 meyarlar\u0131m\u0131z<\/li>\n<li>Cloud Spanner haqq\u0131nda q\u0131sa m\u0259lumat<\/li>\n<li>Qiym\u0259tl\u0259ndirm\u0259miz<\/li>\n<li>N\u0259tic\u0259l\u0259rimiz<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/29ed599362fb189283faa9215c18297a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>1. Qiym\u0259tl\u0259ndirm\u0259 meyarlar\u0131m\u0131z<\/h2>\n<p>\nCloud Spanner-in x\u00fcsusiyy\u0259tl\u0259rin\u0259, bazardak\u0131 dig\u0259r h\u0259ll\u0259rl\u0259 b\u0259nz\u0259rlikl\u0259rin\u0259 v\u0259 f\u0259rql\u0259rin\u0259 d\u0259rind\u0259n baxmadan \u0259vv\u0259l, g\u0259lin \u0259vv\u0259lc\u0259 Cloud Spanner-i \u00f6z infrastrukturumuza yerl\u0259\u015fdirm\u0259k bar\u0259d\u0259 d\u00fc\u015f\u00fcn\u0259rk\u0259n n\u0259z\u0259r\u0259 ald\u0131\u011f\u0131m\u0131z \u0259sas istifad\u0259 senaril\u0259rind\u0259n b\u0259hs ed\u0259k:<\/p>\n<ul>\n<li>M\u00f6vcud \u0259n\u0259n\u0259vi SQL veril\u0259nl\u0259r bazas\u0131 h\u0259llinin \u0259v\u0259zi kimi<\/li>\n<li>OLTP v\u0259 OLAP d\u0259st\u0259yi olan bir h\u0259ll olaraq<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Qeyd:<\/b> M\u00fcqayis\u0259ni asanla\u015fd\u0131rmaq \u00fc\u00e7\u00fcn bu m\u0259qal\u0259 Cloud Spanner-i GCP Cloud SQL v\u0259 Amazon AWS RDS-nin MySQL variantlar\u0131 il\u0259 m\u00fcqayis\u0259 edir.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h4>Cloud Spanner-i \u0259n\u0259n\u0259vi SQL veril\u0259nl\u0259r bazas\u0131 h\u0259llinin \u0259v\u0259zi kimi istifad\u0259 etm\u0259k<\/h4>\n<p>\nM\u00fchitd\u0259 <i>\u0259n\u0259n\u0259vi <\/i>veril\u0259nl\u0259r bazalar\u0131, veril\u0259nl\u0259r bazas\u0131na sor\u011funun cavab m\u00fcdd\u0259ti \u0259vv\u0259lc\u0259d\u0259n m\u00fc\u0259yy\u0259n edilmi\u015f t\u0259tbiq h\u0259ddind\u0259n yax\u0131nla\u015fd\u0131\u011f\u0131nda v\u0259 ya h\u0259tta onu a\u015fd\u0131\u011f\u0131nda, cavab m\u00fcdd\u0259tini q\u0259bul edil\u0259n s\u0259viyy\u0259l\u0259r\u0259 endirm\u0259k \u00fc\u00e7\u00fcn bir ne\u00e7\u0259 yol var. Lakin, bu h\u0259ll\u0259rin \u0259ks\u0259riyy\u0259ti manuel m\u00fcdaxil\u0259ni t\u0259l\u0259b edir.<\/p>\n<p>M\u0259s\u0259l\u0259n, ilk add\u0131m veril\u0259nl\u0259r bazas\u0131 il\u0259 ba\u011fl\u0131 performansa aid m\u00fcxt\u0259lif parametrl\u0259r\u0259 baxmaq v\u0259 onlar\u0131 t\u0259tbiq senaril\u0259rinin istifad\u0259 \u015fablonlar\u0131na \u0259n yax\u015f\u0131 uy\u011funla\u015facaq \u015f\u0259kild\u0259 konfiqurasiya etm\u0259kdir. \u018fg\u0259r bu kifay\u0259t etm\u0259s\u0259, veril\u0259nl\u0259r bazas\u0131n\u0131 \u015faquli v\u0259 ya \u00fcf\u00fcqi miqyaslama se\u00e7il\u0259 bil\u0259r.<\/p>\n<p>T\u0259tbiqin \u015faquli miqyasland\u0131r\u0131lmas\u0131 ad\u0259t\u0259n server instansiyas\u0131n\u0131n yenil\u0259nm\u0259sini, daha \u00e7ox prosessor\/n\u00fcv\u0259, daha \u00e7ox \u0259m\u0259li yadda\u015f, daha s\u00fcr\u0259tli saxlama \u0259lav\u0259 etm\u0259kl\u0259 h\u0259yata ke\u00e7irilir. Daha \u00e7ox aparat resurslar\u0131n\u0131n \u0259lav\u0259 olunmas\u0131, \u0259sas\u0259n saniy\u0259d\u0259 tranzaksiyalarla v\u0259 OLTP sisteml\u0259ri \u00fc\u00e7\u00fcn tranzaksiya gecikm\u0259si il\u0259 \u00f6l\u00e7\u00fcl\u0259n veril\u0259nl\u0259r bazas\u0131n\u0131n performans\u0131n\u0131 art\u0131r\u0131r. MySQL kimi \u00e7ox ipli yana\u015fmadan istifad\u0259 ed\u0259n rekursiv veril\u0259nl\u0259r bazas\u0131 sisteml\u0259ri yax\u015f\u0131 \u015faquli \u015f\u0259kild\u0259 miqyaslana bilir.<\/p>\n<p>Bu yana\u015fman\u0131n bir ne\u00e7\u0259 \u00e7at\u0131\u015fmazl\u0131\u011f\u0131 var, amma \u0259n a\u00e7\u0131q\u0131 bazarda serverin maksimum \u00f6l\u00e7\u00fcs\u00fcd\u00fcr. \u018fn b\u00f6y\u00fck server instansiyas\u0131n\u0131n h\u00fcdudlar\u0131na \u00e7atd\u0131qda, yaln\u0131z bir yol qal\u0131r: \u00fcf\u00fcqi miqyasland\u0131rma.<\/p>\n<p>\u00dcf\u00fcqi miqyasla\u015fd\u0131rma, klaster\u0259 \u0259lav\u0259 serverl\u0259rin \u0259lav\u0259 edilm\u0259si il\u0259, ideya olaraq server say\u0131n\u0131n art\u0131r\u0131lmas\u0131 il\u0259 x\u0259tti \u015f\u0259kild\u0259 performans\u0131 art\u0131rmaqd\u0131r. \u018fks\u0259r <i>\u0259n\u0259n\u0259vi <\/i>veril\u0259nl\u0259r bazas\u0131 sisteml\u0259ri \u00fcf\u00fcqi olaraq pis miqyaslan\u0131r v\u0259 ya \u00fcmumiyy\u0259tl\u0259 miqyaslana bilmir. M\u0259s\u0259l\u0259n, MySQL oxu \u0259m\u0259liyyatlar\u0131 \u00fc\u00e7\u00fcn k\u00f6m\u0259k\u00e7i oxucu \u0259lav\u0259 etm\u0259kl\u0259 \u00fcf\u00fcqi miqyaslana bils\u0259 d\u0259, yazma \u0259m\u0259liyyatlar\u0131 \u00fc\u00e7\u00fcn \u00fcf\u00fcqi miqyaslana bilmir.<\/p>\n<p>Dig\u0259r t\u0259r\u0259fd\u0259n, Cloud Spanner-in t\u0259bi\u0259ti say\u0259sind\u0259 minimal m\u00fcdaxil\u0259 il\u0259 \u00fcf\u00fcqi olaraq asanl\u0131qla miqyaslana bil\u0259r.<\/p>\n<p>Tam funksional<i> DBMS xidm\u0259t olaraq<\/i> f\u0259rqli istiqam\u0259tl\u0259rd\u0259n qiym\u0259tl\u0259ndirilm\u0259lidir. Bir \u0259sas olaraq, buludda \u0259n populyar DBMS-ni g\u00f6t\u00fcrd\u00fck \u2014 Google \u00fc\u00e7\u00fcn GCP Cloud SQL v\u0259 Amazon \u00fc\u00e7\u00fcn AWS RDS. Qiym\u0259tl\u0259ndirm\u0259mizd\u0259 a\u015fa\u011f\u0131dak\u0131 kateqoriyalara fokusland\u0131q:<\/p>\n<ul>\n<li>X\u00fcsusiyy\u0259tl\u0259rin m\u00fcqayis\u0259si: SQL \u0259hat\u0259si, DDL, DML; ba\u011flant\u0131 kitabxanalar\u0131\/konnektorlar, tranzaksiya d\u0259st\u0259yi v\u0259 s.<\/li>\n<li>\u0130nki\u015faf d\u0259st\u0259yi: inki\u015faf v\u0259 test \u00fc\u00e7\u00fcn asanl\u0131q.<\/li>\n<li>Adminstrasiya d\u0259st\u0259yi: instansiyalar\u0131n idar\u0259 edilm\u0259si \u2014 m\u0259s\u0259l\u0259n, yuxar\u0131\/a\u015fa\u011f\u0131 miqyasland\u0131rma v\u0259 instansiyalar\u0131n y\u00fcks\u0259ldilm\u0259si; SLA, ehtiyat n\u00fcsx\u0259 v\u0259 b\u0259rpa; t\u0259hl\u00fck\u0259sizlik\/ giri\u015f kontrolu.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Cloud Spanner-in OLTP d\u0259st\u0259yi il\u0259 OLAP h\u0259ll kimi istifad\u0259si<\/h4>\n<p>\nH\u0259r\u00e7\u0259nd ki, Google a\u00e7\u0131qca bildirir ki, Cloud Spanner analitik i\u015fl\u0259m\u0259 \u00fc\u00e7\u00fcn n\u0259z\u0259rd\u0259 tutulmay\u0131b, o, Apache Impala &amp; Kudu v\u0259 YugaByte kimi dig\u0259r mexanizml\u0259rl\u0259 b\u0259zi atributlar\u0131 payla\u015f\u0131r ki, bunlar OLAP i\u015f y\u00fck\u00fc \u00fc\u00e7\u00fcn n\u0259z\u0259rd\u0259 tutulub.<\/p>\n<p>Cloud Spanner-in s\u0259rf\u0259li \u00fcf\u00fcqi miqyaslana bil\u0259n HTAP (hibrid tranzaksiya\/analitik i\u015fl\u0259m\u0259) motorunu (bir n\u00f6v) istifad\u0259y\u0259 yararl\u0131 OLAP x\u00fcsusiyy\u0259t toplusu il\u0259 birl\u0259\u015fdirm\u0259k ehtimal\u0131n\u0131n yaln\u0131z az bir \u015fans\u0131 olsayd\u0131 bel\u0259, bunun diqq\u0259timizi c\u0259lb etm\u0259y\u0259 d\u0259y\u0259r oldu\u011funu d\u00fc\u015f\u00fcn\u00fcr\u00fck.<\/p>\n<p>Bu n\u0259z\u0259r\u0259 alaraq, a\u015fa\u011f\u0131dak\u0131 kateqoriyalar\u0131 ara\u015fd\u0131rd\u0131q:<\/p>\n<ul>\n<li>M\u0259lumatlar\u0131n y\u00fckl\u0259nm\u0259si, indeksl\u0259r v\u0259 partionla\u015fd\u0131rma d\u0259st\u0259yi<\/li>\n<li>Sor\u011fular\u0131n v\u0259 DML-in performans\u0131<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Cloud Spanner haqq\u0131nda q\u0131sa m\u0259lumat<\/h2>\n<p>\nGoogle Spanner, Google-in bir ne\u00e7\u0259 \u00f6z xidm\u0259tind\u0259 istifad\u0259 etdiyi klasterli relasiyal\u0131 veril\u0259nl\u0259r bazas\u0131 idar\u0259etm\u0259 sistemidir (RDBMS). Google, 2017-ci ilin \u0259vv\u0259lind\u0259, bunu Google Cloud Platform istifad\u0259\u00e7il\u0259ri \u00fc\u00e7\u00fcn a\u00e7\u0131q elan etdi.<\/p>\n<p>Cloud Spanner-in b\u0259zi atributlar\u0131:<\/p>\n<ul>\n<li>Y\u00fcks\u0259k uy\u011funlu\u011fa malik, geni\u015fl\u0259n\u0259 bil\u0259n klaster RDBMS: m\u0259lumatlar\u0131n uy\u011funlu\u011funu t\u0259min etm\u0259k \u00fc\u00e7\u00fcn vaxt\u0131n avadanl\u0131q sinxronizasiyas\u0131n\u0131 istifad\u0259 edir.<\/li>\n<li>\u00c7arpaz stol trasaksiyalar\u0131n\u0131n d\u0259st\u0259yi: trasaksiyalar bir ne\u00e7\u0259 stolu \u0259hat\u0259 ed\u0259 bil\u0259r - yaln\u0131z bir stolla m\u0259hdudla\u015fma t\u0259l\u0259b olunmur (Apache HBase v\u0259 ya Apache Kudu-dan f\u0259rqli olaraq).<\/li>\n<li>Birincil a\u00e7ar \u0259sas\u0131nda c\u0259dv\u0259ll\u0259r: b\u00fct\u00fcn c\u0259dv\u0259ll\u0259rin bir b\u0259yan edilmi\u015f birincil a\u00e7ar\u0131 (BA) olmal\u0131d\u0131r, bu da c\u0259dv\u0259l s\u00fctunlar\u0131ndan bir ne\u00e7\u0259sind\u0259n ibar\u0259t ola bil\u0259r. C\u0259dv\u0259l m\u0259lumatlar\u0131 BA s\u0131ras\u0131na g\u00f6r\u0259 saxlan\u0131l\u0131r, bu da BA-ya g\u00f6r\u0259 axtar\u0131\u015f\u0131 olduqca s\u0259m\u0259r\u0259li v\u0259 s\u00fcr\u0259tli edir. BA \u0259sas\u0131nda olan dig\u0259r sisteml\u0259rd\u0259 oldu\u011fu kimi, h\u0259yata ke\u00e7irilm\u0259, \u0259vv\u0259lc\u0259d\u0259n d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f istifad\u0259 hallar\u0131n\u0131 n\u0259z\u0259r\u0259 almaqla modell\u0259\u015fdirilm\u0259lidir ki, bu da <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/schema-and-data-model\">\u0259n yax\u015f\u0131 performansa g\u0259tirib \u00e7\u0131xars\u0131n<\/a><\/noindex>.<\/li>\n<li>Alternativ c\u0259dv\u0259ll\u0259r: c\u0259dv\u0259ll\u0259r bir-birin\u0259 fiziki as\u0131l\u0131l\u0131qlar ola bil\u0259r. U\u015faq c\u0259dv\u0259linin s\u0259tirl\u0259ri valideyn c\u0259dv\u0259lind\u0259ki s\u0259tirl\u0259rl\u0259 \u0259laq\u0259l\u0259ndiril\u0259 bil\u0259r. Bel\u0259 bir yana\u015fma, m\u00fc\u015ft\u0259ril\u0259rin v\u0259 onlar\u0131n hesab-fakturalar\u0131n\u0131n bir arada yerl\u0259\u015fdirilm\u0259si kimi, m\u0259lumatlar\u0131n modell\u0259\u015fdirilm\u0259si m\u0259rh\u0259l\u0259sind\u0259 m\u00fc\u0259yy\u0259n edil\u0259 bil\u0259c\u0259k m\u00fcnasib\u0259tl\u0259ri axtar\u0131\u015f\u0131 s\u00fcr\u0259tl\u0259ndirir.<\/li>\n<li>\u0130ndeks: Cloud Spanner ikincil indeksl\u0259r\u0259 d\u0259st\u0259k verir. \u0130ndeks, indeksl\u0259nmi\u015f s\u00fctunlardan v\u0259 BA-n\u0131n b\u00fct\u00fcn s\u00fctunlar\u0131ndan ibar\u0259tdir. Arzulad\u0131\u011f\u0131n\u0131z halda, indeks eyni zamanda dig\u0259r indeksl\u0259nm\u0259mi\u015f s\u00fctunlar\u0131 da \u0259hat\u0259 ed\u0259 bil\u0259r. \u0130ndeks, sor\u011fular\u0131 s\u00fcr\u0259tl\u0259ndirm\u0259k \u00fc\u00e7\u00fcn valideyn c\u0259dv\u0259li il\u0259 bir arada ola bil\u0259r. \u0130ndeksl\u0259r\u0259, indeksd\u0259 saxlan\u0131lan \u0259lav\u0259 s\u00fctunlar\u0131n maksimum say\u0131 kimi bir ne\u00e7\u0259 m\u0259hdudiyy\u0259t t\u0259tbiq olunur. Eyni zamanda, indeksl\u0259rd\u0259n ke\u00e7\u0259n sor\u011fular, dig\u0259r RDBMS-l\u0259rd\u0259 oldu\u011fu kimi, o q\u0259d\u0259r d\u0259 d\u00fcz olmaya bil\u0259r.<\/li>\n<\/ul>\n<p>\n<i>\u00abCloud Spanner, yaln\u0131z nadir hallarda indeksi avtomatik se\u00e7ir. X\u00fcsusil\u0259, Cloud Spanner, sor\u011fu hans\u0131sa s\u00fctunlar\u0131 sor\u011fulad\u0131qda ikincil indeksini avtomatik se\u00e7mir, bu s\u00fctunlar indeksd\u0259 saxlanm\u0131r. <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/secondary-indexes\">indeks <\/a><\/noindex>\u00bb.<\/i><\/p>\n<ul>\n<li>Xidm\u0259t s\u0259viyy\u0259si raz\u0131la\u015fmas\u0131 (SLA): 99,99% SLA il\u0259 bir b\u00f6lg\u0259d\u0259, 99,999% SLA il\u0259 \u00e7ox b\u00f6lg\u0259li yerl\u0259\u015fm\u0259l\u0259r. H\u0259r\u00e7\u0259nd ki, xidm\u0259t s\u0259viyy\u0259si raz\u0131la\u015fmas\u0131 yaln\u0131z bir raz\u0131la\u015fmad\u0131r, he\u00e7 bir t\u0259minat deyil, m\u0259n d\u00fc\u015f\u00fcn\u00fcr\u0259m ki, Google \u0259m\u0259kda\u015flar\u0131n\u0131n bel\u0259 ciddi bir iddia etm\u0259k \u00fc\u00e7\u00fcn h\u0259qiq\u0259t\u0259n d\u0259 d\u0259qiq m\u0259lumatlar\u0131 var. (\u0130stinad \u00fc\u00e7\u00fcn, 99,999% dem\u0259kdir ki, ayda 26,3 saniy\u0259 xidm\u0259tin \u0259l\u00e7atmaz olmas\u0131d\u0131r.)<\/li>\n<li>Daha \u00e7ox: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/\">https:\/\/cloud.google.com\/spanner\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Qeyd:<\/b> Apache Tephra layih\u0259si Apache HBase-a (indi Apache Phoenix-d\u0259 beta versiyas\u0131 olaraq t\u0259tbiq edilmi\u015fdir) geni\u015fl\u0259ndirilmi\u015f tranzaksiyalar\u0131n d\u0259st\u0259yini \u0259lav\u0259 edir.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h2>3. Bizim qiym\u0259tl\u0259ndirm\u0259miz<\/h2>\n<p>\nBel\u0259likl\u0259, Google-un Cloud Spanner-in \u00fcst\u00fcnl\u00fckl\u0259ri bar\u0259d\u0259ki b\u0259yannam\u0259l\u0259rini oxumu\u015fuq \u2014 y\u00fcks\u0259k konsistensiyan\u0131 v\u0259 \u00e7ox y\u00fcks\u0259k SLA-ni qoruyaraq dem\u0259k olar ki, limitsiz \u00fcfiqi geni\u015fl\u0259nm\u0259. Bu t\u0259l\u0259bl\u0259ri he\u00e7 bir halda yerin\u0259 yetirm\u0259k olduqca \u00e7\u0259tindir, amma m\u0259qs\u0259dimiz onlar\u0131 t\u0259kzib etm\u0259k deyildi. Bunun \u0259v\u0259zin\u0259 g\u0259lin daha \u00e7ox veril\u0259nl\u0259r bazas\u0131 istifad\u0259\u00e7il\u0259rini narahat ed\u0259n dig\u0259r m\u0259s\u0259l\u0259l\u0259r\u0259 y\u00f6nl\u0259n\u0259k: konsistensiya v\u0259 istifad\u0259nin rahatl\u0131\u011f\u0131.<\/p>\n<h4>Cloud Spanner-i Sharded MySQL-\u0131n \u0259v\u0259zi kimi qiym\u0259tl\u0259ndirdik<\/h4>\n<p>\nGoogle Cloud SQL v\u0259 Amazon AWS RDS, bulud bazar\u0131nda iki \u0259n populyar OLTP DB-dir, olduqca geni\u015f x\u00fcsusiyy\u0259tl\u0259r toplusuna malikdir. Lakin bu veril\u0259nl\u0259r bazalar\u0131n\u0131 bir d\u00fcy\u00fcn \u00f6l\u00e7\u00fcs\u00fcnd\u0259n k\u0259nara geni\u015fl\u0259ndirm\u0259k \u00fc\u00e7\u00fcn t\u0259tbiq par\u00e7alanmas\u0131n\u0131 h\u0259yata ke\u00e7irm\u0259lisiniz. Bu yana\u015fma, \u00f6z\u00fc d\u0259 t\u0259tbiqetm\u0259 v\u0259 idar\u0259etm\u0259 \u00fc\u00e7\u00fcn \u0259lav\u0259 \u00e7\u0259tinlik yarad\u0131r. Spanner-in bir ne\u00e7\u0259 seqmenti bir instansiya birl\u0259\u015fdirm\u0259 senaryosuna nec\u0259 daxil oldu\u011funu v\u0259 hans\u0131 x\u00fcsusiyy\u0259tl\u0259rd\u0259n (\u0259g\u0259r varsa) imtina etm\u0259li olaca\u011f\u0131m\u0131z\u0131 ara\u015fd\u0131rd\u0131q.<\/p>\n<h4>SQL, DML v\u0259 DDL d\u0259st\u0259yi, el\u0259c\u0259 d\u0259 konnektor v\u0259 kitabxanalar?<\/h4>\n<p>\nBirinci, hans\u0131sa veril\u0259nl\u0259r bazas\u0131 il\u0259 ba\u015flad\u0131\u011f\u0131n\u0131zda, m\u0259lumat modeli yaratmal\u0131s\u0131n\u0131z. JDBC Spanner-i sevdiyiniz SQL al\u0259tin\u0259 qo\u015fma\u011f\u0131 d\u00fc\u015f\u00fcn\u00fcrs\u00fcn\u00fczs\u0259, onunla m\u0259lumatlar\u0131n\u0131z\u0131 sor\u011fulaya bil\u0259c\u0259yinizi, lakin c\u0259dv\u0259l yaratmaq v\u0259 d\u0259yi\u015fdirm\u0259k (DDL) v\u0259 ya h\u0259r hans\u0131 insert\/update\/delete (DML) \u0259m\u0259liyyatlar\u0131n\u0131 yerin\u0259 yetirm\u0259k \u00fc\u00e7\u00fcn istifad\u0259 ed\u0259 bilm\u0259y\u0259c\u0259yinizi g\u00f6r\u0259c\u0259ksiniz. Google-un r\u0259smi JDBC-s\u0131 n\u0259 DDL-ni, n\u0259 d\u0259 DML-i d\u0259st\u0259kl\u0259yir.<\/p>\n<blockquote><p><i>\u00abHaz\u0131rda s\u00fcr\u00fcc\u00fcl\u0259r DML v\u0259 ya DDL \u0259mrl\u0259rini d\u0259st\u0259kl\u0259mir\u00bb.<\/i><br \/>\nSpanner s\u0259n\u0259dl\u0259ri<\/p><\/blockquote>\n<p>\nGCP konsolunda v\u0259ziyy\u0259t daha yax\u015f\u0131 deyil \u2014 yaln\u0131z SELECT sor\u011fular\u0131 g\u00f6nd\u0259r\u0259 bil\u0259rsiniz. Xo\u015fb\u0259xtlikd\u0259n, tranzaksiyalar\u0131 \u0259hat\u0259 ed\u0259n DML v\u0259 DDL d\u0259st\u0259yi olan bir icma JDBC s\u00fcr\u00fcc\u00fcs\u00fc m\u00f6vcuddur. <noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/olavloite\/spanner-jdbc\">github.com\/olavloite\/spanner-jdbc<\/a><\/noindex>. Bu s\u00fcr\u00fcc\u00fc son d\u0259r\u0259c\u0259 faydal\u0131d\u0131r, lakin Google-dan \u00f6z JDBC s\u00fcr\u00fcc\u00fcs\u00fcn\u00fcn olmamas\u0131 t\u0259\u0259cc\u00fcbl\u00fcd\u00fcr. Xo\u015fb\u0259xtlikd\u0259n, Google m\u00fc\u015ft\u0259ri kitabxanalar\u0131n\u0131n (gRPC bazas\u0131nda) geni\u015f d\u0259st\u0259yini t\u0259qdim edir: C#, Go, Java, node.js, PHP, Python v\u0259 Ruby.<\/p>\n<p>Cloud Spanner-in \u00f6zelle\u015ftirilmi\u015f API-l\u0259rinin istifad\u0259si (JDBC-d\u0259 DDL v\u0259 DML-in olmamas\u0131 s\u0259b\u0259bind\u0259n) \u0259laq\u0259li kod sah\u0259l\u0259ri \u00fc\u00e7\u00fcn b\u0259zi m\u0259hdudiyy\u0259tl\u0259r\u0259 s\u0259b\u0259b olur, m\u0259s\u0259l\u0259n, \u0259laq\u0259 havuzlar\u0131 v\u0259 veril\u0259nl\u0259r bazas\u0131 ba\u011flama \u00e7\u0259r\u00e7iv\u0259l\u0259ri (m\u0259s\u0259l\u0259n, Spring MVC). Ad\u0259t\u0259n, JDBC istifad\u0259 ed\u0259rk\u0259n, \u0259la test edilmi\u015f v\u0259 yax\u015f\u0131 i\u015fl\u0259y\u0259n sevdiyiniz \u0259laq\u0259 havuzunu (m\u0259s\u0259l\u0259n, HikariCP, DBCP, C3PO v\u0259 s.) s\u0259rb\u0259st se\u00e7\u0259 bil\u0259rsiniz. X\u00fcsusi API Spanner il\u0259, \u00f6z\u00fcm\u00fcz yaratd\u0131\u011f\u0131m\u0131z \u00e7\u0259r\u00e7iv\u0259l\u0259r\/havuzlar\/istinadlar \u00fcz\u0259rin\u0259 etibar etm\u0259liyik.<\/p>\n<p>Primar a\u00e7ar (PA) il\u0259 y\u00f6n\u0259ldilmi\u015f konstruksiya, Cloud Spanner-\u0131 PA vasit\u0259sil\u0259 veril\u0259nl\u0259r\u0259 s\u00fcr\u0259tli eri\u015fim t\u0259min etm\u0259kl\u0259 yana\u015f\u0131, b\u0259zi sor\u011fularla ba\u011fl\u0131 probleml\u0259r\u0259 d\u0259 g\u0259tirib \u00e7\u0131xar\u0131r.<\/p>\n<ul>\n<li>Primar a\u00e7ar d\u0259y\u0259rini yenil\u0259y\u0259 bilm\u0259zsiniz; \u0259vv\u0259lc\u0259 orijinal PA il\u0259 qeydi silm\u0259li v\u0259 yeni d\u0259y\u0259r il\u0259 onu yenid\u0259n daxil etm\u0259lisiniz. (Bu, dig\u0259r PA-y\u00f6n\u00fcml\u00fc veril\u0259nl\u0259r bazalar\u0131 \/ saxlama mexanizml\u0259rin\u0259 b\u0259nz\u0259yir.)<\/li>\n<li>H\u0259r hans\u0131 bir UPDATE v\u0259 DELETE operatoru WHERE-d\u0259 PA g\u00f6st\u0259rm\u0259lidir, buna g\u00f6r\u0259 d\u0259 bo\u015f DELETE all operatorlar\u0131 ola bilm\u0259z \u2014 h\u0259mi\u015f\u0259 bir sub-sor\u011fu olmal\u0131d\u0131r, m\u0259s\u0259l\u0259n: UPDATE xxx WHERE id IN (SELECT id FROM table1)<\/li>\n<li>Avtomatik art\u0131rma se\u00e7iminin olmamas\u0131 v\u0259 ya PA sah\u0259si \u00fc\u00e7\u00fcn s\u0131ralama ed\u0259n bir \u015fey. Bunun i\u015fl\u0259m\u0259si \u00fc\u00e7\u00fcn m\u00fcvafiq d\u0259y\u0259r t\u0259tbiq t\u0259r\u0259find\u0259 yarad\u0131lmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p><\/p>\n<h4>\u0130kincil indeksl\u0259r?<\/h4>\n<p>\nGoogle Cloud Spanner ikincil indeksl\u0259rin daxili d\u0259st\u0259yin\u0259 malikdir. Bu, dig\u0259r texnologiyalarda h\u0259r zaman m\u00f6vcud olmayan \u00e7ox yax\u015f\u0131 bir x\u00fcsusiyy\u0259tdir. Apache Kudu hal-haz\u0131rda ikincil indeksl\u0259ri tamamil\u0259 d\u0259st\u0259kl\u0259mir, Apache HBase is\u0259 indeksl\u0259ri birba\u015fa d\u0259st\u0259kl\u0259mir, lakin onlar\u0131 Apache Phoenix il\u0259 \u0259lav\u0259 ed\u0259 bil\u0259r.<\/p>\n<p>Kudu v\u0259 HBase-d\u0259 indeksl\u0259r, m\u00fcxt\u0259lif PA-lar\u0131n t\u0259rkibi il\u0259 ayr\u0131lm\u0131\u015f c\u0259dv\u0259l olaraq modell\u0259\u015fdiril\u0259 bil\u0259r, lakin ana c\u0259dv\u0259l v\u0259 \u0259laq\u0259li indeks c\u0259dv\u0259ll\u0259ri il\u0259 apar\u0131lan \u0259m\u0259liyyatlar\u0131n atomikliyi t\u0259tbiq s\u0259viyy\u0259sind\u0259 h\u0259yata ke\u00e7irilm\u0259li v\u0259 d\u00fczg\u00fcn icra olunma \u00fc\u00e7\u00fcn m\u00fcr\u0259kk\u0259bdir.<\/p>\n<p>Cloud Spanner-in t\u00f6vsiy\u0259sind\u0259 qeyd edildiyi kimi, onun indeksl\u0259ri MySQL indeksl\u0259rind\u0259n f\u0259rql\u0259n\u0259 bil\u0259r. Buna g\u00f6r\u0259 d\u0259, sor\u011fular\u0131 qurark\u0259n v\u0259 profil qurark\u0259n ehtiyatl\u0131 olmal\u0131s\u0131n\u0131z ki, laz\u0131m olan yerd\u0259 m\u00fcvafiq indeksd\u0259n istifad\u0259 edilsin.<\/p>\n<h4>G\u00f6r\u00fcn\u00fc\u015fl\u0259r?<\/h4>\n<p>\nVeril\u0259nl\u0259r bazas\u0131nda \u00e7ox m\u0259\u015fhur v\u0259 faydal\u0131 bir obyekt - g\u00f6r\u00fcn\u00fc\u015fl\u0259r. Onlar \u00e7oxsayl\u0131 istifad\u0259 hallar\u0131na faydal\u0131 ola bil\u0259r; iki sevimlim - m\u0259ntiqi ab\u015ftraksiya s\u0259viyy\u0259si v\u0259 t\u0259hl\u00fck\u0259sizlik s\u0259viyy\u0259sidir. T\u0259\u0259ss\u00fcf ki, Cloud Spanner g\u00f6r\u00fcn\u00fc\u015fl\u0259ri D\u018fST\u018fKLEM\u0130R. Ancaq bu, biz\u0259 yaln\u0131z qism\u0259n m\u0259hdudiyy\u0259t qoyur, \u00e7\u00fcnki giri\u015f icaz\u0259l\u0259ri \u00fc\u00e7\u00fcn s\u00fctun s\u0259viyy\u0259sind\u0259 detal yoxdur, burada g\u00f6r\u00fcn\u00fc\u015fl\u0259r m\u00fcnasib bir h\u0259ll ola bil\u0259r.<\/p>\n<p>Cloud Spanner-in s\u0259n\u0259dl\u0259rind\u0259 kvotlar v\u0259 m\u0259hdudiyy\u0259tl\u0259r haqq\u0131nda \u0259trafl\u0131 m\u0259lumat ver\u0259n hiss\u0259d\u0259 (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/quotas\">spanner\/quotas<\/a><\/noindex>) x\u00fcsusi il\u0259, b\u0259zi t\u0259tbiql\u0259r \u00fc\u00e7\u00fcn problemli ola bil\u0259c\u0259k bir m\u0259hdudiyy\u0259t var: Cloud Spanner-da standart olaraq maksimum 100 veril\u0259nl\u0259r bazas\u0131 bir instansiya \u00fczr\u0259 m\u0259hduddur. Ayd\u0131nd\u0131r ki, bu, 100-d\u0259n \u00e7ox veril\u0259nl\u0259r bazas\u0131nda geni\u015fl\u0259ndirilmi\u015f bir veril\u0259nl\u0259r bazas\u0131 \u00fc\u00e7\u00fcn ciddi \u0259ng\u0259l ola bil\u0259r. Xo\u015fb\u0259xtlikd\u0259n, Google-un texniki n\u00fcmay\u0259nd\u0259siyl\u0259 dan\u0131\u015fd\u0131qdan sonra, bu limitin Google d\u0259st\u0259yi vasit\u0259sil\u0259 dem\u0259k olar ki, h\u0259r hans\u0131 bir d\u0259y\u0259r\u0259 qald\u0131r\u0131la bil\u0259c\u0259yini \u00f6yr\u0259ndik.<\/p>\n<h4>\u0130nki\u015faf d\u0259st\u0259yi?<\/h4>\n<p>\nCloud Spanner, API il\u0259 i\u015fl\u0259m\u0259k \u00fc\u00e7\u00fcn xeyli d\u0259r\u0259c\u0259d\u0259 yax\u015f\u0131 proqramla\u015fd\u0131rma dill\u0259ri d\u0259st\u0259yi t\u0259klif edir. R\u0259smi d\u0259st\u0259kl\u0259n\u0259n kitabxanalar C#, Go, Java, node.js, PHP, Python v\u0259 Ruby sah\u0259l\u0259rind\u0259dir. S\u0259n\u0259d haz\u0131rlanmas\u0131 kifay\u0259t q\u0259d\u0259r detall\u0131d\u0131r, amma dig\u0259r qabaqc\u0131l texnologiyalarla oldu\u011fu kimi, icma daha populyar m\u0259lumat bazas\u0131 texnologiyalar\u0131 il\u0259 m\u00fcqayis\u0259d\u0259 olduqca ki\u00e7ikdir, bu da daha az yay\u0131lm\u0131\u015f istifad\u0259 hallar\u0131 v\u0259 ya probleml\u0259rin h\u0259llin\u0259 daha \u00e7ox vaxt s\u0259rf etm\u0259y\u0259 s\u0259b\u0259b ola bil\u0259r.<\/p>\n<h4>B\u0259s lokal inki\u015faf d\u0259st\u0259yi nec\u0259dir?<\/h4>\n<p>\nBiz lokaldak\u0131 m\u00fchitd\u0259 Cloud Spanner instansiyas\u0131n\u0131 yaratma\u011f\u0131n yolunu tapmad\u0131q. Ald\u0131\u011f\u0131m\u0131z \u0259n yax\u0131n \u015fey - Docker g\u00f6r\u00fcnt\u00fcs\u00fcd\u00fcr. <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/cockroachdb\/cockroach\">CockroachDB<\/a><\/noindex>, bu prinsipc\u0259 b\u0259nz\u0259yir, amma praktikada \u00e7ox f\u0259rqlidir. M\u0259s\u0259l\u0259n, CockroachDB PostgreSQL JDBC-d\u0259n istifad\u0259 ed\u0259 bil\u0259r. \u0130nki\u015faf m\u00fchiti i\u015f m\u00fchitin\u0259 m\u00fcmk\u00fcn q\u0259d\u0259r yax\u0131n olmal\u0131d\u0131r, Cloud Spanner ideal deyil, \u00e7\u00fcnki tam Spanner instansiyas\u0131na etibar etm\u0259k laz\u0131md\u0131r. X\u0259rcl\u0259ri azaltmaq \u00fc\u00e7\u00fcn t\u0259k bir b\u00f6lg\u0259 \u00fc\u00e7\u00fcn instansiya se\u00e7\u0259 bil\u0259rsiniz.<\/p>\n<h4>Administrasiya d\u0259st\u0259yi nec\u0259dir?<\/h4>\n<p>\nCloud Spanner instansiyas\u0131 yaratmaq \u00e7ox asand\u0131r. Yaln\u0131z \u00e7ox b\u00f6lg\u0259li v\u0259 ya t\u0259k b\u00f6lg\u0259 instansiyas\u0131 aras\u0131nda se\u00e7im etm\u0259k, b\u00f6lg\u0259 (l\u0259r) v\u0259 d\u00fcy\u00fcn say\u0131 g\u00f6st\u0259rm\u0259k laz\u0131md\u0131r. Bir d\u0259qiq\u0259d\u0259n az bir m\u00fcdd\u0259td\u0259 instansiya f\u0259aliyy\u0259t\u0259 ba\u015flayacaq v\u0259 i\u015f\u0259 haz\u0131r olacaq.<\/p>\n<p>Bir ne\u00e7\u0259 sad\u0259 metrikl\u0259r birba\u015fa Google konsolundak\u0131 Spanner s\u0259hif\u0259sind\u0259 m\u00f6vcuddur. Daha \u0259trafl\u0131 g\u00f6r\u00fcnt\u00fcl\u0259r Stackdriver vasit\u0259sil\u0259 m\u00f6vcuddur, burada metriql\u0259r \u00fc\u00e7\u00fcn h\u0259dd d\u0259y\u0259rl\u0259rini v\u0259 x\u0259b\u0259rdarl\u0131q siyas\u0259tl\u0259rini d\u0259 t\u0259yin ed\u0259 bil\u0259rsiniz.<\/p>\n<h4>Resurslara giri\u015f?<\/h4>\n<p>\nMySQL geni\u015f v\u0259 \u00e7ox detall\u0131 icaz\u0259l\u0259r \/ istifad\u0259\u00e7i rollar\u0131n\u0131n t\u0259nziml\u0259nm\u0259sini t\u0259klif edir. M\u00fc\u0259yy\u0259n bir c\u0259dv\u0259l\u0259 v\u0259 ya h\u0259tta onun s\u00fctunlar\u0131n\u0131n yaln\u0131z bir alt d\u0259st\u0259sin\u0259 asanl\u0131qla giri\u015f t\u0259yin ed\u0259 bil\u0259rsiniz. Cloud Spanner, \u00e7ox y\u00fcks\u0259k s\u0259viyy\u0259d\u0259 siyas\u0259tl\u0259ri v\u0259 icaz\u0259l\u0259ri t\u0259yin etm\u0259y\u0259 imkan ver\u0259n Google Identity &amp; Access Management (IAM) vasit\u0259sini istifad\u0259 edir. \u018fn detal\u0131 variant is\u0259, \u0259ks\u0259r istehsal hallar\u0131 \u00fc\u00e7\u00fcn uy\u011fun g\u0259lm\u0259y\u0259n veril\u0259nl\u0259r bazas\u0131 s\u0259viyy\u0259sind\u0259 icaz\u0259dir. Bu m\u0259hdudiyy\u0259t, Spanner resurslar\u0131n\u0131n icaz\u0259siz istifad\u0259sini qar\u015f\u0131s\u0131n\u0131 almaq \u00fc\u00e7\u00fcn kodunuza, infrastrukturunuza v\u0259 ya h\u0259r ikisin\u0259 \u0259lav\u0259 t\u0259hl\u00fck\u0259sizlik t\u0259dbirl\u0259ri \u0259lav\u0259 etm\u0259y\u0259 m\u0259cbur edir.<\/p>\n<h4>Ehtiyat n\u00fcsx\u0259l\u0259r?<\/h4>\n<p>\nSad\u0259 dill\u0259 des\u0259k, Cloud Spanner-da ehtiyat n\u00fcsx\u0259l\u0259ri yoxdur. Google-un y\u00fcks\u0259k SLA t\u0259l\u0259bl\u0259ri avadanl\u0131q v\u0259 ya veril\u0259nl\u0259r bazas\u0131 q\u0259zas\u0131 s\u0259b\u0259bind\u0259n m\u0259lumatlar\u0131n itirilm\u0259y\u0259c\u0259yini t\u0259min ed\u0259 bil\u0259r, amma insan x\u0259talar\u0131, t\u0259tbiq q\u00fcsurlar\u0131 v\u0259 s. kimi dig\u0259r s\u0259b\u0259bl\u0259rd\u0259n yox. Ham\u0131m\u0131z\u0131n bildiyi bir qayda var: y\u00fcks\u0259k m\u00f6vcudluq m\u00fcvafiq ehtiyat n\u00fcsx\u0259 strategiyas\u0131n\u0131 \u0259v\u0259z etmir. Haz\u0131rda veril\u0259nl\u0259rin ehtiyat n\u00fcsx\u0259sini \u00e7\u0131xarma\u011f\u0131n t\u0259k yolu onlar\u0131 veril\u0259nl\u0259r bazas\u0131ndan ayr\u0131 bir saxlama m\u00fchitin\u0259 proqram vasit\u0259sil\u0259 ax\u0131dmaqd\u0131r.<\/p>\n<h4>Sor\u011fular\u0131n m\u0259hsuldarl\u0131\u011f\u0131?<\/h4>\n<p>\nVeril\u0259nl\u0259ri y\u00fckl\u0259m\u0259k v\u0259 sor\u011fular\u0131 test etm\u0259k \u00fc\u00e7\u00fcn Yahoo! Cloud Serving Benchmark-dan istifad\u0259 etdik. A\u015fa\u011f\u0131dak\u0131 c\u0259dv\u0259ld\u0259 YCSB-nin i\u015f y\u00fck\u00fc 95% oxuma v\u0259 5% yazma nisb\u0259ti il\u0259 t\u0259qdim olunub.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/8fca14875af33c8ed3cd04b602c52b78.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Y\u00fck testl\u0259ri n1-standard-32 (32 vCPU, 120 GB RAM) hesablama m\u00fch\u0259rrikind\u0259 (CE) icra edilib v\u0259 test instans\u0131 testl\u0259rd\u0259 he\u00e7 vaxt dar bo\u011faz olmay\u0131b.<\/i><br \/>\n<i>** YCSB n\u00fcmun\u0259sind\u0259ki maksimum iplik say\u0131 400-d\u00fcr. C\u0259mi 2400 iplik \u0259ld\u0259 etm\u0259k \u00fc\u00e7\u00fcn alt\u0131 paralel YCSB test instansiyas\u0131n\u0131 i\u015f\u0259 salmaq laz\u0131m idi.<\/i><\/p>\n<p>Test n\u0259tic\u0259l\u0259rin\u0259 baxark\u0259n, x\u00fcsusil\u0259 CPU y\u00fck\u00fc v\u0259 TPS kombinasyonunu n\u0259z\u0259r\u0259 alaraq, Cloud Spanner-in kifay\u0259t q\u0259d\u0259r yax\u015f\u0131 \u00f6l\u00e7\u00fcl\u0259n canlanma qabiliyy\u0259ti oldu\u011funu g\u00f6r\u00fcr\u00fck. Daha \u00e7ox iplikl\u0259rin yaratd\u0131\u011f\u0131 art\u0131qlama, Cloud Spanner klasterind\u0259ki daha \u00e7ox nodelarla kompensasiya edilir. 2400 iplikd\u0259n istifad\u0259 ed\u0259rk\u0259n gecikm\u0259 nisb\u0259t\u0259n y\u00fcks\u0259k g\u00f6r\u00fcns\u0259 d\u0259, daha d\u0259qiq n\u0259tic\u0259l\u0259r \u0259ld\u0259 etm\u0259k \u00fc\u00e7\u00fcn 6 daha ki\u00e7ik hesablama m\u00fch\u0259rriki il\u0259 test etm\u0259y\u0259 ehtiyac ola bil\u0259r. H\u0259r bir n\u00fcmun\u0259 bir YCSB testini i\u015f\u0259 salacaq, bunun \u0259v\u0259zin\u0259 alt\u0131 paralel testl\u0259rl\u0259 bir b\u00f6y\u00fck CE instans\u0131. Bel\u0259likl\u0259, Cloud Spanner-in sor\u011fu gecikm\u0259l\u0259rini v\u0259 testin icra edildiyi CE instans\u0131 il\u0259 Cloud Spanner aras\u0131ndak\u0131 \u015f\u0259b\u0259k\u0259 ba\u011flant\u0131s\u0131n\u0131n \u0259lav\u0259 etdiyi gecikm\u0259l\u0259ri asanl\u0131qla ay\u0131rd etm\u0259k m\u00fcmk\u00fcn olacaq.<\/p>\n<h3>Cloud Spanner OLAP olaraq nec\u0259 f\u0259aliyy\u0259t g\u00f6st\u0259rir?<\/h3>\n<p><\/p>\n<h4>Partisiya?<\/h4>\n<p>\nVeril\u0259nl\u0259rin fiziki v\u0259 ya m\u0259ntiqi m\u00fcxt\u0259lif par\u00e7alara ayr\u0131lmas\u0131, partisiya adlanan \u00e7ox populyar bir konsepsiyad\u0131r v\u0259 sakinl\u0259rinin \u0259ks\u0259riyy\u0259tind\u0259 m\u00fc\u015fahid\u0259 olunur. Partisiya sor\u011fular\u0131n m\u0259hsuldarl\u0131\u011f\u0131n\u0131 v\u0259 veril\u0259nl\u0259r bazas\u0131n\u0131n saxlanmas\u0131n\u0131 \u0259h\u0259miyy\u0259tli d\u0259r\u0259c\u0259d\u0259 art\u0131r\u0131r. Partisiya m\u0259s\u0259l\u0259sin\u0259 d\u0259rinl\u0259\u015fm\u0259k ayr\u0131ca bir m\u0259qal\u0259 (m\u0259qal\u0259l\u0259r) t\u0259l\u0259b ed\u0259r, ona g\u00f6r\u0259 d\u0259 sad\u0259c\u0259 seqmentasiya v\u0259 alt-partisiya sisteminin \u0259h\u0259miyy\u0259tini qeyd ed\u0259k. Veril\u0259nl\u0259ri partisiya v\u0259 h\u0259tta alt-partisiya etm\u0259k imkan\u0131 analitik sor\u011fular\u0131n m\u0259hsuldarl\u0131\u011f\u0131 \u00fc\u00e7\u00fcn kilid rolunu oynay\u0131r.<\/p>\n<p>Cloud Spanner partisiya sisteml\u0259rini d\u0259st\u0259kl\u0259mir. O, daxilind\u0259 veril\u0259nl\u0259ri, y\u0259ni <i>split<\/i>-l\u0259r \u0259sas a\u00e7ar aral\u0131\u011f\u0131ndan. Bulud Spanner klasterind\u0259 y\u00fck balansla\u015fd\u0131r\u0131lmas\u0131 \u00fc\u00e7\u00fcn avtomatik b\u00f6lm\u0259l\u0259r apar\u0131l\u0131r. Bulud Spanner-in \u00e7ox faydal\u0131 x\u00fcsusiyy\u0259ti ana c\u0259dv\u0259lin (dig\u0259r c\u0259dv\u0259ll\u0259rl\u0259 b\u00f6l\u00fcnm\u0259y\u0259n c\u0259dv\u0259l) \u0259sas y\u00fck\u00fcn\u00fcn b\u00f6l\u00fcnm\u0259si dir. Spanner avtomatik olaraq m\u00fc\u0259yy\u0259n edir ki, <i>split <\/i>m\u0259lumatlar dig\u0259r m\u0259lumatlardan daha tez-tez oxunur <i>split<\/i>-l\u0259r, v\u0259 \u0259lav\u0259 b\u00f6l\u00fcnm\u0259 q\u0259rar\u0131 q\u0259bul ed\u0259 bil\u0259r. Bel\u0259likl\u0259, sor\u011fuda daha \u00e7ox node istifad\u0259 oluna bil\u0259r, bu da effektiv \u015f\u0259kild\u0259 bant geni\u015fliyini art\u0131r\u0131r.<\/p>\n<h4>M\u0259lumat y\u00fckl\u0259m\u0259?<\/h4>\n<p>\nBulud Spanner-in b\u00f6y\u00fck m\u0259lumatlar \u00fc\u00e7\u00fcn y\u00fckl\u0259m\u0259 metodu adi y\u00fckl\u0259m\u0259 il\u0259 eynidir. Maksimum performans \u0259ld\u0259 etm\u0259k \u00fc\u00e7\u00fcn b\u0259zi t\u00f6vsiy\u0259l\u0259r\u0259 \u0259m\u0259l etm\u0259lisiniz, o c\u00fcml\u0259d\u0259n:<\/p>\n<ul>\n<li>Veril\u0259rinizi \u0259sas a\u00e7ara g\u00f6r\u0259 s\u0131ralay\u0131n.<\/li>\n<li>Onlar\u0131 10*<i>node say\u0131na<\/i> ayr\u0131-se\u00e7kilik hiss\u0259l\u0259r\u0259 b\u00f6l\u00fcn.<\/li>\n<li>Veril\u0259ri paralel y\u00fckl\u0259y\u0259n i\u015f tap\u015f\u0131r\u0131qlar\u0131 yarad\u0131n.<\/li>\n<\/ul>\n<p>\nBu c\u00fcr m\u0259lumat y\u00fckl\u0259m\u0259si Bulud Spanner-in b\u00fct\u00fcn node-lar\u0131n\u0131 istifad\u0259 edir.<\/p>\n<p>10M sat\u0131rdan ibar\u0259t m\u0259lumat d\u0259stini yaratmaq \u00fc\u00e7\u00fcn A YCSB i\u015f y\u00fck\u00fcnd\u0259n istifad\u0259 etdik.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/89b9c0353716be2d389b3e8da82781ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Y\u00fck testi n1-standard-32 (32 vCPU, 120 GB RAM) hesablama m\u00fch\u0259rrikind\u0259 icra edildi v\u0259 test instans\u0131 testl\u0259rd\u0259 he\u00e7 vaxt m\u0259hdudiyy\u0259t olmad\u0131.<br \/>\n** 1 node-lu konfiqurasiya h\u0259r hans\u0131 istehsal y\u00fck\u00fc \u00fc\u00e7\u00fcn t\u00f6vsiy\u0259 edilmir.<\/i><\/p>\n<p>Yuxar\u0131da qeyd edildiyi kimi, Bulud Spanner avtomatik olaraq y\u00fck\u0259 g\u00f6r\u0259 split-l\u0259ri idar\u0259 edir, buna g\u00f6r\u0259 n\u0259tic\u0259l\u0259r bir ne\u00e7\u0259 ard\u0131c\u0131l test t\u0259krar\u0131 sonras\u0131 yax\u015f\u0131la\u015f\u0131r. Burada t\u0259qdim olunan n\u0259tic\u0259l\u0259r bizim \u0259ld\u0259 etdiyimiz \u0259n yax\u015f\u0131 n\u0259tic\u0259l\u0259rdir. Yuxar\u0131dak\u0131 \u0259d\u0259dl\u0259r\u0259 baxark\u0259n, Bulud Spanner-in node-lar\u0131n klasterd\u0259 say\u0131n\u0131n artmas\u0131 il\u0259 nec\u0259 d\u00fczg\u00fcn \u00f6l\u00e7\u00fcl\u00fcd\u00fcr (yax\u015f\u0131) g\u00f6r\u00fcn\u00fcr. Vur\u011fulanan \u0259d\u0259dl\u0259r, qar\u0131\u015f\u0131q i\u015f y\u00fck\u00fc n\u0259tic\u0259l\u0259ri il\u0259 m\u00fcqayis\u0259d\u0259 (oxuma \u00fc\u00e7\u00fcn 95% v\u0259 yazma \u00fc\u00e7\u00fcn 5%) son d\u0259r\u0259c\u0259 a\u015fa\u011f\u0131 orta gecikm\u0259l\u0259ri t\u0259msil edir.<\/p>\n<h4>\u00d6l\u00e7\u00fclm\u0259?<\/h4>\n<p>\nBulud Spanner-in node say\u0131n\u0131 art\u0131rmaq v\u0259 azaltmaq bir klikl\u0259 h\u0259yata ke\u00e7iril\u0259n bir tap\u015f\u0131r\u0131qd\u0131r. \u018fg\u0259r m\u0259lumatlar\u0131 tez y\u00fckl\u0259m\u0259k ist\u0259yirsinizs\u0259, instans\u0131 maksimuma (bizim hal\u0131m\u0131zda AB\u015e-\u015e\u018fRQ regionunda 25 node) q\u0259d\u0259r art\u0131rma\u011f\u0131 d\u00fc\u015f\u00fcn\u0259 bil\u0259rsiniz, sonra is\u0259 b\u00fct\u00fcn m\u0259lumatlar veril\u0259nl\u0259r bazas\u0131na daxil olduqdan sonra g\u00fcnd\u0259lik y\u00fckg\u0259 uy\u011fun bir node say\u0131 azalda bil\u0259rsiniz, 2 TB\/node m\u0259hdudiyy\u0259tini n\u0259z\u0259r\u0259 alaraq.<\/p>\n<p>Bunun m\u0259hdudiyy\u0259tini daha ki\u00e7ik veril\u0259nl\u0259r bazas\u0131yla da xat\u0131rlatd\u0131lar. Bir ne\u00e7\u0259 y\u00fck test ke\u00e7irdikd\u0259n sonra bizim veril\u0259nl\u0259r bazas\u0131 t\u0259xmin\u0259n 155 GB \u00f6l\u00e7\u00fcs\u00fcnd\u0259 idi v\u0259 bir node-lu instansa azald\u0131qda, a\u015fa\u011f\u0131dak\u0131 x\u0259tan\u0131 ald\u0131q:<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/4a46c97e7943b5105bf178316dc67433.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n25-d\u0259n 2 instansa q\u0259d\u0259r \u00f6l\u00e7\u00fclm\u0259yi bacard\u0131q, amma iki node-da qald\u0131q.<\/p>\n<p>Cloud Spanner-d\u0259 d\u00fcy\u00fcn say\u0131n\u0131 art\u0131rmaq v\u0259 azaltmaq REST API vasit\u0259sil\u0259 avtomatla\u015fd\u0131r\u0131la bil\u0259r. Bu, x\u00fcsusil\u0259 pik saatlarda sistemd\u0259ki y\u00fck\u00fc azaltmaq \u00fc\u00e7\u00fcn faydal\u0131 ola bil\u0259r.<\/p>\n<h4>OLAP sor\u011fular\u0131n\u0131n performans\u0131?<\/h4>\n<p>\nBa\u015flan\u011f\u0131cda, Spanner-in bu hiss\u0259sini qiym\u0259tl\u0259ndirm\u0259y\u0259 \u0259h\u0259miyy\u0259tli vaxt ay\u0131rma\u011f\u0131 planla\u015fd\u0131r\u0131rd\u0131q. Bir ne\u00e7\u0259 SELECT COUNT-dan sonra d\u0259rhal anlad\u0131q ki, testl\u0259r q\u0131sa olacaq v\u0259 Spanner OLAP m\u00fch\u0259rriki \u00fc\u00e7\u00fcn uy\u011fun olmayacaq. Klasterd\u0259ki d\u00fcy\u00fcnl\u0259rin say\u0131ndan as\u0131l\u0131 olmayaraq, 10M s\u0259tird\u0259n ibar\u0259t bir c\u0259dv\u0259ld\u0259 s\u0259tir say\u0131n\u0131 se\u00e7m\u0259k 55-60 saniy\u0259 \u00e7\u0259kdi. H\u0259m\u00e7inin, k\u0259sirli n\u0259tic\u0259l\u0259ri saxlamaq \u00fc\u00e7\u00fcn daha \u00e7ox yadda\u015f t\u0259l\u0259b ed\u0259n h\u0259r hans\u0131 bir sor\u011fu OOM s\u0259hvi il\u0259 ba\u015fa \u00e7atd\u0131.<\/p>\n<p><code>SELECT COUNT(DISTINCT(field0)) FROM usertable; \u2014 (10M f\u0259rqli d\u0259y\u0259r) -&gt; SpoolingHashAggregateIterator yeni sat\u0131r yaradark\u0259n yadda\u015fdan \u00e7\u0131xd\u0131.<\/code><\/p>\n<p>TPC-H sor\u011fular\u0131 \u00fc\u00e7\u00fcn b\u0259zi r\u0259q\u0259ml\u0259ri Todd Lipkonun m\u0259qal\u0259sind\u0259 tapa bil\u0259rsiniz. <noindex><a rel=\"nofollow\" href=\"https:\/\/kudu.apache.org\/2017\/10\/23\/nosql-kudu-spanner-slides.html\">Nosql-kudu-spanner-slides.html<\/a><\/noindex>, slaydlar 42 v\u0259 43. Bu r\u0259q\u0259ml\u0259r bizim \u00f6z n\u0259tic\u0259l\u0259rimizl\u0259 uy\u011fun g\u0259lir (t\u0259\u0259ss\u00fcf ki).<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: yax\u015f\u0131, pis, d\u0259h\u015f\u0259tli\" src=\"\/wp-content\/uploads\/2020\/02\/d070c839bbc62b1ba1bebbaf64127e93.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>4. N\u0259tic\u0259l\u0259rimiz<\/h4>\n<p>\nCloud Spanner-in indiki x\u00fcsusiyy\u0259tl\u0259ri il\u0259 hesab edildikd\u0259, onun m\u00f6vcud OLTP h\u0259llinin sad\u0259 \u0259v\u0259zl\u0259yicisi kimi t\u0259s\u0259vv\u00fcr etm\u0259k \u00e7\u0259tindir, x\u00fcsus\u0259n d\u0259 t\u0259l\u0259bl\u0259riniz ona do\u011fru geni\u015fl\u0259n\u0259nd\u0259. Cloud Spanner-in \u00e7at\u0131\u015fmazl\u0131qlar\u0131n\u0131 n\u0259z\u0259r\u0259 alaraq bir h\u0259ll qurma\u011fa \u0259h\u0259miyy\u0259tli vaxt s\u0259rf etm\u0259k laz\u0131md\u0131r.<\/p>\n<p>Cloud Spanner-i qiym\u0259tl\u0259ndirm\u0259y\u0259 ba\u015flad\u0131\u011f\u0131m\u0131zda, onun idar\u0259etm\u0259 x\u00fcsusiyy\u0259tl\u0259rinin dig\u0259r Google SQL h\u0259ll\u0259ri il\u0259 eyni s\u0259viyy\u0259d\u0259 olaca\u011f\u0131n\u0131 g\u00f6zl\u0259yirdik. Lakin, tamamil\u0259 ehtiyat n\u00fcsx\u0259l\u0259rinin olmamas\u0131 v\u0259 resurslara \u00e7ox m\u0259hdud giri\u015fin olmas\u0131 bizi t\u0259\u0259cc\u00fcbl\u0259ndirdi. G\u00f6rm\u0259 sah\u0259l\u0259rinin olmamas\u0131, yerli inki\u015faf m\u00fchitinin olmamas\u0131, d\u0259st\u0259kl\u0259nm\u0259y\u0259n s\u0131ralar, DML v\u0259 DDL d\u0259st\u0259yi olmayan JDBC v\u0259 sair bar\u0259d\u0259 dan\u0131\u015fm\u0131ram.<\/p>\n<p>B\u0259s transaksion veril\u0259nl\u0259r bazas\u0131n\u0131 geni\u015fl\u0259ndirm\u0259k laz\u0131m olan k\u0259s kimin \u00fc\u00e7\u00fcn n\u0259 etm\u0259k olar? G\u00f6r\u00fcn\u00fcr, bazarda h\u0259r \u015feyd\u0259n istifad\u0259 \u00fc\u00e7\u00fcn uy\u011fun olan t\u0259k bir h\u0259ll yoxdur. Bu m\u0259qal\u0259d\u0259 b\u0259hs olunan bir \u00e7ox ba\u011flanm\u0131\u015f v\u0259 a\u00e7\u0131q m\u0259nb\u0259li h\u0259ll var, h\u0259r birinin \u00f6z g\u00fccl\u00fc v\u0259 z\u0259if t\u0259r\u0259fl\u0259ri var, lakin he\u00e7 biri 99,999% SLA il\u0259 SaaS v\u0259 y\u00fcks\u0259k s\u0259viyy\u0259d\u0259 ah\u0259ng t\u0259min etmir. \u018fg\u0259r y\u00fcks\u0259k SLA s\u0259viyy\u0259si sizin \u0259sas m\u0259qs\u0259dinizdirs\u0259 v\u0259 bird\u0259n \u00e7ox bulud m\u00fchitind\u0259 \u00f6z h\u0259llinizi yaratma\u011fa meylli deyilsinizs\u0259, Cloud Spanner sizin axtard\u0131\u011f\u0131n\u0131z h\u0259ll ola bil\u0259r. Lakin, onun b\u00fct\u00fcn m\u0259hdudiyy\u0259tl\u0259ri haqq\u0131nda m\u0259lumatl\u0131 olmal\u0131s\u0131n\u0131z.<\/p>\n<p>\u018fdal\u0259t namin\u0259 qeyd etm\u0259k laz\u0131md\u0131r ki, Cloud Spanner yaln\u0131z 2017-ci ilin yaz\u0131nda geni\u015f istifad\u0259 \u00fc\u00e7\u00fcn t\u0259qdim edilib, buna g\u00f6r\u0259 d\u0259 indiki b\u0259zi \u00e7at\u0131\u015fmazl\u0131qlar\u0131n\u0131n zamanla aradan qalxaca\u011f\u0131na \u00fcmid etm\u0259k m\u0259sl\u0259h\u0259tdir (\u00fcmid edirik ki, bel\u0259 olacaq) v\u0259 bu ba\u015f ver\u0259rs\u0259, oyun d\u0259yi\u015f\u0259c\u0259k. N\u0259hay\u0259t, Cloud Spanner yaln\u0131z Google \u00fc\u00e7\u00fcn \u00fc\u00e7\u00fcnc\u00fc t\u0259r\u0259f layih\u0259si deyil. Google onu Google-in dig\u0259r m\u0259hsullar\u0131 \u00fc\u00e7\u00fcn \u0259sas kimi istifad\u0259 edir. V\u0259 Google son vaxtlar Megastore-u Google Cloud Storage-dan Cloud Spanner il\u0259 \u0259v\u0259z etdikd\u0259, bu, Google Cloud Storage-\u0131n d\u00fcnya miqyas\u0131nda obyektl\u0259rin siyah\u0131lar\u0131 \u00fc\u00e7\u00fcn tam etibarl\u0131 olmas\u0131na imkan tan\u0131d\u0131 (bu h\u0259l\u0259 d\u0259 Amazon-un olmad\u0131\u011f\u0131 bir \u015feydir). <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">Amazonun<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">S3<\/a><\/noindex>).<\/p>\n<p>Bel\u0259likl\u0259, h\u0259l\u0259 \u00fcmid var... biz \u00fcmid edirik.<\/p>\n<p>Bu q\u0259d\u0259r. M\u0259qal\u0259nin m\u00fc\u0259llifi kimi, biz d\u0259 h\u0259l\u0259 \u00fcmid edirik, b\u0259s siz bununla ba\u011fl\u0131 n\u0259 d\u00fc\u015f\u00fcn\u00fcrs\u00fcn\u00fcz? \u015e\u0259rhl\u0259rd\u0259 yaz\u0131n.<\/p>\n<p><b>\u0130st\u0259y\u0259n h\u0259r k\u0259si bizim <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">pulsuz vebinara<\/a><\/noindex> \u00e7\u0259r\u00e7iv\u0259sind\u0259 kurs haqq\u0131nda \u0259trafl\u0131 m\u0259lumat ver\u0259c\u0259yik.<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\"> \u00ab\u0130nki\u015faf\u00e7\u0131lar \u00fc\u00e7\u00fcn AWS\u00bb<\/a><\/noindex> OTUS-dan.<\/b><br \/>\n<br \/>M\u0259nb\u0259: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/489012\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":69569,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-69568","post","type-post","status-publish","format-standard","has-post-thumbnail","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=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.\" \/>\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\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\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\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\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-20T12:24:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:50+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\udd47Google Cloud Spanner: yax\u015f\u0131, pis, \u00e7irkin | ProHoster","description":"Salam, Habr i\u015ftirak\u00e7\u0131lar\u0131. Ad\u0259t\u0259n yeni kurslar\u0131n ba\u015flamas\u0131ndan \u0259vv\u0259l maraql\u0131 material payla\u015fma\u011fa davam edirik.","canonical_url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","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\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","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-20T12:24:23+00:00","article:modified_time":"2020-03-03T13:14:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"69568","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:20:25","updated":"2022-09-30 15:10:07","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\/69568","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=69568"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/69568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media\/69569"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=69568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=69568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=69568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}