Tere, Habrikad. JÀtkame traditsiooniliselt huvitava sisu jagamist, enne kui uued kursused algavad. TÀna, just teie jaoks, tÔlgime artikli Google Cloud Spannerist, seostades selle kursuse kÀivitamisega. .

Algne avaldamine .
Kuna Lightspeed pakub hulgaliselt pilvepĂ”hiseid POS-lahendusi jaekaubanduse, restoranide ja veebimĂŒĂŒjate jaoks ĂŒle kogu maailma, kasutab ettevĂ”te erinevaid andmebaasiplatvorme paljude tehinguliste, analĂŒĂŒtiliste ja otsingujuhtumite jaoks. IgaĂŒhel neist andmebaasiplatvormidest on oma tugevused ja nĂ”rkused. SeetĂ”ttu, kui Google tutvustas turule Cloud Spannerit â paljutĂ”otavad funktsioonid, mida pole nĂ€htud relatsiooniliste andmebaaside maailmas, nagu praktiliselt piiramatu horisontaalne skaleeritavus ja 99,999% teenustaseme leping (SLA) â, ei saanud me selle kasutuselevĂ”ttu mööda lasta!
Kuna anname pĂ”hjaliku ĂŒlevaate meie kogemusest Cloud Spanneriga ning hindamiskriteeriumitest, mida kasutasime, kĂ€sitleme jĂ€rgmisi teemasid:
- Meie hindamiskriteeriumid
- Cloud Spanner kaks sÔna
- Meie hinnang
- Meie jÀreldused

