Google Cloud Spanner: hea, halb, kole

Tere, Habr'i lugejad. JÀtkame traditsiooniliselt huvitava materjali jagamist uute kursuste alguse eelÔhtul. TÀna oleme teie jaoks tÔlkinud artikli Google Cloud Spannerist, seostades selle kursuse kÀivitamisega AWS arendajatele.

Google Cloud Spanner: hea, halb, kole

Esialgselt avaldatud Lightspeed HQ blogis.

Kuna ettevĂ”te, mis pakub mitmeid pilvepĂ”hiseid POS-lahendusi jaemĂŒĂŒjatele, restoranipidajatele ja veebimĂŒĂŒjatele ĂŒle kogu maailma, kasutab Lightspeed mitmeid erinevaid andmebaasiplatvorme, et toetada erinevaid tehingulisi, analĂŒĂŒtilisi ja otsingukiire. Igal neist andmebaasiplatvormidest on oma tugevused ja nĂ”rkused. Seega, kui Google tutvustas turul Cloud Spannerit - tĂ”otavad omadused, mida pole nĂ€htud suhte-andmebaaside maailmas, nĂ€iteks praktiliselt piiramatu horisontaalne skaleeritavus ja 99,999% teenuse taseme leping (SLA) - ei saanud me jĂ€tta kasutamata vĂ”imalust selle meie kĂ€tte saada!

Kuna anname pĂ”hjaliku ĂŒlevaate meie kogemustest Cloud Spanneriga ja hindamiskriteeriumidest, mida oleme kasutanud, vaatame jĂ€rgmisi teemasid:

  1. Meie hindamiskriteeriumid
  2. Cloud Spanner lĂŒhiĂŒlevaates
  3. Meie hinnang
  4. Meie jÀreldused

Google Cloud Spanner: hea, halb, kole

1. Meie hindamiskriteeriumid

Enne kui sĂŒveneme Cloud Spanneri eripĂ€ra, sarnasusi ja erinevusi teiste turul olevate lahendustega, arutame esmalt pĂ”hikasutusi, mida meollime kaalunud Cloud Spanneri juurutamist meie infrastruktuuris:

  • Mugavuse huvides traditsioonilise SQL andmebaasilahenduse asendajana
  • OLTP lahendusena koos OLAP toega

MÀrkus: Selle artikli eesmÀrk on vÔrrelda Cloud Spannerit MySQL erinevustega, GCP Cloud SQL ja Amazon AWS RDS lahenduste peredega.

Cloud Spanneri kasutamine traditsioonilise SQL andmebaasilahenduse asendajana

Keskkonnas traditsioonilised andmebaasid, kus vastuseajad andmebaasi pĂ€ringutele lĂ€hevad lĂ€hedale vĂ”i isegi ĂŒletavad eelnevalt mÀÀratud rakenduse lĂ€vivÀÀrtusi (peamiselt suurenenud kasutajate ja/vĂ”i pĂ€ringute arvu tĂ”ttu), on mitmeid viise, kuidas vĂ€hendada vastusaega vastuvĂ”etavatele tasemetele. Kuid enamik neist lahendustest nĂ”uab kĂ€sitsi sekkumist.

NĂ€iteks on esimene samm, millele tĂ€helepanu pöörata, erinevad andmebaasi toimivuse parameetrid, ja nende kohandamine rakenduste kasutusstsenaariumide mallidega parima ĂŒhtimise saavutamiseks. Kui see ei ole piisav, vĂ”ib valida andmebaasi vertikaalse vĂ”i horisontaalse skaleerimise.

Rakenduse vertikaalne skaleerimine tĂ€hendab serveri instantsi uuendamist, tavaliselt suurema arvu protsessorite / tuumade, suurema muutmemĂ€lu ja kiirema salvestusruumi lisamise teel. Suurema hulga riistvararessursside lisamine toob kaasa andmebaasi toimivuse paranemise, mida mÔÔdetakse peamiselt sekundis tehtud tehingute arvu ja OLTP-sĂŒsteemide tehingute latentsuse jĂ€rgi. Suhete andmebaasisĂŒsteemid (mis kasutavad mitme haru lĂ€henemist), nagu MySQL, skaleeruvad hĂ€sti vertikaalselt.

