{"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\/et\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","title":{"rendered":"Google Cloud Spanner: hea, halb, kole","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Tere, Habrikad. J\u00e4tkame traditsiooniliselt huvitava sisu jagamist, enne kui uued kursused algavad. T\u00e4na, just teie jaoks, t\u00f5lgime artikli Google Cloud Spannerist, seostades selle kursuse k\u00e4ivitamisega. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">\u201eAWS arendajatele\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/b27b8a09543d10b078480c317553ca46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Algne avaldamine <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lightspeedhq.com\/blog\/\">Lightspeed HQ blogis<\/a><\/noindex>.<\/i><\/p>\n<p>Kuna Lightspeed pakub hulgaliselt pilvep\u00f5hiseid POS-lahendusi jaekaubanduse, restoranide ja veebim\u00fc\u00fcjate jaoks \u00fcle kogu maailma, kasutab ettev\u00f5te erinevaid andmebaasiplatvorme paljude tehinguliste, anal\u00fc\u00fctiliste ja otsingujuhtumite jaoks. Iga\u00fchel neist andmebaasiplatvormidest on oma tugevused ja n\u00f5rkused. Seet\u00f5ttu, kui Google tutvustas turule Cloud Spannerit \u2013 paljut\u00f5otavad funktsioonid, mida pole n\u00e4htud relatsiooniliste andmebaaside maailmas, nagu praktiliselt piiramatu horisontaalne skaleeritavus ja 99,999% teenustaseme leping (SLA) \u2013, ei saanud me selle kasutuselev\u00f5ttu m\u00f6\u00f6da lasta!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKuna anname p\u00f5hjaliku \u00fclevaate meie kogemusest Cloud Spanneriga ning hindamiskriteeriumitest, mida kasutasime, k\u00e4sitleme j\u00e4rgmisi teemasid:<\/p>\n<ol>\n<li>Meie hindamiskriteeriumid<\/li>\n<li>Cloud Spanner kaks s\u00f5na<\/li>\n<li>Meie hinnang<\/li>\n<li>Meie j\u00e4reldused<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/29ed599362fb189283faa9215c18297a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>1. Meie hindamiskriteeriumid<\/h2>\n<p>\nEnne kui s\u00fcveneme Cloud Spanneri funktsioonidesse, selle sarnastesse ja erinevustesse turul olevate lahenduste suhtes, r\u00e4\u00e4gime k\u00f5igepealt peamistest kasutusjuhtudest, mida pidasime silmas, arutades, kuhu integreerida Cloud Spanner meie infrastruktuuri:<\/p>\n<ul>\n<li>Klassikalise SQL andmebaasi lahenduse asendajana<\/li>\n<li>OLTP lahendusena, millel on OLAP tugi<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>M\u00e4rkus:<\/b> Mugavuse ja kasutajas\u00f5bralikkuse huvides v\u00f5rdleb see artikkel Cloud Spannerit MySQL variandi GCP Cloud SQL ja Amazon AWS RDS lahendustega.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h4>Cloud Spanneri kasutamine traditsioonilise SQL andmebaasi lahenduse asendamiseks<\/h4>\n<p>\nKeskkonnas <i>traditsioonilised <\/i>andmebaasid, kui andmebaasi p\u00e4ringu vastuse aeg l\u00e4heneb v\u00f5i isegi \u00fcletab eelmise m\u00e4\u00e4ratletud rakenduse l\u00e4ve (peamiselt kasutajate ja \/ v\u00f5i p\u00e4ringute arvu suurenemise t\u00f5ttu), on mitmeid viise vastuse aja v\u00e4hendamiseks vastuv\u00f5etavatesse tasemetes. Kuid enamik neist lahendustest h\u00f5lmab k\u00e4sitsi sekkumist.<\/p>\n<p>N\u00e4iteks, esimene samm, mida teha, on vaadata erinevaid andmebaasi seadistusi, mis on seotud j\u00f5udlusega, ja kohandada neid nii, et need vastaksid k\u00f5ige paremini rakenduste kasutusstsenaariumide mustritele. Kui sellest ei piisa, v\u00f5ib valida andmebaasi vertikaalse v\u00f5i horisontaalse skaleerimise.<\/p>\n<p>Rakenduse vertikaalne skaleerimine t\u00e4hendab serveri instantsi uuendamist, tavaliselt suurema arvu protsessorite\/tuumade, suurema m\u00e4lu ja kiirema salvestusruumi lisamise abil jne. Suuremate riistvararessursside lisamine parandab andmebaasi j\u00f5udlust, mida m\u00f5\u00f5detakse peamiselt tehingute arvu j\u00e4rgi sekundis ning tehingute latentsusena OLTP s\u00fcsteemides. Suhteliste andmebaasis\u00fcsteemide (mis kasutavad mitme\u00f5ngemudelit), nagu MySQL, vertikaalne skaleerimine toimub h\u00e4sti.<\/p>\n<p>Sellel l\u00e4henemisel on mitmeid puudusi, kuid k\u00f5ige ilmsem on turul oleva serveri maksimaalne suurus. Kui on saavutatud suurima serveri instantsi piir, on ainus viis edasi: horisontaalne skaleerimine.<\/p>\n<p>Horisontaalne skaleerimine on l\u00e4henemine, kus klastrile lisatakse rohkem servereid, et ideaalis lineaarselt suurendada j\u00f5udlust serverite arvu kasvades. Enamik <i>traditsioonilised <\/i>andmebaasis\u00fcsteemidest ei skaleerita horisontaalselt h\u00e4sti v\u00f5i \u00fcldse mitte. N\u00e4iteks MySQL suudab horisontaalselt skaleerida lugemisoperatsioonide jaoks, lisades slave-loendureid, kuid ei suuda horisontaalselt skaleerida kirjutamisoperatsioonide jaoks.<\/p>\n<p>Teisest k\u00fcljest suudab Cloud Spanner oma loomuse t\u00f5ttu h\u00f5lpsasti horisontaalselt skaleerida minimaalse sekkumisega.<\/p>\n<p>T\u00e4iendav funktsionaalsus<i> Andmebaas kui teenus<\/i> peaks olema hinnatud erinevatest k\u00fclgedest. Alguseks v\u00f5tsime k\u00f5ige populaarsema pilvandmebaasi \u2014 Google'i GCP Cloud SQL ja Amazoni AWS RDS. Oma hindamises keskendusime j\u00e4rgmistele kategooriatele:<\/p>\n<ul>\n<li>Funktsioonide vastavus: SQL, DDL, DML; \u00fchendusraamatukogud\/konnektorid, tehingute toetamised jne.<\/li>\n<li>Arenduse tugi: arendamise ja testimise lihtsus.<\/li>\n<li>Halduse tugi: instantside haldamine \u2014 n\u00e4iteks \u00fcles-alla skaleerimine ja instantside t\u00e4iendamine; SLA, varundamine ja taastamine; turve\/ligip\u00e4\u00e4su kontroll.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Cloud Spanneri kasutamine OLTP lahenduse jaoks, mis toetab OLAP-i.<\/h4>\n<p>\nKuigi Google ei v\u00e4ida selges\u00f5naliselt, et Cloud Spanner on m\u00f5eldud anal\u00fc\u00fctiliseks t\u00f6\u00f6tlemiseks, jagab see m\u00f5ningaid omadusi teiste mootoritega, nagu Apache Impala &amp; Kudu ja YugaByte, mis on m\u00f5eldud OLAP-i t\u00f6\u00f6koormusteks.<\/p>\n<p>Isegi kui Cloud Spanneril oleks ainult v\u00e4ike t\u00f5en\u00e4osus sisaldada konsolideeritud horisontaalselt skaleeritavat HTAP (h\u00fcbriidne tehingu\/analu\u00fctiline t\u00f6\u00f6tlemine) mootorit koos (rohkem-v\u00e4hem) kasutatava OLAP funktsioonide kogumiga, arvame, et see v\u00e4\u00e4riks meie t\u00e4helepanu.<\/p>\n<p>Seda silmas pidades oleme vaadanud j\u00e4rgmisi kategooriaid:<\/p>\n<ul>\n<li>Andmete laadimine, indeksid ja partitsioneerimise tugi.<\/li>\n<li>K\u00fcsimuste ja DML j\u00f5udlus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Cloud Spanner l\u00fchidalt.<\/h2>\n<p>\nGoogle Spanner on klastritehalduse relatsiooniliste andmebaaside s\u00fcsteem (RDBMS), mida Google kasutab mitmete oma teenuste jaoks. Google avas selle avalikkusele Google Cloud Platformis 2017. aasta alguses.<\/p>\n<p>Siin on m\u00f5ned Cloud Spanneri omadused:<\/p>\n<ul>\n<li>Tugevalt konsolideeritud skaleeritav RDBMS klaster: kasutab ajas\u00fcnkroniseerimist andmete konsistentsi tagamiseks.<\/li>\n<li>Kross-tabelitehingute tugi: tehingud v\u00f5ivad katab mitmeid tabeleid \u2014 ei pea olema piiratud \u00fche tabeliga (erinevalt Apache HBase'ist v\u00f5i Apache Kudust).<\/li>\n<li>Esmaste v\u00f5tmete p\u00f5hised tabelid: k\u00f5ik tabelid peavad omama deklareeritud esmast v\u00f5tme (EV), mis v\u00f5ib koosneda mitmest tabeli veerust. Tabeliandmed salvestatakse EV j\u00e4rgi, mist\u00f5ttu on need v\u00e4ga t\u00f5husad ja kiired EV j\u00e4rgi otsimiseks. Nagu teised EV-p\u00f5hised s\u00fcsteemid, peab rakendus olema modelleeritud eelnevalt l\u00e4bi m\u00f5eldud kasutusjuhtide saavutamiseks. <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/schema-and-data-model\">parimat j\u00f5udlust.<\/a><\/noindex>.<\/li>\n<li>Vahelduvad tabelid: tabelid v\u00f5ivad omavahel f\u00fc\u00fcsiliselt s\u00f5ltuda. Alustabeli read v\u00f5ivad vastanduda pealtabeli ridadele. Selline l\u00e4henemine kiirus suhted, mis v\u00f5ivad andmemudeli loomise etapis kindlaks m\u00e4\u00e4rata, n\u00e4iteks klientide ja nende arvete koospaigutamisel.<\/li>\n<li>Indeksid: Cloud Spanner toetab teiseseid indekseid. Indeks koosneb indekseeritud veergudest ja k\u00f5igist PK veergudest. Soovi korral v\u00f5ib indeks sisaldada ka teisi indekseerimata veerge. Indeks v\u00f5ib vahelduda pealtabeliga, et p\u00e4ringute t\u00e4itmist kiirendada. Indeksitele kehtivad mitmed piirangud, n\u00e4iteks maksimaalne t\u00e4iendavate veergude arv, mida indeksi sees hoida v\u00f5ib. Lisaks ei pruugi indeksite kaudu p\u00e4ringud olla nii sirged kui teistes RDBMS-des.<\/li>\n<\/ul>\n<p>\n<i>\u201eCloud Spanner valib indeksi automaatselt vaid harvadel juhtudel. Eelk\u00f5ige ei vali Cloud Spanner teist indeksit automaatselt, kui p\u00e4ring n\u00f5uab m\u00f5ningaid veerge, mida ei hoita <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/secondary-indexes\">indeksis <\/a><\/noindex>\u00bb.<\/i><\/p>\n<ul>\n<li>Teenuse taseme leping (SLA): \u00fches piirkonnas juurutamine SLA-ga 99,99%; mitme piirkonna juurutamine 99,999% SLA-ga. Kuigi teenuse taseme leping ise on vaid leping, mitte mingisugune garantii, usun, et Google'i t\u00f6\u00f6tajatel on t\u00f5eliselt t\u00e4psed andmed, et teha selline t\u00f5sine v\u00e4ide. (Infoks, 99,999% t\u00e4hendab, et teenuse aegumise aeg on 26,3 sekundit kuus.)<\/li>\n<li>Rohkem: <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>M\u00e4rkus:<\/b> Apache Tephra projekt lisab Apache HBase'ile laienenud tehingute toe (n\u00e4iteks on see n\u00fc\u00fcd rakendatud Apache Phoenixis beetaversioonina).<\/i><\/p><\/blockquote>\n<p><\/p>\n<h2>3. Meie hinnang<\/h2>\n<p>\nNii et k\u00f5ik oleme lugenud Google'i v\u00e4iteid Cloud Spanneri eeliste kohta \u2014 praktiliselt piiramatu horisontaalne skaala s\u00e4ilitades samal ajal k\u00f5rge j\u00e4rjepidevuse ja v\u00e4ga k\u00f5rge SLA. Kuigi nende n\u00f5udmiste saavutamine on igal juhul \u00e4\u00e4rmiselt raske, ei olnud meie eesm\u00e4rk nende \u00fcmber l\u00fckata. Selle asemel keskendugem muudele asjadele, mis puudutavad enamikku andmebaasi kasutajatest: \u00f5igsus ja kasutusmugavus.<\/p>\n<h4>Hindasime Cloud Spannerit kui asendust Sharded MySQL-le.<\/h4>\n<p>\nGoogle Cloud SQL ja Amazon AWS RDS, kaks k\u00f5ige populaarsemat OLTP andmebaasi pilveturul, omavad v\u00e4ga suurt funktsioonide kogumit. Siiski, et skaleerida neid andmebaase \u00fcle \u00fche s\u00f5lme suuruse, peate rakenduste jaotamisel need jagama. Selline l\u00e4henemine toob kaasa lisaks keerukust nii rakendustele kui ka haldamisele. Oleme vaadanud, kuidas Spanner sobib mitme segmendi \u00fchendamise stsenaariumisse \u00fcheks instantsiks ja millistest funktsioonidest (kui \u00fchtegi) tuleb v\u00f5ib-olla loobuda.<\/p>\n<h4>SQL, DML ja DDL toetamine, samuti konnektor ja raamatukogud?<\/h4>\n<p>\nEsiteks, olenemata sellest, millise andmebaasi kasutusele v\u00f5tmisest on oluline luua andmemudel. Kui arvate, et saate oma lemmik SQL-t\u00f6\u00f6riista JDBC Spanneriga \u00fchendada, avastate, et saate oma andmeid selle abil p\u00e4rida, kuid ei saa seda kasutada tabelite loomise v\u00f5i muutmise (DDL) ning insert\/update\/delete (DML) operatsioonide jaoks. Google'i ametlik JDBC ei toeta ei \u00fchtegi ega teist.<\/p>\n<blockquote><p><i>\u201ePraegu ei toeta draiverid DML- v\u00f5i DDL-lauseid.\u201c<\/i><br \/>\nSpanneri dokumentatsioon<\/p><\/blockquote>\n<p>\nGCP konsooliga pole olukord parem \u2013 saate esitada ainult SELECT-p\u00e4ringuid. \u00d5nneks on olemas avatud j\u00fcri DML ja DDL toetava JDBC draiver, sealhulgas tehingud. <noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/olavloite\/spanner-jdbc\">github.com\/olavloite\/spanner-jdbc<\/a><\/noindex>. Kuigi see draiver on \u00e4\u00e4rmiselt kasulik, \u00fcllatab Google'i enda JDBC draiveri puudumine. \u00d5nneks pakub Google \u00fcsna laialdast kliente toetavaid raamatukogusid (gRPC p\u00f5hjal): C#, Go, Java, node.js, PHP, Python ja Ruby.<\/p>\n<p>Peaaegu kohustuslik Cloud Spanneri kohandatud API-de kasutamine (DDL ja DML puudumise t\u00f5ttu JDBC-s) toob kaasa m\u00f5ned piirangud seotud koodivaldkondades, nagu \u00fchenduse basseinid v\u00f5i andmebaasi sidumisseired (nt Spring MVC). \u00dcldiselt on JDBC kasutamisel v\u00f5imalik vabalt valida oma lemmik \u00fchenduse bassein (nt HikariCP, DBCP, C3PO jne), mis on testitud ja t\u00f6\u00f6tab h\u00e4sti. Kui tegemist on kohandatud Spanneri API-dega, peame toetuma raamistikele\/\u00fchenduse basseinidele\/istungitele, mille oleme ise loodud.<\/p>\n<p>Peamise v\u00f5tme (PV) suunitlus v\u00f5imaldab Cloud Spanneril olla v\u00e4ga kiire andmete juurdep\u00e4\u00e4suks l\u00e4bi PV, kuid see toob ka kaasa teatud p\u00e4ringute probleemid.<\/p>\n<ul>\n<li>Te ei saa muuta esmase v\u00f5tme v\u00e4\u00e4rtust; peate esmalt kustutama kirje originaalse PK-ga ja seej\u00e4rel sisestama selle uuesti koos uue v\u00e4\u00e4rtusega. (See sarnaneb teistele PK orienteeritud andmebaasidele\/hoidmismehhanismidele.)<\/li>\n<li>K\u00f5ik UPDATE ja DELETE k\u00e4sklused peavad m\u00e4\u00e4rama PK WHERE lauses, seega ei tohi olla t\u00fchje DELETE all \u2014 alati peab olema alamklausel, n\u00e4iteks: UPDATE xxx WHERE id IN (SELECT id FROM table1)<\/li>\n<li>Puuduvad automaatse inkremendi valikud v\u00f5i midagi sellist, mis m\u00e4\u00e4rab PK v\u00e4ljade j\u00e4rjestuse. Selleks, et see toimiks, peab vastav v\u00e4\u00e4rtus olema genereeritud rakenduse tasandil.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Teised indeksid?<\/h4>\n<p>\nGoogle Cloud Spanner toetab sisseehitatud teise taseme indeksite toetust. See on v\u00e4ga kena omadus, mida ei pruugi leida teistest tehnoloogiatest. Apache Kudu ei toeta praegu teisi indekseid \u00fcldse, samas kui Apache HBase ei toeta indekseid otse, kuid saab neid lisada Apache Phoenixi kaudu.<\/p>\n<p>Kudu ja HBase indekseid saab modelleerida kui eraldi tabelit erineva esmase v\u00f5tme koosseisuga, kuid vanematele tabelitele ja seotud indeksitabelitele teostatavad operatsioonide aatomisus tuleb tagada rakenduse tasandil ning see ei ole triviaalne \u00f5ige rakenduse puhul.<\/p>\n<p>Nagu juba mainitud Cloud Spanneri \u00fclevaates, v\u00f5ivad selle indeksid erineda MySQL indeksitest. Seet\u00f5ttu tuleks olla \u00e4\u00e4rmiselt ettevaatlik p\u00e4ringute koostamisel ja profileerimisel, et tagada, et \u00f5iged indeksid oleksid kasutuses seal, kus neid on vaja.<\/p>\n<h4>Vaated?<\/h4>\n<p>\nV\u00e4ga populaarne ja kasulik objekt andmebaasis on vaated. Need v\u00f5ivad olla kasulikud paljude kasutusjuhtude jaoks; kaks minu lemmikut on loogilise abstraktsiooni tase ja turvalisuse tase. Kahjuks ei toeta Cloud Spanner vaateid. Kuid see piirab meid ainult osaliselt, kuna juurdep\u00e4\u00e4su\u00f5iguste detailid ei ole veergude tasandil, kus vaated v\u00f5ivad olla vastuv\u00f5etav lahendus.<\/p>\n<p>Cloud Spanneri dokumentatsioonis, millel on kvootide ja piirangute kirjeldus (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/quotas\">spanner\/quotas<\/a><\/noindex>), on on mitmeid, mis v\u00f5ivad m\u00f5ne rakenduse jaoks probleemiks kujuneda: Cloud Spanneril on vaikimisi piirang, et instantsil v\u00f5ib olla maksimaalselt 100 andmebaasi. Ilmselgelt v\u00f5ib see kujuneda t\u00f5siseks takistuseks andmebaasile, mis on m\u00f5eldud rohkem kui 100 andmebaasi skaleerimiseks. \u00d5nneks, p\u00e4rast vestlust meie Google'i tehnilise esindajaga, selgus, et seda piiri saab suures osas t\u00f5sta praktiliselt mistahes v\u00e4\u00e4rtuseni Google'i tugiteenuse kaudu.<\/p>\n<h4>Arenduse tugi?<\/h4>\n<p>\nCloud Spanner pakub \u00fcsna head programmeerimiskeelte tuge oma API kasutamiseks. Ametlikult toetatud raamatukogud h\u00f5lmavad C#, Go, Java, node.js, PHP, Python ja Ruby. Dokumentatsioon on piisavalt detailne, kuid nagu paljude teiste tipptasemel tehnoloogiate puhul, on kogukond suhteliselt v\u00e4ike v\u00f5rreldes populaarsemate andmebaasitehnoloogiatega, mis v\u00f5ib pikendada aega, mis kulub v\u00e4hem levinud kasutusjuhtumite v\u00f5i probleemide lahendamiseks.<\/p>\n<h4>Kuidas on lood lokaalsete arendustegevuse tugiteenustega?<\/h4>\n<p>\nMe ei leidnud viisi, kuidas luua Cloud Spanneri instants lokaalses keskkonnas. K\u00f5ige l\u00e4hem, mida me saime, oli Docker-pilt. <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/cockroachdb\/cockroach\">CockroachDB<\/a><\/noindex>, mis on p\u00f5him\u00f5tteliselt sarnane, kuid praktikas tugevalt erinev. N\u00e4iteks saab CockroachDB kasutada PostgreSQL JDBC-d. Kuna arenduskeskkond peaks olema v\u00f5imalikult l\u00e4hedane tootmisliideselt, ei ole Cloud Spanner ideaalne, kuna tuleb tugineda t\u00e4ielikule Spanneri instantsile. Kulude kokkuhoidmiseks v\u00f5ite valida \u00fche piirkonna instantsi.<\/p>\n<h4>Administratsiooni tugi?<\/h4>\n<p>\nCloud Spanneri instantsi loomine on v\u00e4ga lihtne. Tuleb lihtsalt valida, kas luua mitmeregionaalne v\u00f5i \u00fcheregionaalne instants, m\u00e4\u00e4rata piirkonnad ja s\u00f5lmede arv. V\u00e4hem kui minuti jooksul on instants k\u00e4ivitunud ja t\u00f6\u00f6ks valmis.<\/p>\n<p>M\u00f5ned p\u00f5histatistika on otse kergesti kergesti k\u00e4tte saadavad Google'i konsoolis Spanneri lehelt. T\u00e4iendavad vaated on saadaval l\u00e4bi Stackdriveri, kus saate ka seadistada m\u00f5\u00f5dikute piirv\u00e4\u00e4rtusi ja teavitamispoliitikaid.<\/p>\n<h4>Juurdep\u00e4\u00e4s ressurssidele?<\/h4>\n<p>\nMySQL pakub laialdasi ja v\u00e4ga \u00fcksikasjalikke kasutaja\u00f5iguste\/rollide seadistusi. Kui soovite, saate h\u00f5lpsasti seadistada juurdep\u00e4\u00e4su kindlale tabelile v\u00f5i isegi lihtsalt alamhulgale selle veergudest. Cloud Spanner kasutab Google'i identiteedi ja juurdep\u00e4\u00e4su halduse (IAM) t\u00f6\u00f6riista, mis v\u00f5imaldab seada poliitikaid ja \u00f5igusi ainult v\u00e4ga k\u00f5rgel tasemel. K\u00f5ige detailsem variant on andmebaasi tasemel \u00f5igus, mis ei sobi enamiku tootmisjuhtumitega. See piirang sunnib teid lisama oma koodi, infrastruktuuri v\u00f5i m\u00f5lema lisakaitsemeetmeid Spanneri ressursside volitamata kasutamise v\u00e4ltimiseks.<\/p>\n<h4>Varukoopiad?<\/h4>\n<p>\nLihtsalt \u00f6eldes ei eksisteeri Cloud Spanneris varukoopiaid. Kuigi Google'i SLA k\u00f5rged n\u00f5uded v\u00f5ivad tagada, et te ei kaota andmeid seadme v\u00f5i andmebaasi \u00fclekoormuse t\u00f5ttu, ei kaitse need inimvigade, rakenduse defektide jne eest. Me k\u00f5ik teame reeglit: k\u00f5rge k\u00e4ttesaadavus ei asenda m\u00f5istlikku varukoopiate strateegiat. Praegu on ainus viis andmete varundamiseks nende voogedastamine andmebaasist eraldi salvestuskeskkonda.<\/p>\n<h4>P\u00e4ringute j\u00f5udlus?<\/h4>\n<p>\nAndmete laadimiseks ja p\u00e4ringute testimiseks kasutasime Yahoo! Cloud Serving Benchmark'i. Allolevas tabelis on esitatud YCSB t\u00f6\u00f6koormus B, mille lugemise suhe on 95% ja kirjutamise suhe 5%.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/8fca14875af33c8ed3cd04b602c52b78.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Koormustest viidi l\u00e4bi arvutusmootoril (CE) n1-standard-32 (32 vCPU, 120 GB m\u00e4lu), ja testimisinstants ei olnud kunagi testide kitsaskohaks.<\/i><br \/>\n<i>** \u00dche YCSB instantsi maksimaalne l\u00f5imede arv on 400. Kokku tuli k\u00e4ivitada kuus paralleelset YCSB testide instantsi, et saavutada kokku 2400 l\u00f5ime.<\/i><\/p>\n<p>Tulemusi silmas pidades, eriti protsessori koormuse ja TPS kombinatsiooni osas, n\u00e4eme selgelt, et Cloud Spanner suudab piisavalt h\u00e4sti skaleeruda. Suure koormuse, mille tekitab suur arv vooge, kompenseerib Cloud Spanneri klastris olev suur arv s\u00f5lmi. Kuigi latentsus n\u00e4ib olevat \u00fcsna k\u00f5rge, eriti 2400 voo korral, v\u00f5ib t\u00e4psemate numbrite saamiseks olla vajalik uuesti testimine 6 v\u00e4iksema arvutusmootoriga eksemplariga. Iga eksemplar k\u00e4ivitab \u00fche YCSB testi, selle asemel et kasutada \u00fchte suurt CE eksemplari 6 paralleelse testiga. Nii on kergem eristada Cloud Spanneri p\u00e4ringute latentsust ja latentsust, mille toob kaasa v\u00f5rgu\u00fchendus Cloud Spanneri ja CE eksemplari vahel, kus test viiakse l\u00e4bi.<\/p>\n<h3>Kuidas Cloud Spanner OLAP-iga toime tuleb?<\/h3>\n<p><\/p>\n<h4>Partitsioneerimine?<\/h4>\n<p>\nAndmete jagamine f\u00fc\u00fcsiliselt ja\/v\u00f5i loogiliselt iseseisvateks segmentideks, mida nimetatakse partitsioonideks, on v\u00e4ga populaarne kontseptsioon, mis on iseloomulik enamikule OLAP mehhanismidele. Partitsioonid v\u00f5ivad oluliselt parandada p\u00e4ringute j\u00f5udlust ja andmebaasi hooldatavust. S\u00fcgavam k\u00e4sitlus partitsioonide \u00fcle kujundaks eraldi artikli(e), seega mainime lihtsalt partitsioneerimise ja alam-partitsioneerimise skeemi olemasolu t\u00e4htsust. V\u00f5ime andmed partitsioonideks jagada ja isegi edasi alam-partitsioonideks on v\u00f5tmet\u00e4htsusega anal\u00fc\u00fctiliste p\u00e4ringute j\u00f5udluses.<\/p>\n<p>Cloud Spanner ei toeta partitsioone sellisel kujul. See jagab andmed seespool nii-\u00f6elda <i>split<\/i>-deks, mis p\u00f5hinevad peamise v\u00f5tme vahemikel. Jagamine toimub automaatselt, et tasakaalustada koormust Cloud Spanneri klastris. V\u00e4ga mugav omadus Cloud Spanneris on ematahlaava koormuse jagamine (tabel, mis ei vaheldu teisega). Spanner kindlaks teeb, kas <i>split <\/i>andmed, mida loetakse sagedamini kui muudest <i>split<\/i>-dest, ja v\u00f5ib otsustada edasise jagamise \u00fcle. Nii saab p\u00e4ringus osaleda rohkem s\u00f5lmi, mis suurendab samuti l\u00e4bilaskev\u00f5imet.<\/p>\n<h4>Andmete laadimine?<\/h4>\n<p>\nCloud Spanneri meetod mahukate andmete laadimiseks on sama, mis tava-laadimisel. Parima j\u00f5udluse saavutamiseks peate j\u00e4rgima m\u00f5ningaid soovitusi, sealhulgas:<\/p>\n<ul>\n<li>Korrastage oma andmed primaarv\u00f5tme j\u00e4rgi.<\/li>\n<li>Jagage need k\u00fcmneks*<i>s\u00f5lmede arv<\/i> eraldi sektsioonides.<\/li>\n<li>Looge t\u00f6\u00f6\u00fclesannete kogum, mis laadib andmeid paralleelselt.<\/li>\n<\/ul>\n<p>\nSelle laadimise k\u00e4igus kasutatakse k\u00f5iki Cloud Spanneri s\u00f5lmi.<\/p>\n<p>Kasutasime A YCSB koormust, et genereerida 10M rea andmesett.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/89b9c0353716be2d389b3e8da82781ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Koormustest tehti n1-standard-32 (32 vCPU, 120 GB m\u00e4lu) arvutusv\u00f5imsusel ning testimisinstituudi ei t\u00e4heldatud kitsaskohana testide jooksul.<br \/>\n** \u00dcksiku s\u00f5lme seadistamine ei ole soovitatav \u00fchegi tootmiskoormuse jaoks.<\/i><\/p>\n<p>Nagu eespool mainitud, haldab Cloud Spanner automaatselt jagamist s\u00f5ltuvalt nende koormusest, seega paranevad tulemused p\u00e4rast mitut j\u00e4rjestikust katset. Siin esitatud tulemused on parimad, mida oleme saavutanud. Kui vaatame \u00fclaltoodud numbreid, n\u00e4eme, kuidas Cloud Spanner (h\u00e4sti) skaleerub koos s\u00f5lmede arvu suurenemisega klastris. Tunduvad numbrid esindavad \u00e4\u00e4rmiselt madalaid keskmisi viivitusi, mis kontrasteeruvad segakoormuse tulemustega (95% lugemist ja 5% kirjutamist), nagu on eespool kirjeldatud.<\/p>\n<h4>Skaleerimine?<\/h4>\n<p>\nCloud Spanneri s\u00f5lmede arvu suurendamine ja v\u00e4hendamine on \u00fche nupuvajutusega toiming. Kui soovite kiiresti andmeid laadida, v\u00f5ite kaaluda instantsi j\u00f5udluse t\u00f5stmist maksimaalseks (meie puhul oli see 25 s\u00f5lme US-EAST regioonis), ja seej\u00e4rel v\u00e4hendada s\u00f5lmede arvu, mis sobib teie tavaliseks koormuseks, p\u00e4rast seda, kui k\u00f5ik andmed on andmebaasis, pidada meeles 2 TB\/s\u00f5lm piiri.<\/p>\n<p>See piir tuli meelde isegi m\u00e4rksa v\u00e4iksema andmebaasi korral. P\u00e4rast mitmeid koormustestide l\u00e4biviimisi oli meie andmebaasi suurus umbes 155 GB ja \u00fche s\u00f5lmega instantsi v\u00e4hendamisel saime j\u00e4rgmise vea:<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/4a46c97e7943b5105bf178316dc67433.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMeil \u00f5nnestus v\u00e4hendada skaleerimist 25st 2 instantsini, kuid j\u00e4ime kahe s\u00f5lme k\u00fclge kinni.<\/p>\n<p>Cloud Spanner klastris s\u00f5lmede arvu suurenemist ja v\u00e4henemist saab automatiseerida REST API abil. See v\u00f5ib olla eriti kasulik s\u00fcsteemi koormuse v\u00e4hendamiseks tipptundidel.<\/p>\n<h4>OLAP p\u00e4ringute j\u00f5udlus?<\/h4>\n<p>\nAlguses plaanisime p\u00f6\u00f6rata sellele osale meie Spanneri hindamisest m\u00e4rkimisv\u00e4\u00e4rselt aega. P\u00e4rast mitmeid SELECT COUNT p\u00e4ringuid saime kohe aru, et testimine j\u00e4\u00e4b l\u00fchikeseks ja Spanner ei sobi OLAP mootoriks. \u00dcksk\u00f5ik kui palju s\u00f5lmi klastris on, v\u00f5ttis 10M rida tabelist lihtsalt ridade arvu valimine aega 55 kuni 60 sekundit. Lisaks l\u00f5ppes iga p\u00e4ring, mis vajas suuremat m\u00e4lu vahepealsete tulemuste hoidmiseks, OOM veaga.<\/p>\n<p><code>SELECT COUNT(DISTINCT(field0)) FROM usertable; \u2014 (10M unikaalset v\u00e4\u00e4rtust) -&gt; SpoolingHashAggregateIterator jooksis v\u00e4lja m\u00e4lu uue rea t\u00f6\u00f6tlemisel.<\/code><\/p>\n<p>M\u00f5ningaid numbreid TPC-H p\u00e4ringute kohta saab leida Todd Lipkoni artiklist <noindex><a rel=\"nofollow\" href=\"https:\/\/kudu.apache.org\/2017\/10\/23\/nosql-kudu-spanner-slides.html\">Nosql-kudu-spanner-slides.html<\/a><\/noindex>, slaididel 42 ja 43. Need numbrid vastavad meie enda tulemustele (kahjuks).<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: hea, halb, kole\" src=\"\/wp-content\/uploads\/2020\/02\/d070c839bbc62b1ba1bebbaf64127e93.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>4. Meie j\u00e4reldused<\/h4>\n<p>\nArvestades Cloud Spanneri hetkeseisu, on raske ette kujutada selle lihtsat asendamist olemasoleva OLTP lahendusega, eriti kui teie vajadused kasvavad sellest \u00fcle. Tuleks kulutada m\u00e4rkimisv\u00e4\u00e4rselt aega lahenduse ehitamiseks, arvestades Cloud Spanneri puudusi.<\/p>\n<p>Kui me alustasime Cloud Spanneri hindamist, ootasime, et selle haldusfunktsioonid on samal tasemel v\u00f5i v\u00e4hemalt mitte liiga kaugel teiste Google SQL lahenduste omadest. Kuid olime \u00fcllatunud, et varukoopiad puudusid t\u00e4ielikult ja juurdep\u00e4\u00e4su ressursidele kontroll oli \u00e4\u00e4rmiselt piiratud. R\u00e4\u00e4kimata vaadete puudumisest, kohaliku arenduskeskkonna puudumisest, toetamata j\u00e4rjestustest, JDBC-st DML ja DDL toeta jne.<\/p>\n<p>Nii et kuhu minna, kui on vaja skaleerida tehingute andmebaasi? Paistab, et turul ei ole veel \u00fchtset lahendust, mis sobiks k\u00f5igi kasutusvariantidega. On olemas mitmeid suletud ja avatud l\u00e4htekoodiga lahendusi (m\u00f5ned neist on selles artiklis mainitud), iga\u00fchel on oma tugevused ja n\u00f5rkused, kuid \u00fckski neist ei paku SaaS-i SLA-ga 99,999% ja k\u00f5rge j\u00e4rjepidevusega. Kui k\u00f5rge SLA on teie peamine eesm\u00e4rk ja te ei soovi luua oma lahendust mitmete pilvekeskkondade jaoks, v\u00f5ib Cloud Spanner olla just see lahendus, mida otsite. Kuid peate teadma selle k\u00f5iki piiranguid.<\/p>\n<p>\u00d5igluse nimel tuleks m\u00e4rkida, et Cloud Spanner lasti \u00fcldkasutusse alles 2017. aasta kevadel, seega on m\u00f5istlik oodata, et m\u00f5ned selle praegused puudused v\u00f5ivad l\u00f5puks kaduda (loodetavasti), ja kui see juhtub, v\u00f5ib see m\u00e4ngu muuta. L\u00f5ppude l\u00f5puks ei ole Cloud Spanner lihtsalt Google'i k\u00fclalisprojekt. Google kasutab seda oma teiste Google'i toodete aluseks. Ja kui Google asendas hiljuti Megastore'i Google Cloud Storage'is Cloud Spanneriga, muudab see Google Cloud Storage'i rangelt j\u00e4rjepidevaks objektide nimekirjade osas maailmas (mis siiski ei kehti <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">Amazon\u2019s<\/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>Nii et lootus on veel olemas\u2026 loodame.<\/p>\n<p>Sellega on k\u00f5ik. Nagu artikli autor, j\u00e4tkame meiegi lootmist, aga mida teie arvate? Kirjutage kommentaaridesse<\/p>\n<p><b>Kutsume k\u00f5iki huvilisi k\u00fclastama meie <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">which is taking place today at 20:00. During the webinar, we will discuss how to build an efficient and scalable data processing system for a small company or startup with minimal costs. As a part of the practice, we will get to know Google Cloud data processing tools. See you there!<\/a><\/noindex> , kus r\u00e4\u00e4gime kursusest \u00fcksikasjalikult<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\"> \u201eAWS arendajatele\u201c<\/a><\/noindex> OTUS-e poolt.<\/b><br \/>\n<br \/>Allikas: <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.1.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\/et\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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: hea, halb, kole | ProHoster","description":"Tere, hubased. Traditsiooniliselt jagame huvitavat materjali uute kursuste alguse eel.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/69568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=69568"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/69568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/69569"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=69568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=69568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=69568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}