1. Meie hindamiskriteeriumid
Enne kui sĂŒveneme Cloud Spanneri funktsioonidesse, selle sarnastesse ja erinevustesse turul olevate lahenduste suhtes, rÀÀgime kĂ”igepealt peamistest kasutusjuhtudest, mida pidasime silmas, arutades, kuhu integreerida Cloud Spanner meie infrastruktuuri:
- Klassikalise SQL andmebaasi lahenduse asendajana
- OLTP lahendusena, millel on OLAP tugi
MÀrkus: Mugavuse ja kasutajasÔbralikkuse huvides vÔrdleb see artikkel Cloud Spannerit MySQL variandi GCP Cloud SQL ja Amazon AWS RDS lahendustega.
Cloud Spanneri kasutamine traditsioonilise SQL andmebaasi lahenduse asendamiseks
Keskkonnas traditsioonilised andmebaasid, kui andmebaasi pĂ€ringu vastuse aeg lĂ€heneb vĂ”i isegi ĂŒletab eelmise mÀÀratletud rakenduse lĂ€ve (peamiselt kasutajate ja / vĂ”i pĂ€ringute arvu suurenemise tĂ”ttu), on mitmeid viise vastuse aja vĂ€hendamiseks vastuvĂ”etavatesse tasemetes. Kuid enamik neist lahendustest hĂ”lmab kĂ€sitsi sekkumist.
NÀiteks, esimene samm, mida teha, on vaadata erinevaid andmebaasi seadistusi, mis on seotud jÔudlusega, ja kohandada neid nii, et need vastaksid kÔige paremini rakenduste kasutusstsenaariumide mustritele. Kui sellest ei piisa, vÔib valida andmebaasi vertikaalse vÔi horisontaalse skaleerimise.
Rakenduse vertikaalne skaleerimine tĂ€hendab serveri instantsi uuendamist, tavaliselt suurema arvu protsessorite/tuumade, suurema mĂ€lu ja kiirema salvestusruumi lisamise abil jne. Suuremate riistvararessursside lisamine parandab andmebaasi jĂ”udlust, mida mÔÔdetakse peamiselt tehingute arvu jĂ€rgi sekundis ning tehingute latentsusena OLTP sĂŒsteemides. Suhteliste andmebaasisĂŒsteemide (mis kasutavad mitmeĂ”ngemudelit), nagu MySQL, vertikaalne skaleerimine toimub hĂ€sti.
Sellel lÀhenemisel on mitmeid puudusi, kuid kÔige ilmsem on turul oleva serveri maksimaalne suurus. Kui on saavutatud suurima serveri instantsi piir, on ainus viis edasi: horisontaalne skaleerimine.
Horisontaalne skaleerimine on lĂ€henemine, kus klastrile lisatakse rohkem servereid, et ideaalis lineaarselt suurendada jĂ”udlust serverite arvu kasvades. Enamik traditsioonilised andmebaasisĂŒsteemidest ei skaleerita horisontaalselt hĂ€sti vĂ”i ĂŒldse mitte. NĂ€iteks MySQL suudab horisontaalselt skaleerida lugemisoperatsioonide jaoks, lisades slave-loendureid, kuid ei suuda horisontaalselt skaleerida kirjutamisoperatsioonide jaoks.
Teisest kĂŒljest suudab Cloud Spanner oma loomuse tĂ”ttu hĂ”lpsasti horisontaalselt skaleerida minimaalse sekkumisega.
TĂ€iendav funktsionaalsus Andmebaas kui teenus peaks olema hinnatud erinevatest kĂŒlgedest. Alguseks vĂ”tsime kĂ”ige populaarsema pilvandmebaasi â Google'i GCP Cloud SQL ja Amazoni AWS RDS. Oma hindamises keskendusime jĂ€rgmistele kategooriatele:
- Funktsioonide vastavus: SQL, DDL, DML; ĂŒhendusraamatukogud/konnektorid, tehingute toetamised jne.
- Arenduse tugi: arendamise ja testimise lihtsus.
- Halduse tugi: instantside haldamine â nĂ€iteks ĂŒles-alla skaleerimine ja instantside tĂ€iendamine; SLA, varundamine ja taastamine; turve/ligipÀÀsu kontroll.
Cloud Spanneri kasutamine OLTP lahenduse jaoks, mis toetab OLAP-i.
Kuigi Google ei vĂ€ida selgesĂ”naliselt, et Cloud Spanner on mĂ”eldud analĂŒĂŒtiliseks töötlemiseks, jagab see mĂ”ningaid omadusi teiste mootoritega, nagu Apache Impala & Kudu ja YugaByte, mis on mĂ”eldud OLAP-i töökoormusteks.
Isegi kui Cloud Spanneril oleks ainult vĂ€ike tĂ”enĂ€osus sisaldada konsolideeritud horisontaalselt skaleeritavat HTAP (hĂŒbriidne tehingu/analuĂŒtiline töötlemine) mootorit koos (rohkem-vĂ€hem) kasutatava OLAP funktsioonide kogumiga, arvame, 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 jĂ”udlus.
2. Cloud Spanner lĂŒhidalt.
Google Spanner on klastritehalduse relatsiooniliste andmebaaside sĂŒsteem (RDBMS), mida Google kasutab mitmete oma teenuste jaoks. Google avas selle avalikkusele Google Cloud Platformis 2017. aasta alguses.
Siin on mÔned Cloud Spanneri omadused:
- Tugevalt konsolideeritud skaleeritav RDBMS klaster: kasutab ajasĂŒnkroniseerimist andmete konsistentsi tagamiseks.
- Kross-tabelitehingute tugi: tehingud vĂ”ivad katab mitmeid tabeleid â ei pea olema piiratud ĂŒhe tabeliga (erinevalt Apache HBase'ist vĂ”i Apache Kudust).
- Esmaste vĂ”tmete pĂ”hised tabelid: kĂ”ik tabelid peavad omama deklareeritud esmast vĂ”tme (EV), mis vĂ”ib koosneda mitmest tabeli veerust. Tabeliandmed salvestatakse EV jĂ€rgi, mistĂ”ttu on need vĂ€ga tĂ”husad ja kiired EV jĂ€rgi otsimiseks. Nagu teised EV-pĂ”hised sĂŒsteemid, peab rakendus olema modelleeritud eelnevalt lĂ€bi mĂ”eldud kasutusjuhtide saavutamiseks. .
- Vahelduvad tabelid: tabelid vĂ”ivad omavahel fĂŒĂŒsiliselt sĂ”ltuda. Alustabeli read vĂ”ivad vastanduda pealtabeli ridadele. Selline lĂ€henemine kiirus suhted, mis vĂ”ivad andmemudeli loomise etapis kindlaks mÀÀrata, nĂ€iteks klientide ja nende arvete koospaigutamisel.
- Indeksid: Cloud Spanner toetab teiseseid indekseid. Indeks koosneb indekseeritud veergudest ja kÔigist PK veergudest. Soovi korral vÔib indeks sisaldada ka teisi indekseerimata veerge. Indeks vÔib vahelduda pealtabeliga, et pÀringute tÀitmist kiirendada. Indeksitele kehtivad mitmed piirangud, nÀiteks maksimaalne tÀiendavate veergude arv, mida indeksi sees hoida vÔib. Lisaks ei pruugi indeksite kaudu pÀringud olla nii sirged kui teistes RDBMS-des.
âCloud Spanner valib indeksi automaatselt vaid harvadel juhtudel. EelkĂ”ige ei vali Cloud Spanner teist indeksit automaatselt, kui pĂ€ring nĂ”uab mĂ”ningaid veerge, mida ei hoita ».
- Teenuse taseme leping (SLA): ĂŒhes 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öötajatel on tĂ”eliselt tĂ€psed andmed, et teha selline tĂ”sine vĂ€ide. (Infoks, 99,999% tĂ€hendab, et teenuse aegumise aeg on 26,3 sekundit kuus.)
- Rohkem:
MĂ€rkus: Apache Tephra projekt lisab Apache HBase'ile laienenud tehingute toe (nĂ€iteks on see nĂŒĂŒd rakendatud Apache Phoenixis beetaversioonina).
3. Meie hinnang
Nii et kĂ”ik oleme lugenud Google'i vĂ€iteid Cloud Spanneri eeliste kohta â praktiliselt piiramatu horisontaalne skaala sĂ€ilitades samal ajal kĂ”rge jĂ€rjepidevuse ja vĂ€ga kĂ”rge SLA. Kuigi nende nĂ”udmiste saavutamine on igal juhul ÀÀrmiselt raske, ei olnud meie eesmĂ€rk nende ĂŒmber lĂŒkata. Selle asemel keskendugem muudele asjadele, mis puudutavad enamikku andmebaasi kasutajatest: Ă”igsus ja kasutusmugavus.
Hindasime Cloud Spannerit kui asendust Sharded MySQL-le.
Google Cloud SQL ja Amazon AWS RDS, kaks kĂ”ige populaarsemat OLTP andmebaasi pilveturul, omavad vĂ€ga suurt funktsioonide kogumit. Siiski, et skaleerida neid andmebaase ĂŒle ĂŒhe sĂ”lme suuruse, peate rakenduste jaotamisel need jagama. Selline lĂ€henemine toob kaasa lisaks keerukust nii rakendustele kui ka haldamisele. Oleme vaadanud, kuidas Spanner sobib mitme segmendi ĂŒhendamise stsenaariumisse ĂŒheks instantsiks ja millistest funktsioonidest (kui ĂŒhtegi) tuleb vĂ”ib-olla loobuda.
SQL, DML ja DDL toetamine, samuti konnektor ja raamatukogud?
Esiteks, olenemata sellest, millise andmebaasi kasutusele vĂ”tmisest on oluline luua andmemudel. Kui arvate, et saate oma lemmik SQL-tööriista JDBC Spanneriga ĂŒhendada, avastate, et saate oma andmeid selle abil pĂ€rida, kuid ei saa seda kasutada tabelite loomise vĂ”i muutmise (DDL) ning insert/update/delete (DML) operatsioonide jaoks. Google'i ametlik JDBC ei toeta ei ĂŒhtegi ega teist.
âPraegu ei toeta draiverid DML- vĂ”i DDL-lauseid.â
Spanneri dokumentatsioon
GCP konsooliga pole olukord parem â saate esitada ainult SELECT-pĂ€ringuid. Ănneks on olemas avatud jĂŒri DML ja DDL toetava JDBC draiver, sealhulgas tehingud. . Kuigi see draiver on ÀÀrmiselt kasulik, ĂŒllatab Google'i enda JDBC draiveri puudumine. Ănneks pakub Google ĂŒsna laialdast kliente toetavaid raamatukogusid (gRPC pĂ”hjal): C#, Go, Java, node.js, PHP, Python ja Ruby.
Peaaegu kohustuslik Cloud Spanneri kohandatud API-de kasutamine (DDL ja DML puudumise tĂ”ttu JDBC-s) toob kaasa mĂ”ned piirangud seotud koodivaldkondades, nagu ĂŒhenduse basseinid vĂ”i andmebaasi sidumisseired (nt Spring MVC). Ăldiselt on JDBC kasutamisel vĂ”imalik vabalt valida oma lemmik ĂŒhenduse bassein (nt HikariCP, DBCP, C3PO jne), mis on testitud ja töötab hĂ€sti. Kui tegemist on kohandatud Spanneri API-dega, peame toetuma raamistikele/ĂŒhenduse basseinidele/istungitele, mille oleme ise loodud.
Peamise vÔtme (PV) suunitlus vÔimaldab Cloud Spanneril olla vÀga kiire andmete juurdepÀÀsuks lÀbi PV, kuid see toob ka kaasa teatud pÀringute probleemid.
- Te ei saa muuta esmase vÔtme vÀÀrtust; peate esmalt kustutama kirje originaalse PK-ga ja seejÀrel sisestama selle uuesti koos uue vÀÀrtusega. (See sarnaneb teistele PK orienteeritud andmebaasidele/hoidmismehhanismidele.)
- KĂ”ik UPDATE ja DELETE kĂ€sklused peavad mÀÀrama PK WHERE lauses, seega ei tohi olla tĂŒhje DELETE all â alati peab olema alamklausel, nĂ€iteks: UPDATE xxx WHERE id IN (SELECT id FROM table1)
- Puuduvad automaatse inkremendi valikud vÔi midagi sellist, mis mÀÀrab PK vÀljade jÀrjestuse. Selleks, et see toimiks, peab vastav vÀÀrtus olema genereeritud rakenduse tasandil.
Teised indeksid?
Google Cloud Spanner toetab sisseehitatud teise taseme indeksite toetust. See on vĂ€ga kena omadus, mida ei pruugi leida teistest tehnoloogiatest. Apache Kudu ei toeta praegu teisi indekseid ĂŒldse, samas kui Apache HBase ei toeta indekseid otse, kuid saab neid lisada Apache Phoenixi kaudu.
Kudu ja HBase indekseid saab modelleerida kui eraldi tabelit erineva esmase vÔtme koosseisuga, kuid vanematele tabelitele ja seotud indeksitabelitele teostatavad operatsioonide aatomisus tuleb tagada rakenduse tasandil ning see ei ole triviaalne Ôige rakenduse puhul.
Nagu juba mainitud Cloud Spanneri ĂŒlevaates, vĂ”ivad selle indeksid erineda MySQL indeksitest. SeetĂ”ttu tuleks olla ÀÀrmiselt ettevaatlik pĂ€ringute koostamisel ja profileerimisel, et tagada, et Ă”iged indeksid oleksid kasutuses seal, kus neid on vaja.
Vaated?
VÀga populaarne ja kasulik objekt andmebaasis on vaated. Need vÔivad 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ÀÀsuÔiguste detailid ei ole veergude tasandil, kus vaated vÔivad olla vastuvÔetav lahendus.
Cloud Spanneri dokumentatsioonis, millel on kvootide ja piirangute kirjeldus (), on on mitmeid, mis vĂ”ivad mĂ”ne rakenduse jaoks probleemiks kujuneda: Cloud Spanneril on vaikimisi piirang, et instantsil vĂ”ib olla maksimaalselt 100 andmebaasi. Ilmselgelt vĂ”ib see kujuneda tĂ”siseks takistuseks andmebaasile, mis on mĂ”eldud rohkem kui 100 andmebaasi skaleerimiseks. Ănneks, pĂ€rast vestlust meie Google'i tehnilise esindajaga, selgus, et seda piiri saab suures osas tĂ”sta praktiliselt mistahes vÀÀrtuseni Google'i tugiteenuse kaudu.
Arenduse tugi?
Cloud Spanner pakub ĂŒsna head programmeerimiskeelte tuge oma API kasutamiseks. Ametlikult toetatud raamatukogud hĂ”lmavad C#, Go, Java, node.js, PHP, Python ja Ruby. Dokumentatsioon on piisavalt detailne, kuid nagu paljude teiste tipptasemel tehnoloogiate puhul, on kogukond suhteliselt vĂ€ike vĂ”rreldes populaarsemate andmebaasitehnoloogiatega, mis vĂ”ib pikendada aega, mis kulub vĂ€hem levinud kasutusjuhtumite vĂ”i probleemide lahendamiseks.
Kuidas on lood lokaalsete arendustegevuse tugiteenustega?
Me ei leidnud viisi, kuidas luua Cloud Spanneri instants lokaalses keskkonnas. KĂ”ige lĂ€hem, mida me saime, oli Docker-pilt. , mis on pĂ”himĂ”tteliselt sarnane, kuid praktikas tugevalt erinev. NĂ€iteks saab CockroachDB kasutada PostgreSQL JDBC-d. Kuna arenduskeskkond peaks olema vĂ”imalikult lĂ€hedane tootmisliideselt, ei ole Cloud Spanner ideaalne, kuna tuleb tugineda tĂ€ielikule Spanneri instantsile. Kulude kokkuhoidmiseks vĂ”ite valida ĂŒhe piirkonna instantsi.
Administratsiooni tugi?
Cloud Spanneri instantsi loomine on vĂ€ga lihtne. Tuleb lihtsalt valida, kas luua mitmeregionaalne vĂ”i ĂŒheregionaalne instants, mÀÀrata piirkonnad ja sĂ”lmede arv. VĂ€hem kui minuti jooksul on instants kĂ€ivitunud ja tööks valmis.
MÔned pÔhistatistika on otse kergesti kergesti kÀtte saadavad Google'i konsoolis Spanneri lehelt. TÀiendavad vaated on saadaval lÀbi Stackdriveri, kus saate ka seadistada mÔÔdikute piirvÀÀrtusi ja teavitamispoliitikaid.
JuurdepÀÀs ressurssidele?
MySQL pakub laialdasi ja vĂ€ga ĂŒksikasjalikke kasutajaĂ”iguste/rollide seadistusi. Kui soovite, saate hĂ”lpsasti seadistada juurdepÀÀsu kindlale tabelile vĂ”i isegi lihtsalt alamhulgale selle veergudest. Cloud Spanner kasutab Google'i identiteedi ja juurdepÀÀsu halduse (IAM) tööriista, mis vĂ”imaldab seada poliitikaid ja Ă”igusi ainult vĂ€ga kĂ”rgel tasemel. KĂ”ige detailsem variant on andmebaasi tasemel Ă”igus, mis ei sobi enamiku tootmisjuhtumitega. See piirang sunnib teid lisama oma koodi, infrastruktuuri vĂ”i mĂ”lema lisakaitsemeetmeid Spanneri ressursside volitamata kasutamise vĂ€ltimiseks.
Varukoopiad?
Lihtsalt öeldes ei eksisteeri Cloud Spanneris varukoopiaid. Kuigi Google'i SLA kĂ”rged nĂ”uded vĂ”ivad tagada, et te ei kaota andmeid seadme vĂ”i andmebaasi ĂŒlekoormuse tĂ”ttu, ei kaitse need inimvigade, rakenduse defektide jne eest. Me kĂ”ik teame reeglit: kĂ”rge kĂ€ttesaadavus ei asenda mĂ”istlikku varukoopiate strateegiat. Praegu on ainus viis andmete varundamiseks nende voogedastamine andmebaasist eraldi salvestuskeskkonda.
PÀringute jÔudlus?
Andmete laadimiseks ja pÀringute testimiseks kasutasime Yahoo! Cloud Serving Benchmark'i. Allolevas tabelis on esitatud YCSB töökoormus B, mille lugemise suhe on 95% ja kirjutamise suhe 5%.

* Koormustest viidi lÀbi arvutusmootoril (CE) n1-standard-32 (32 vCPU, 120 GB mÀlu), ja testimisinstants ei olnud kunagi testide kitsaskohaks.
** Ăhe YCSB instantsi maksimaalne lĂ”imede arv on 400. Kokku tuli kĂ€ivitada kuus paralleelset YCSB testide instantsi, et saavutada kokku 2400 lĂ”ime.
Tulemusi silmas pidades, eriti protsessori koormuse ja TPS kombinatsiooni osas, nĂ€eme selgelt, et Cloud Spanner suudab piisavalt hĂ€sti skaleeruda. Suure koormuse, mille tekitab suur arv vooge, kompenseerib Cloud Spanneri klastris olev suur arv sĂ”lmi. Kuigi latentsus nĂ€ib olevat ĂŒsna kĂ”rge, eriti 2400 voo korral, vĂ”ib tĂ€psemate numbrite saamiseks olla vajalik uuesti testimine 6 vĂ€iksema arvutusmootoriga eksemplariga. Iga eksemplar kĂ€ivitab ĂŒhe YCSB testi, selle asemel et kasutada ĂŒhte suurt CE eksemplari 6 paralleelse testiga. Nii on kergem eristada Cloud Spanneri pĂ€ringute latentsust ja latentsust, mille toob kaasa vĂ”rguĂŒhendus Cloud Spanneri ja CE eksemplari vahel, kus test viiakse lĂ€bi.
Kuidas Cloud Spanner OLAP-iga toime tuleb?
Partitsioneerimine?
Andmete jagamine fĂŒĂŒsiliselt ja/vĂ”i loogiliselt iseseisvateks segmentideks, mida nimetatakse partitsioonideks, on vĂ€ga populaarne kontseptsioon, mis on iseloomulik enamikule OLAP mehhanismidele. Partitsioonid vĂ”ivad oluliselt parandada pĂ€ringute jĂ”udlust ja andmebaasi hooldatavust. SĂŒgavam kĂ€sitlus partitsioonide ĂŒle kujundaks eraldi artikli(e), seega mainime lihtsalt partitsioneerimise ja alam-partitsioneerimise skeemi olemasolu tĂ€htsust. VĂ”ime andmed partitsioonideks jagada ja isegi edasi alam-partitsioonideks on vĂ”tmetĂ€htsusega analĂŒĂŒtiliste pĂ€ringute jĂ”udluses.
Cloud Spanner ei toeta partitsioone sellisel kujul. See jagab andmed seespool nii-öelda split-deks, mis pĂ”hinevad peamise vĂ”tme vahemikel. Jagamine toimub automaatselt, et tasakaalustada koormust Cloud Spanneri klastris. VĂ€ga mugav omadus Cloud Spanneris on ematahlaava koormuse jagamine (tabel, mis ei vaheldu teisega). Spanner kindlaks teeb, kas split andmed, mida loetakse sagedamini kui muudest split-dest, ja vĂ”ib otsustada edasise jagamise ĂŒle. Nii saab pĂ€ringus osaleda rohkem sĂ”lmi, mis suurendab samuti lĂ€bilaskevĂ”imet.
Andmete laadimine?
Cloud Spanneri meetod mahukate andmete laadimiseks on sama, mis tava-laadimisel. Parima jÔudluse saavutamiseks peate jÀrgima mÔningaid soovitusi, sealhulgas:
- Korrastage oma andmed primaarvÔtme jÀrgi.
- Jagage need kĂŒmneks*sĂ”lmede arv eraldi sektsioonides.
- Looge tĂ¶Ă¶ĂŒlesannete kogum, mis laadib andmeid paralleelselt.
Selle laadimise kÀigus kasutatakse kÔiki Cloud Spanneri sÔlmi.
Kasutasime A YCSB koormust, et genereerida 10M rea andmesett.

* Koormustest tehti n1-standard-32 (32 vCPU, 120 GB mÀlu) arvutusvÔimsusel ning testimisinstituudi ei tÀheldatud kitsaskohana testide jooksul.
** Ăksiku sĂ”lme seadistamine ei ole soovitatav ĂŒhegi tootmiskoormuse jaoks.
Nagu eespool mainitud, haldab Cloud Spanner automaatselt jagamist sĂ”ltuvalt nende koormusest, seega paranevad tulemused pĂ€rast mitut jĂ€rjestikust katset. Siin esitatud tulemused on parimad, mida oleme saavutanud. Kui vaatame ĂŒlaltoodud numbreid, nĂ€eme, kuidas Cloud Spanner (hĂ€sti) skaleerub koos sĂ”lmede arvu suurenemisega klastris. Tunduvad numbrid esindavad ÀÀrmiselt madalaid keskmisi viivitusi, mis kontrasteeruvad segakoormuse tulemustega (95% lugemist ja 5% kirjutamist), nagu on eespool kirjeldatud.
Skaleerimine?
Cloud Spanneri sĂ”lmede arvu suurendamine ja vĂ€hendamine on ĂŒhe nupuvajutusega toiming. Kui soovite kiiresti andmeid laadida, vĂ”ite kaaluda instantsi jĂ”udluse tĂ”stmist maksimaalseks (meie puhul oli see 25 sĂ”lme US-EAST regioonis), ja seejĂ€rel vĂ€hendada sĂ”lmede arvu, mis sobib teie tavaliseks koormuseks, pĂ€rast seda, kui kĂ”ik andmed on andmebaasis, pidada meeles 2 TB/sĂ”lm piiri.
See piir tuli meelde isegi mĂ€rksa vĂ€iksema andmebaasi korral. PĂ€rast mitmeid koormustestide lĂ€biviimisi oli meie andmebaasi suurus umbes 155 GB ja ĂŒhe sĂ”lmega instantsi vĂ€hendamisel saime jĂ€rgmise vea:

Meil Ă”nnestus vĂ€hendada skaleerimist 25st 2 instantsini, kuid jĂ€ime kahe sĂ”lme kĂŒlge kinni.
Cloud Spanner klastris sĂ”lmede arvu suurenemist ja vĂ€henemist saab automatiseerida REST API abil. See vĂ”ib olla eriti kasulik sĂŒsteemi koormuse vĂ€hendamiseks tipptundidel.
OLAP pÀringute jÔudlus?
Alguses plaanisime pöörata sellele osale meie Spanneri hindamisest mĂ€rkimisvÀÀrselt aega. PĂ€rast mitmeid SELECT COUNT pĂ€ringuid saime kohe aru, et testimine jÀÀb lĂŒhikeseks ja Spanner ei sobi OLAP mootoriks. ĂkskĂ”ik kui palju sĂ”lmi klastris on, vĂ”ttis 10M rida tabelist lihtsalt ridade arvu valimine aega 55 kuni 60 sekundit. Lisaks lĂ”ppes iga pĂ€ring, mis vajas suuremat mĂ€lu vahepealsete tulemuste hoidmiseks, OOM veaga.
SELECT COUNT(DISTINCT(field0)) FROM usertable; â (10M unikaalset vÀÀrtust) -> SpoolingHashAggregateIterator jooksis vĂ€lja mĂ€lu uue rea töötlemisel.
MÔningaid numbreid TPC-H pÀringute kohta saab leida Todd Lipkoni artiklist , slaididel 42 ja 43. Need numbrid vastavad meie enda tulemustele (kahjuks).

4. Meie jÀreldused
Arvestades Cloud Spanneri hetkeseisu, on raske ette kujutada selle lihtsat asendamist olemasoleva OLTP lahendusega, eriti kui teie vajadused kasvavad sellest ĂŒle. Tuleks kulutada mĂ€rkimisvÀÀrselt aega lahenduse ehitamiseks, arvestades Cloud Spanneri puudusi.
Kui me alustasime Cloud Spanneri hindamist, ootasime, et selle haldusfunktsioonid on samal tasemel vĂ”i vĂ€hemalt mitte liiga kaugel teiste Google SQL lahenduste omadest. Kuid olime ĂŒllatunud, et varukoopiad puudusid tĂ€ielikult ja juurdepÀÀsu ressursidele kontroll oli ÀÀrmiselt piiratud. RÀÀkimata vaadete puudumisest, kohaliku arenduskeskkonna puudumisest, toetamata jĂ€rjestustest, JDBC-st DML ja DDL toeta jne.
Nii et kuhu minna, kui on vaja skaleerida tehingute andmebaasi? Paistab, et turul ei ole veel ĂŒhtset lahendust, mis sobiks kĂ”igi kasutusvariantidega. On olemas mitmeid suletud ja avatud lĂ€htekoodiga lahendusi (mĂ”ned neist on selles artiklis mainitud), igaĂŒhel on oma tugevused ja nĂ”rkused, kuid ĂŒkski neist ei paku SaaS-i SLA-ga 99,999% ja kĂ”rge jĂ€rjepidevusega. Kui kĂ”rge SLA on teie peamine eesmĂ€rk ja te ei soovi luua oma lahendust mitmete pilvekeskkondade jaoks, vĂ”ib Cloud Spanner olla just see lahendus, mida otsite. Kuid peate teadma selle kĂ”iki piiranguid.
Ăigluse nimel tuleks mĂ€rkida, et Cloud Spanner lasti ĂŒldkasutusse alles 2017. aasta kevadel, seega 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 Google'i kĂŒlalisprojekt. 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Ă€rjepidevaks objektide nimekirjade osas maailmas (mis siiski ei kehti ).
Nii et lootus on veel olemas⊠loodame.
Sellega on kÔik. Nagu artikli autor, jÀtkame meiegi lootmist, aga mida teie arvate? Kirjutage kommentaaridesse
Kutsume kĂ”iki huvilisi kĂŒlastama meie , kus rÀÀgime kursusest ĂŒksikasjalikult OTUS-e poolt.
Allikas: habr.com