Selle lÀhenemisega on seotud mitmeid puudusi, kuid ilmselgeim on turu suurima serveri maksimaalne suurus. Kui saavutatakse suurima serveri instantsi piir, on ainus tee horisontaalne skaleerimine.

Horisontaalne skaleerimine on lĂ€henemine, mille kĂ€igus lisatakse klastrisse rohkem servereid, et ideaaljuhul suurendada jĂ”udlust lineaarset muutumist serverite arvu suurenemisega. Enamik traditsioonilised andmebaasisĂŒsteeme ei skaleeru horisontaalselt vĂ”i ei skaleeru ĂŒldse. NĂ€iteks MySQL vĂ”ib horisontaalset skaleerimist kasutada lugemisoperatsioonide jaoks, lisades orja-lugejaid, kuid ei saa seda kasutada kirjutamisoperatsioonide jaoks.

Teisest kĂŒljest suudab Cloud Spanner tĂ€nu oma olemusele horisontaalselt hĂ”lpsasti skaleeruda minimaalse sekkumisega.

TĂ€ielikult funktsionaalne andmebaas kui teenus peab olema hinnatud erinevate aspektide kohaselt. Aluseks vĂ”tsime kĂ”ige populaarsema pilve andmebaasi — Google'i jaoks, GCP Cloud SQL ja Amazoni jaoks, AWS RDS. Oma hindamises keskendusime jĂ€rgmistele kategooriatele:

  • Funktsioonide vĂ”rdlemine: SQL ulatus, DDL, DML; ĂŒhendusraamatukogud/konnektorid, tehingute tugi ja nii edasi.
  • Arenduse tugi: arendamise ja testimise lihtsus.
  • Halduse tugi: instance'ide haldamine — nĂ€iteks ĂŒles/alla skaleerimine ja instance’ide uuendamine; SLA, varundamine ja taastamine; turvalisus/juurdepÀÀsukontroll.

Cloud Spanneri kasutamine OLTP lahendusena, mis toetab OLAP-i.

Kuigi Google ei vĂ€ida selgelt, et Cloud Spanner on mĂ”eldud analĂŒĂŒtiliseks töötlemiseks, jagab see mĂ”ningaid omadusi teiste mehhanismidega, nagu Apache Impala & Kudu ja YugaByte, mis on mĂ”eldud OLAP töökoormustele.

Isegi kui oleks olemas ainult vĂ€hene vĂ”imalus, et Cloud Spanner sisaldab horisontaalselt skaaleeritavat HTAP (hĂŒbriidne tehinguline/analĂŒĂŒtiline töötlemine) mootori koos (vĂ€hem-vĂ€lja) kasutatava OLAP funktsioonide komplektiga, arvan, et see vÀÀriks meie tĂ€helepanu.

Seda silmas pidades oleme vaadanud jÀrgmisi kategooriaid:

  • Andmete laadimine, indeksid ja partitsioneerimise tugi
  • KĂŒsimuste ja DML tulemuslikkus

2. Cloud Spanner lĂŒhidalt

Google Spanner on klasterdatabaaside haldamise sĂŒsteem (RDBMS), mida Google kasutab oma mitmesugustes teenustes. Google tegi selle 2017. aasta alguses Google Cloud Platformi kasutajatele kĂ€ttesaadavaks.

Siin on mÔned Cloud Spanneri omadused:

  • KĂ”rge kooskĂ”lastusvĂ”imekusega skaleeritav RDBMS: kasutab ajasinroniseerimist andmete kooskĂ”lastatuse tagamiseks.
  • Toetab mitme tabeli tehinguid: tehingud vĂ”ivad hĂ”lmata mitmeid tabeleid — ei pea olema piiratud ĂŒhe tabeliga (erinevalt Apache HBase'ist vĂ”i Apache Kudust).
  • Tabelid, mis pĂ”hinevad primaaraval: kĂ”ik tabelid peavad omama mÀÀratud primaarvĂ”tit (PV), mis vĂ”ib koosneda mitmest tabeli veerust. Tabeli andmed salvestatakse PV alusel, mis muudab need vĂ€ga efektiivseks ja kiireks PV alusel otsimiseks. Nagu teiste PV-pĂ”histe sĂŒsteemide puhul, peab rakendamine olema modelleeritud arvestades eelnevalt lĂ€bi mĂ”eldud juhtumeid parima tulemuse saavutamiseks. parima jĂ”udluse saavutamiseks..
  • Vahelduvad tabelid: tabelid vĂ”ivad omavahel fĂŒĂŒsiliselt sĂ”ltuda. Alamtabeli read vĂ”ivad olla seotud ĂŒlemineku tabeli ridadega. Selline lĂ€henemine kiirendab suhete leidmist, mis vĂ”ivad olla mÀÀratletud andmemudeli koostamise etapis, nĂ€iteks klientide ja nende arvekohtade ĂŒhismajutuse korral.
  • Indeksid: Cloud Spanner toetab teiseseid indekseid. Indeks koosneb indekseeritud veergudest ja kĂ”igist PK veergudest. Soovi korral vĂ”ib indeks sisaldada ka muid indekseerimata veerge. Indeks vĂ”ib vahelduda ĂŒlemineku tabeliga pĂ€ringute kiirendamiseks. Indeksitele kehtivad mitmed piirangud, nĂ€iteks maksimaalne arv lisaveerge, mida indeksis hoitakse. Samuti vĂ”ivad pĂ€ringud indekseid kaudu olla keerulisemad kui teistes RDBMS-ides.

Cloud Spanner valib indeksi automaatselt ainult harvadel juhtudel. EelkÔige ei valita Cloud Spanner teisest indeksist automaatselt, kui pÀring nÔuab mingeid veerge, mis ei ole salvestatud indeksis ».

  • Teenuste tasemelepingu (SLA) puhul: juurutamine ĂŒhes regioonis SLA-ga 99,99%; mitmeregionaalsed juurutused 99,999% SLA-ga. Ehkki teenuste tasemeleping on lihtsalt leping, mitte garantii, arvan, et Google'i töötajatel on tĂ”epoolest mĂ”ned tĂ€psed andmed, et teha sellist tĂ”sist vĂ€idet. (Viidates, 99,999% tĂ€hendab 26,3 sekundit teenuse katkestust kuus.)
  • Rohkem: https://cloud.google.com/spanner/

MĂ€rkus: Apache Tephra projekt lisab Apache HBase-le laiendatud tehingute toe (nĂŒĂŒd on see beetaversioonis ellu viidud ka Apache Phoenixis).

3. Meie hinnang

Nii et oleme kĂ”ik lugenud Google'i vĂ€iteid Cloud Spanneri eeliste kohta — praktiliselt piiramatu horisontaalne skaleeritavus, sĂ€ilitades samas kĂ”rge jĂ€rjepidevuse ja vĂ€ga kĂ”rge SLA. Hoolimata sellest, et neid nĂ”udeid on tĂ”eliselt ÀÀrmiselt raske saavutada, ei olnud meie eesmĂ€rk neid ĂŒmber lĂŒkata. Keskendugem hoopis muudele asjadele, mis muretsevad enamikku andmebaasi kasutajaid: usaldusvÀÀrsus ja kasutusmugavus.

Hindasime Cloud Spannerit Sharded MySQL asendajana

Google Cloud SQL ja Amazon AWS RDS, kaks kĂ”ige populaarsemat OLTP andmebaasi pilvemarketis, omavad vĂ€ga suurt funktsioonide komplekti. Kuid selleks, et neid andmebaase skaleerida ĂŒhe sĂ”lme suurusest kaugemale, peate rakendustes tegema partitsioneerimist. Selline lĂ€henemine loob tĂ€iendavat keerukust nii rakendustele kui ka haldamisele. Oleme uurinud, kuidas Spanner sobib mitme segmendi ĂŒhendamise stsenaariumi ja millistest funktsioonidest (kui leidub) vĂ”ib-olla tuleb loobuda.

SQL, DML ja DDL tugi, samuti ĂŒhendus ja raamatukogud?

Esiteks, andmebaasi kasutamise alguses tuleb luua andmemudel. Kui arvate, et saate JDBC Spannerit oma lemmik SQL tööriista juurde ĂŒhendada, leiate, et saate andmeid nende kaudu pĂ€rida, kuid ei saa neid kasutada tabeli loomiseks vĂ”i muutmiseks (DDL) ega ka mis tahes sisestamise, uuendamise vĂ”i kustutamise (DML) operatsioonide jaoks. Google’i ametlik JDBC ei toeta kumbagi.

„Praegu ei toeta draiverid DML- vĂ”i DDL-operatsioone.”
Spanneri dokumentatsioon

GCP konsooliga ei ole olukord parem — saate saata ainult SELECT-pĂ€ringuid. Õnneks on olemas DML ja DDL toe jaoks JDBC draiver, mille on vĂ€lja töötanud kogukond, sealhulgas tehingud. github.com/olavloite/spanner-jdbc. Kuigi see draiver on ÀÀrmiselt kasulik, ĂŒllatab Google'i puuduv JDBC draiver. Õnneks pakub Google ĂŒsna laia toetust kliendiraamatukogudele (pĂ”hinevad gRPC-l): C#, Go, Java, node.js, PHP, Python ja Ruby.

Peaaegu kohustuslik kohandatud Cloud Spanner API-de kasutamine (DDL ja DML puudumise tĂ”ttu JDBC-s) toob kaasa teatud piirangud seotud koodialadele, nagu ĂŒhenduse kogumid vĂ”i andmebaasi sidumise raamistikud (nt Spring MVC). Üldiselt on JDBC kasutamisel vĂ”imalik vabalt valida lemmikĂŒhenduse kogum (nt HikariCP, DBCP, C3PO jne), mis on testitud ja toimib hĂ€sti. Kohandatud Spanner API-de puhul peame toetuma ise loodud raamistikele/ĂŒhenduste kogudele/sessioonidele.

Peamine vÔtmega (PK) struktuur vÔimaldab Cloud Spanneril andmetele PK kaudu vÀga kiiresti juurde pÀÀseda, kuid toob kaasa ka teatud pÀringute probleemid.

  • Te ei saa muuta peamise vĂ”tme vÀÀrtust; peate esmalt kustutama kirje originaalse PK-ga ja seejĂ€rel uuesti sisestama selle uue vÀÀrtusega. (See on sarnane teiste PK-pĂ”histe andmebaaside/salvestusmehhanismidega.)
  • KĂ”ik UPDATE ja DELETE operaatorid peavad nĂ€itama PK-d WHERE, seega ei saa olla tĂŒhje DELETE all — alaliselt peab olema alamkĂŒsitlus, nĂ€iteks: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • Puudub automaatse suurendamise variant vĂ”i midagi sarnast, mis mÀÀrab PK vĂ€lja jĂ€rjestuse. Selle töötamiseks peab vastav vÀÀrtus olema loodud rakenduse poolel.

Teised indeksid?

Google Cloud Spanner toetab sisseehitatud teisi indekseid. See on vĂ€ga meeldiv omadus, mida teistes tehnoloogiates ei pruugi alati olla. Apache Kudu ei toeta ĂŒldse teisi indekseid, samas kui Apache HBase ei toeta indekseid otse, vaid saab neid lisada Apache Phoenixi kaudu.

Indekseid Kudu ja HBase-s saab modelleerida kui eraldi tabelit erineva primaarvÔtmete koosseisuga, kuid toimingute aatomomaatsus, mida tehakse vanemtabeli ja sellega seotud indeksitabelitega, peab toimuma rakenduse tasemel ja ei ole lihtne Ôigesti ellu viia.

Nagu mainitud Cloud Spaneri ĂŒlevaates, vĂ”ivad selle indeksid erineda MySQL indeksitest. SeetĂ”ttu tuleks olla ettevaatlik pĂ€ringute koostamisel ja profileerimisel, et tagada sobiva indeksi kasutamine seal, kus see on vajalik.

Vaated?

VÀga populaarne ja kasulik objekt andmebaasis on vaated. Need vÔivad olla kasulikud paljude kasutusjuhtude jaoks; minu kaks lemmikut on loogilise abstraktsiooni tase ja turvalisuse tase. Kahjuks ei toeta Cloud Spanner vaateid. Kuid see piirab meid vaid osaliselt, kuna juurdepÀÀsuÔiguste osas ei ole veerge tasemel detailide eristamist, kus vaated vÔivad olla vastuvÔetav lahendus.

Cloud Spanneri dokumentatsioonis jaotises, kus kirjeldatakse kvoote ja piiranguid (spanner/quotas), on ĂŒks, mis vĂ”ib olla probleemne mĂ”nede rakenduste jaoks: Cloud Spanner'il on mingeid limite, mis on maksimaalselt 100 andmebaasi iga instantsi kohta. Ilmselt vĂ”ib see muutuda tĂ”siseks takistuseks andmebaasile, mis on mĂ”eldud skaleerimiseks enam kui 100 andmebaasi jaoks. Õnneks, pĂ€rast vestlust meie Google'i tehnikuga, selgus, et seda piiri saab praktiliselt igas suuruses tĂ”sta Google'i tugiteenuse kaudu.

Arenduse tugi?

Cloud Spanner pakub ĂŒsna head programmeerimiskeelte toetust oma API-de kasutamiseks. Ametlikult toetatud teegid on C#, Go, Java, node.js, PHP, Python ja Ruby. Dokumentatsioon on piisavalt detailne, kuid nagu teiste tipptasemel tehnoloogiate puhul, on ka kogukond ĂŒsna vĂ€ike vĂ”rreldes kĂ”ige populaarsemate andmebaasitehnoloogiate kogukondadega, mis vĂ”ib suurendada aega, mis kulub vĂ€hem levinud kasutusjuhtude vĂ”i probleemide lahendamiseks.

Nii et kuidas on kohaliku arenduse toega?

Me ei leidnud viisi Cloud Spanneri instantsi loomiseks kohalikus keskkonnas. KĂ”ige lĂ€hem, mida saime, oli Docker-i pilt CockroachDB, mis on pĂ”himĂ”tteliselt sarnane, kuid praktikas vĂ€ga erinev. NĂ€iteks CockroachDB saab kasutada PostgreSQL JDBC-d. Kuna arenduskeskkond peaks olema vĂ”imalikult lĂ€hedane tootmiskeskkonnale, ei ole Cloud Spanner ideaalne, kuna peab toetuma tĂ€ielikule Spanneri instantsile. Kulude kokkuhoidmiseks vĂ”ite valida ĂŒhe regiooni instantsi.

Halduse tugi?

Cloud Spanneri instantsi loomine on vĂ€ga lihtne. Peate lihtsalt valima, kas luua mitmeregionaalne vĂ”i ĂŒhe regiooni instants, mÀÀrama regiooni(d) ja sĂ”lmede arvu. VĂ€hem kui minuti jooksul on instants kĂ€ivitatud ja tööks valmis.

MĂ”ned pĂ”himetriigid on otse juurdepÀÀsetavad Google'i konsoolis Spanneri lehelt. Üksikasjalikumad vaated on saadaval Stackdriveri kaudu, kus saate ka seadistada metrikate ja hĂ€irepoliiitikate lĂ€vevÀÀrtusi.

JuurdepÀÀs ressurssidele?

MySQL pakub laia ja vÀga detailselt reguleeritud kasutajaÔigusi/rolle. Juhtimist saab hÔlpsasti seadistada konkreetsele tabelile vÔi isegi lihtsalt osa selle veergudest. Cloud Spanner kasutab Google'i identiteedi ja juurdepÀÀsu haldamise (IAM) tööriistu, mis vÔimaldavad kehtestada poliitikaid ja Ôigusi ainult vÀga kÔrgel tasemel. KÔige detailsem variant on andmebaasi taseme Ôigus, mis ei sobi enamiku tootmisjuhtumitega. See piirang sunnib teid lisama oma koodi, infrastruktuuri vÔi mÔlemat tÀiendavaid turvameetmeid, et vÀltida Spanneri ressursside ebaseaduslikku kasutamist.

Varukoopiad?

Lihtsalt öeldes ei eksisteeri Cloud Spanneris varukoopiaid. Kuigi Google'i SLA kÔrged nÔudmised vÔivad tagada, et te ei kaota andmeid riistvarast vÔi andmebaasist tingitud riketest, on inimvigade, tarkvara defektide jne tÔttu andmekaitse oluline. Me kÔik teame reeglit: kÔrge kÀttesaadavus ei asenda mÔistlikku varundusstrateegiat. Hetkel on andmete varundamiseks ainus viis nende voogedastamine andmebaasist eraldi salvestuskeskkonda.

KĂŒsimuste jĂ”udlus?

Andmete laadimiseks ja pÀringute testimiseks kasutasime Yahoo! Cloud Serving Benchmarki. Allpool on esitatud YCSB töökoormus, kus lugemise ja kirjutamise suhe on 95% ja 5%.

Google Cloud Spanner: hea, halb, kole

* Koormustesti viidi lÀbi n1-standard-32 (32 vCPU, 120 GB RAM) arvutusmootoril, ning testi instants ei olnud kunagi kitsaskohaks testide kÀigus.
** YCSB ĂŒhes instantsis on maksimaalne niitide arv 400. Kokku oli vaja kĂ€ivitada kuus paralleelset YCSB testi instantsi, et saavutada kokku 2400 niiti.

Testitulemusi vaadates, eriti protsessorikoormuse ja TPS kombinatsiooni osas, nĂ€eme selgelt, et Cloud Spanner skaleerub ĂŒsna hĂ€sti. Suur koormus, mida tekitavad paljud pÀÀsud, kompenseeritakse Cloud Spanneri klastris olevate sĂ”lmede suure arvu kaudu. Kuigi latentsus tundub olevat ĂŒsna kĂ”rge, eriti 2400 pÀÀsu korral, vĂ”ib tĂ€psemate numbrite saamiseks olla vajalik testimise kordamine, kasutades 6 vĂ€iksemat arvutusmootorit. Iga instants jooksutab ĂŒhte YCSB testi, mitte ĂŒhte suurt CE instantsi kuue paralleelse testiga. Nii on lihtsam eristada Cloud Spanneri pĂ€ringute latentsust ning latentsust, mis on lisatud vĂ”rguĂŒhenduses Cloud Spanneri ja CE instantsi vahel, kus test toimub.

Kuidas Cloud Spanner OLAP-ina toime tuleb?

Partitsioneering?

Andmete jagamine fĂŒĂŒsiliselt ja/vĂ”i loogiliselt sĂ”ltumatuteks segmentideks, mida nimetatakse partiitideks, on vĂ€ga populaarne kontseptsioon, mis kuulub enamikku OLAP-mootoritest. Partiid vĂ”ivad oluliselt parandada pĂ€ringute jĂ”udlust ja andmebaasi hooldatavust. SĂŒgavam sĂŒvenemine partiitidesse vÀÀriks eraldi artiklit, seetĂ”ttu mainime lihtsalt skeemi olemasolu ning alampartiitide tĂ€htsust. Andmete jagamine partiitideks ja isegi alampartiitideks on analĂŒĂŒtiliste pĂ€ringute jĂ”udluse vĂ”ti.

Cloud Spanner ei toeta partiiteid sellisel kujul. See jagab andmed sees nii nimetatud split-deks, mis pÔhinevad esmase vÔtme vahemikel. Jagamine toimub automaatselt Cloud Spanneri klastris koormuse tasakaalustamiseks. Cloud Spanneri mugav funktsioon on vanemate tabelite (tabelite, mida ei vaheldustata teistega) pÔhikoormuse jagamine. Spanner mÀÀrab automaatselt, kas split andmed, mida loetakse sagedamini, kui teised. split-des, ja vÔib teha otsuseid edasise jagamise kohta. SeelÀbi vÔib pÀringus osaleda rohkem sÔlmesid, mis tÔhusalt suurendab ka lÀbilaskevÔimet.

Andmete laadimine?

Cloud Spanner'i meetod mahukate andmete jaoks on sama, mis tavalise laadimise puhul. Parima jÔudluse saavutamiseks peate jÀrgima mÔningaid soovitusi, sealhulgas:

  • Korrastage oma andmed pĂ”hivĂ”tme jĂ€rgi.
  • Jagage need 10*sĂ”lmede arv erinevate osade kaupa.
  • Looge tĂ¶Ă¶ĂŒlesannete komplekt, mis laadib andmed paralleelselt.

Sellise andmete laadimise korral kasutatakse kÔiki Cloud Spanner'i sÔlmesid.

Oleme kasutanud koormustööd A YCSB andmestiku genereerimiseks, mis sisaldab 10 miljonit rida.

Google Cloud Spanner: hea, halb, kole

* Koormustest viidi lÀbi n1-standard-32 (32 vCPU, 120 GB RAM) arvutusmootoris ning testimise instants ei olnud kunagi kitsaskohaks testides.
** 1-sĂ”lme seadistust ei soovitata ĂŒhegi tootmiskoormuse jaoks.

Nagu eelnevalt mainitud, töötab Cloud Spanner automaatselt jagamisi, sĂ”ltuvalt nende koormusest, seega paranevad tulemused pĂ€rast mitmeid jĂ€rjestikuseid teste. Siin esitatud tulemused on parimad, mida oleme saavutanud. Vaadates ĂŒlaltoodud numbreid, nĂ€eme, kuidas Cloud Spanner skaleerub hĂ€sti klastris sĂ”lmede arvu suurenedes. KĂ”rgetasemed, mis silma paistavad, nĂ€itavad ÀÀrmiselt madalat keskmist latentsust, mis kontrastib segakoormuse tulemustega (95% lugemist ja 5% kirjutamist), nagu eelnevas osas kirjas.

Skaleerimine?

Cloud Spanneri sĂ”lmede arvu suurendamine ja vĂ€hendamine on ĂŒlesanne, mida saab teha ĂŒhe klikiga. Kui soovite kiiresti andmeid laadida, vĂ”ite kaaluda instantsi maksimaalsesse suurendamisse (meie puhul oli see 25 sĂ”lme US-EAST regioonis), ning pĂ€rast andmete laadimist andmebaasi vĂ€hendada sĂ”lmede arvu, mis sobib teie tavalise koormuse jaoks, meeles pidades piirangut 2 TB/sĂ”lm.

Meeldeti meile selle piiri kohta isegi palju vĂ€iksema andmebaasiga. PĂ€rast mitmeid koormusteste oli meie andmebaasi suurus umbes 155 GB ja kui vĂ€hendasime ĂŒhe sĂ”lme instantsile, tekkis meil jĂ€rgmine viga:

Google Cloud Spanner: hea, halb, kole

Me suutsime vÀhendada skaalat 25-lt 2-le instantsile, kuid jÀime kahe sÔlme juurde kinni.

Cloud Spanneri klastris sĂ”lmede arvu suurendamist ja vĂ€hendamist saab automatiseerida REST API abil. See vĂ”ib olla eriti kasulik sĂŒsteemi suurenenud koormuse vĂ€hendamiseks tipptundidel.

OLAP pÀringute jÔudlus?

Alguses kavandasime sellele osale Spanneri hindamisel mĂ€rkimisvÀÀrselt aega pĂŒhendada. PĂ€rast mitmeid SELECT COUNT pĂ€ringuid mĂ”istsime kohe, et testimine on lĂŒhike ja Spanner EI sobi OLAP mootoriks. ÜkskĂ”ik, kui palju sĂ”lmi on klastris, vĂ”ttis 10M rida tabelist ridade arvu valimine aega 55-60 sekundit. Lisaks lĂ”petasid kĂ”ik pĂ€ringud, mis nĂ”udsid rohkem mĂ€lu vaheresultaatide hoidmiseks, OOM veaga.

SELECT COUNT(DISTINCT(field0)) FROM usertable; — (10M distinct values) -> SpoolingHashAggregateIterator ran out of memory during new row.

MÔned numbrid TPC-H pÀringute kohta leiate Todd Lipkoni artiklist Nosql-kudu-spanner-slides.html, slaidid 42 ja 43. Need numbrid vastavad meie enda tulemustele (kahjuks).

Google Cloud Spanner: hea, halb, kole

4. Meie jÀreldused

Arvestades Cloud Spanneri praegust funktsionaalset seisundit, on keeruline ette kujutada selle lihtsat asendamist olemasoleva OLTP-lahenduse jaoks, eriti siis, kui teie vajadused ĂŒletavad selle vĂ”imeid. Oleks vaja kulutada mĂ€rkimisvÀÀrselt aega lahenduse arendamiseks, arvestades Cloud Spanneri puudusi.

Kui alustasime Cloud Spanneri hindamist, ootasime, et selle haldustooted on teiste Google SQL lahendustega samal tasemel vĂ”i vĂ€hemalt mitte kaugel neist. Kuid meid ĂŒllatas tĂ€iesti varukoopiate puudumine ja vĂ€ga piiratud juurdepÀÀsuteenuste kontroll. RÀÀkimata vaadete puudumisest, kohaliku arenduskeskkonna puudumisest, mitte toetatud jĂ€rjestustest, JDBC-st ilma DML ja DDL toeta ja nii edasi.

Nii et kuhu peaks minema inimene, kellel on vaja suurendada tehingute andmebaasi? Tundub, et turul ei ole praegu ĂŒhtset lahendust, mis sobiks kĂ”ikide kasutusjuhtude jaoks. On olemas palju mitte- ja avatud lĂ€htekoodiga lahendus, millest mĂ”ned on selles artiklis mainitud, igaĂŒhel on oma tugevused ja nĂ”rkused, kuid ĂŒhtegi neist ei paku SLA-d 99,999% ja kĂ”rget jĂ€rjepidevust. Kui kĂ”rge SLA tase on teie pĂ”hiline eesmĂ€rk ja te pole kaldunud looma oma lahendust mitme pilvekeskkonna jaoks, vĂ”ib Cloud Spanner olla see lahendus, mida otsite. Kuid peate olema teadlik kĂ”ikidest selle piirangutest.

Ausugude mĂ€rkida, et Cloud Spanner avati ĂŒldiseks kasutamiseks alles 2017. aasta kevadel, seetĂ”ttu on mĂ”istlik oodata, et mĂ”ned selle praegused puudused vĂ”ivad lĂ”puks kaduda (loodetavasti), ja kui see juhtub, vĂ”ib see mĂ€ngu muuta. LĂ”ppude lĂ”puks ei ole Cloud Spanner lihtsalt kĂ”rvalprojekt Google'ile. Google kasutab seda teiste Google'i toodete aluseks. Ja kui Google hiljuti asendas Megastore Google Cloud Storage'is Cloud Spanneriga, vĂ”imaldas see Google Cloud Storage'il olla rangelt kooskĂ”lastatud globaalsete objektide loetlemisel (mis endiselt ei kehti Amazon’i S3).

Nii et lootus on endiselt olemas
 loodame.

Sellega on kÔik. Nagu artikli autor, jÀtkame ka meie loodetavasti ja mida arvate teie? Kirjutage kommentaarides

Kutsume kĂ”iki ĂŒles kĂŒlastama meie tasuta veebinarile mille raames rÀÀgime kursusest ĂŒksikasjalikult AWS arendajatele OTUSelt.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster