Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

Hello, residenti Khabrovsk. Bħas-soltu, inkomplu naqsmu materjal interessanti qabel il-bidu ta’ korsijiet ġodda. Illum, speċjalment għalik, ippubblikajna artiklu dwar Google Cloud Spanner biex tikkoinċidi mat-tnedija tal-kors "AWS għall-Iżviluppaturi".

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

Oriġinarjament ippubblikat fi Blog Lightspeed HQ.

Bħala kumpanija li toffri varjetà ta 'soluzzjonijiet POS ibbażati fuq il-cloud lill-bejjiegħa bl-imnut, ristoranti, u bejjiegħa onlajn madwar id-dinja, Lightspeed juża diversi tipi differenti ta' pjattaformi ta 'database għal varjetà ta' każijiet ta 'użu transazzjonali, analitiċi u ta' tfittxija. Kull waħda minn dawn il-pjattaformi tad-databases għandha s-saħħiet u d-dgħufijiet tagħha stess.Għalhekk, meta Google introduċiet Cloud Spanner fis-suq - karatteristiċi promettenti li ma jidhrux fid-dinja tad-databases relazzjonali, bħal skalabbiltà orizzontali prattikament illimitata u ftehim ta’ livell ta’ servizz (SLA) ta’ 99,999%. — ma stajniex nitilfu l-opportunità li nġibu idejna fuqha!

Biex nipprovdu ħarsa ġenerali komprensiva tal-esperjenza tagħna ma' Cloud Spanner, kif ukoll il-kriterji ta' evalwazzjoni li użajna, se nkopru s-suġġetti li ġejjin:

  1. Il-kriterji ta' evalwazzjoni tagħna
  2. Cloud Spanner fil-qosor
  3. Il-valutazzjoni tagħna
  4. Is-sejbiet tagħna

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

1. Il-kriterji ta' evalwazzjoni tagħna

Qabel ma ngħaddu fl-ispeċifiċitajiet ta 'Cloud Spanner, ix-xebh u d-differenzi tiegħu ma' soluzzjonijiet oħra fis-suq, ejja l-ewwel nitkellmu dwar il-każijiet ta 'użu prinċipali li kellna f'moħħna meta nikkunsidraw fejn niskjeraw Cloud Spanner fl-infrastruttura tagħna:

  • Bħala sostitut għas-soluzzjoni tad-database SQL tradizzjonali (predominanti).
  • Kif soluzzjoni OLTP b'appoġġ OLAP

Nota: Għal sempliċità u faċilità ta 'tqabbil, dan l-artikolu jqabbel Cloud Spanner mal-varjanti MySQL tal-familji tas-soluzzjoni GCP Cloud SQL u Amazon AWS RDS.

L-użu ta’ Cloud Spanner bħala sostitut għal soluzzjoni ta’ database SQL tradizzjonali

Fl-ambjent tradizzjonali databases, meta l-ħin tar-rispons għall-mistoqsija tad-database joqrob jew saħansitra jaqbeż il-limiti ta’ applikazzjoni predefiniti (prinċipalment minħabba żieda fin-numru ta’ utenti u/jew talbiet), hemm diversi modi kif jitnaqqas il-ħin tar-rispons għal livelli aċċettabbli. Madankollu, ħafna minn dawn is-soluzzjonijiet jinvolvu intervent manwali.

Pereżempju, l-ewwel pass li għandek tieħu huwa li tħares lejn id-diversi parametri tad-database relatati mal-prestazzjoni u tixgħelhom biex jaqblu l-aħjar mal-mudelli tal-każi tal-użu tal-applikazzjoni. Jekk dan mhux biżżejjed, tista 'tagħżel li tiskala d-database vertikalment jew orizzontalment.

L-iskala vertikali ta' applikazzjoni tinvolvi t-titjib tal-istanza tas-server, tipikament billi żżid aktar proċessuri/qlub, aktar RAM, ħażna aktar mgħaġġla, eċċ. Iż-żieda ta' aktar riżorsi tal-ħardwer tirriżulta f'żieda fil-prestazzjoni tad-database, imkejla primarjament fi tranżazzjonijiet fit-tieni, u latency tat-tranżazzjonijiet għal sistemi OLTP. Sistemi ta' database relazzjonali (li jużaw approċċ b'ħafna kamini) bħall-MySQL jiskalaw sew vertikalment.

Hemm diversi żvantaġġi għal dan l-approċċ, iżda l-aktar ovvju huwa d-daqs massimu tas-server fis-suq. Ladarba jintlaħaq il-limitu tal-akbar istanza tas-server, fadal biss għażla waħda: skalar orizzontali.

L-iskala orizzontali hija approċċ fejn aktar servers huma miżjuda ma 'cluster, idealment tiżdied il-prestazzjoni b'mod lineari hekk kif jiżdied in-numru ta' servers. Maġġoranza tradizzjonali Is-sistemi tal-bażijiet tad-dejta ma jitkabbrux sew orizzontalment jew ma jiskalaw xejn. Pereżempju, MySQL jista 'jiskala orizzontalment għal operazzjonijiet ta' qari billi jżid qarrejja slave, iżda ma jistax skala orizzontalment għal kitbiet.

Min-naħa l-oħra, minħabba n-natura tiegħu, Cloud Spanner jista 'faċilment skala orizzontalment b'intervent minimu.

Dehru bis-sħiħ DBMS bħala servizz għandhom jiġu evalwati minn angoli differenti. Bħala bażi, ħadna l-aktar DBMS popolari fil-cloud - għal Google, GCP Cloud SQL u għal Amazon, AWS RDS. Fil-valutazzjoni tagħna aħna ffukajna fuq il-kategoriji li ġejjin:

  • Mapping tal-karatteristiċi: firxa SQL, DDL, DML; libreriji ta 'konnessjoni/konnetturi, appoġġ ta' tranżazzjoni, eċċ.
  • Appoġġ għall-iżvilupp: żvilupp u ttestjar faċli.
  • Appoġġ għall-amministrazzjoni: ġestjoni tal-istanzi - per eżempju, skala 'l fuq/'l isfel u każijiet ta' aġġornament; SLA, backup u rkupru; kontroll tas-sigurtà/aċċess.

Bl-użu ta' Cloud Spanner bħala soluzzjoni OLTP ppermettiet OLAP

Filwaqt li Google ma ssostnix b'mod espliċitu li Cloud Spanner huwa ddisinjat għall-ipproċessar analitiku, jaqsam xi attributi ma 'magni oħra bħal Apache Impala & Kudu u YugaByte, li huma ddisinjati għal xogħolijiet OLAP.

Anke jekk kien hemm biss ċans żgħir li Cloud Spanner inkluda magna HTAP (ipproċessar ibrid transazzjonali/analitiku) konsistenti b'sett ta' karatteristiċi OLAP (aktar jew inqas) użabbli, naħsbu li jkun jistħoqqilhom l-attenzjoni tagħna.

B'dan f'moħħna, ħaresna lejn il-kategoriji li ġejjin:

  • It-tagħbija tad-dejta, l-indiċi u l-appoġġ għall-qsim
  • Prestazzjoni Mistoqsija u DML

2. Cloud Spanner fil-qosor

Google Spanner hija sistema ta' ġestjoni tad-database relazzjonali clustered (RDBMS) li Google tuża għal bosta mis-servizzi tagħha stess. Google għamlitha ġeneralment disponibbli għall-utenti tal-Google Cloud Platform kmieni fl-2017.

Hawn huma xi wħud mill-attributi tal-Cloud Spanner:

  • Cluster ta' RDBMS Skalabbli Konsistenti ħafna: Juża s-sinkronizzazzjoni tal-ħin tal-ħardwer biex jiżgura l-konsistenza tad-dejta.
  • Appoġġ għat-tranżazzjonijiet bejn it-tabella: It-tranżazzjonijiet jistgħu jkopru diversi tabelli - mhux neċessarjament limitati għal tabella waħda (b'differenza minn Apache HBase jew Apache Kudu).
  • Tabelli bbażati fuq iċ-ċavetta primarja: It-tabelli kollha għandu jkollhom ċavetta primarja (PC) iddikjarata, li tista' tikkonsisti f'kolonni multipli fit-tabella. Id-dejta tabulari hija maħżuna f'ordni tal-PC, u tagħmilha effiċjenti ħafna u veloċi għat-tiftix tal-PC. Bħal sistemi oħra bbażati fuq PC, l-implimentazzjoni għandha tkun immudellata b'każijiet ta 'użu ddisinjati minn qabel biex tinkiseb l-aħjar prestazzjoni.
  • Tabelli strixxi: It-tabelli jista 'jkollhom dipendenti fiżiċi fuq xulxin. Ringieli f'tabella tifel jistgħu jiġu mqabbla ma 'ringieli f'tabella ġenitur. Dan l-approċċ iħaffef it-tfittxija għal relazzjonijiet li jistgħu jiġu identifikati matul il-fażi tal-immudellar tad-dejta, bħall-ko-lokazzjoni tal-klijenti u l-fatturi tagħhom.
  • Indiċijiet: Cloud Spanner jappoġġja indiċijiet sekondarji. L-indiċi jikkonsisti mill-kolonni indiċjati u l-kolonni PC kollha. Jekk mixtieq, l-indiċi jista' jkun fih ukoll kolonni oħra mhux indiċjati. L-indiċi jista' jiġi interleaved mat-tabella ġenitur biex jitħaffef il-mistoqsijiet. Japplikaw diversi restrizzjonijiet għall-indiċi, bħan-numru massimu ta' kolonni addizzjonali maħżuna fl-indiċi. Ukoll, mistoqsijiet permezz ta' indiċi jistgħu ma jkunux sempliċi daqs RDBMSs oħra.

“Cloud Spanner jagħżel indiċi awtomatikament f’każijiet rari biss. B'mod partikolari, Cloud Spanner ma jagħżelx awtomatikament indiċi sekondarju jekk mistoqsija titlob xi kolonni li mhumiex maħżuna f' indiċi ".

  • Ftehim tal-Livell tas-Servizz (SLA): Skjerament f'reġjun wieħed b'SLA ta' 99,99%; skjeramenti multi-reġjonali b'99,999% SLA. Filwaqt li l-SLA innifsu huwa biss ftehim u mhux garanzija ta 'kull tip, nemmen li n-nies ta' Google għandhom xi data iebsa biex jagħmlu talba daqshekk qawwija. (Għal referenza, 99,999% tfisser 26,3 sekondi ta’ indisponibbiltà tas-servizz kull xahar.)
  • Aktar: https://cloud.google.com/spanner/

Nota: Il-proġett Apache Tephra iżid appoġġ imtejjeb għat-tranżazzjonijiet lil Apache HBase (issa implimentat ukoll f'Apache Phoenix bħala beta).

3. Il-valutazzjoni tagħna

Għalhekk, ilkoll qrajna l-istqarrijiet ta’ Google dwar il-benefiċċji ta’ Cloud Spanner – skalar orizzontali prattikament illimitat filwaqt li nżommu konsistenza għolja u SLA għoli ħafna. Għalkemm dawn ir-rekwiżiti huma, fi kwalunkwe każ, estremament diffiċli biex jintlaħqu, l-għan tagħna ma kienx li niċħduhom. Minflok, ejja niffukaw fuq affarijiet oħra li ħafna mill-utenti tad-database jimpurtahom: parità u użabilità.

Aħna evalwajna Cloud Spanner bħala sostitut għal Sharded MySQL

Google Cloud SQL u Amazon AWS RDS, tnejn mill-aktar popolari OLTP DBMSs fis-suq tal-cloud, għandhom sett kbir ħafna ta 'karatteristiċi. Madankollu, biex tiskala dawn id-databases lil hinn mid-daqs ta 'nodu wieħed, għandek bżonn twettaq partizzjoni tal-applikazzjoni. Dan l-approċċ joħloq kumplessità addizzjonali kemm għall-applikazzjonijiet kif ukoll għall-amministrazzjoni. Ħarsa lejn kif Spanner tidħol fix-xenarju li tgħaqqad shards multipli f'istanza waħda u liema karatteristiċi (jekk hemm) jista 'jkollhom bżonn jiġu sagrifikati.

Appoġġ SQL, DML u DDL, kif ukoll konnettur u libreriji?

L-ewwel, meta tibda bi kwalunkwe database, għandek bżonn toħloq mudell tad-dejta. Jekk taħseb li tista' tikkonnettja JDBC Spanner mal-għodda SQL favorita tiegħek, issib li tista' tfittex id-dejta tiegħek magħha, iżda ma tistax tużaha biex toħloq tabella jew timmodifika (DDL) jew kwalunkwe daħħal/taġġorna/tħassar operazzjonijiet (DML). JDBC uffiċjali ta' Google ma jappoġġja l-ebda waħda minn dawn.

"Is-sewwieqa bħalissa ma jappoġġjawx dikjarazzjonijiet DML jew DDL."
Dokumentazzjoni tal-Ispanner

Is-sitwazzjoni mhix aħjar bil-console GCP - tista 'tibgħat biss mistoqsijiet SELECT. Fortunatament hemm sewwieq JDBC b'appoġġ għal DML u DDL mill-komunità, inklużi tranżazzjonijiet github.com/olavloite/spanner-jdbc. Filwaqt li dan is-sewwieq huwa estremament utli, in-nuqqas tas-sewwieq JDBC ta 'Google stess huwa sorprendenti. Fortunatament, Google joffri appoġġ pjuttost wiesa' għal-libreriji tal-klijenti (ibbażat fuq gRPC): C#, Go, Java, node.js, PHP, Python, u Ruby.

L-użu kważi obbligatorju ta' Cloud Spanner APIs tad-dwana (minħabba n-nuqqas ta' DDL u DML f'JDBC) jirriżulta f'xi limitazzjonijiet għal oqsma ta' kodiċi relatati bħal pools ta' konnessjoni jew oqfsa vinkolanti tad-database (eż. Spring MVC). Tipikament, meta tuża JDBC, inti liberu li tagħżel il-grupp ta 'konnessjoni favorit tiegħek (eż. HikariCP, DBCP, C3PO, eċċ.) Li jiġi ttestjat u jaħdem tajjeb. Fil-każ ta 'Spanner APIs personalizzati, irridu niddependu fuq oqfsa / pools li jorbtu / sessjonijiet li ħloqna aħna stess.

Id-disinn iċċentrat taċ-ċavetta primarja (PC) jippermetti lil Cloud Spanner li jkun veloċi ħafna meta jaċċessa d-dejta permezz tal-PC, iżda jintroduċi wkoll xi kwistjonijiet ta 'mistoqsijiet.

  • Ma tistax taġġorna l-valur taċ-ċavetta primarja; L-ewwel trid tħassar id-dħul mill-PC oriġinali u daħħalha mill-ġdid bil-valur il-ġdid. (Dan huwa simili għal magni oħra ta' database/ħażna orjentati lejn PC.)
  • Kwalunkwe dikjarazzjoni UPDATE u DELETE għandha tispeċifika PC fil-FEJN, għalhekk ma jistax ikun hemm dikjarazzjonijiet vojta DELETE kollha - dejjem irid ikun hemm subquery, pereżempju: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • Nuqqas ta 'għażla ta' inkrement awtomatiku jew xi ħaġa simili li tistabbilixxi s-sekwenza għall-qasam tal-PC. Biex dan jaħdem, il-valur korrispondenti għandu jinħoloq fuq in-naħa tal-applikazzjoni.

Indiċi sekondarji?

Google Cloud Spanner għandu appoġġ integrat għall-indiċi sekondarji. Din hija karatteristika sabiħa ħafna li mhux dejjem tkun preżenti f'teknoloġiji oħra. Apache Kudu bħalissa ma jappoġġja indiċijiet sekondarji xejn, u Apache HBase ma jappoġġjax indiċijiet direttament, iżda jista 'jżidhom permezz ta' Apache Phoenix.

L-indiċijiet f'Kudu u HBase jistgħu jiġu mmudellati bħala tabella separata b'kompożizzjoni differenti ta 'ċwievet primarji, iżda l-atomiċità tal-operazzjonijiet imwettqa fuq it-tabella ġenitur u t-tabelli tal-indiċi assoċjati trid issir fil-livell tal-applikazzjoni u mhix trivjali biex tiġi implimentata b'mod korrett.

Kif issemma fir-reviżjoni tal-Cloud Spanner, l-indiċijiet tagħha jistgħu jkunu differenti mill-indiċi MySQL. Għalhekk, għandha tingħata attenzjoni speċjali meta jinbnew mistoqsijiet u profili biex jiġi żgurat li l-indiċi xieraq jintuża fejn ikun meħtieġ.

Rappreżentazzjoni?

Oġġett popolari ħafna u utli f'database huwa l-opinjonijiet. Jistgħu jkunu utli għal numru kbir ta 'każijiet ta' użu; iż-żewġ favoriti tiegħi huma s-saff tal-astrazzjoni loġika u s-saff tas-sigurtà. Sfortunatament, Cloud Spanner MHUX jappoġġja fehmiet. Madankollu, dan jillimita parzjalment biss minħabba li m'hemm l-ebda granularità għall-permessi ta 'aċċess fil-livell tal-kolonna fejn il-veduti jistgħu jkunu soluzzjoni vijabbli.

Ara d-dokumentazzjoni ta' Cloud Spanner għal taqsima li tagħti dettalji dwar il-kwoti u r-restrizzjonijiet (spanner/kwoti), hemm waħda b’mod partikolari li tista’ tkun problematika għal xi applikazzjonijiet: Cloud Spanner out of the box għandu limitu ta’ massimu ta’ 100 database kull istanza. Ovvjament, dan jista 'jkun ostaklu kbir għal database li hija mfassla biex tiskala għal aktar minn 100 database. Fortunatament, wara li tkellimna mar-rappreżentant tekniku tagħna ta 'Google, sibna li dan il-limitu jista' jiżdied għal kważi kull valur permezz ta 'Google Support.

Appoġġ għall-iżvilupp?

Cloud Spanner joffri appoġġ ta 'lingwa ta' programmar pjuttost deċenti biex jaħdem mal-API tiegħu. Libreriji appoġġjati uffiċjalment huma fl-oqsma ta 'C#, Go, Java, node.js, PHP, Python u Ruby. Id-dokumentazzjoni hija pjuttost dettaljata, iżda bħal ma 'teknoloġiji avvanzati oħra, il-komunità hija pjuttost żgħira meta mqabbla mat-teknoloġiji tad-database l-aktar popolari, li jistgħu jwasslu għal aktar ħin mgħoddi biex isolvu każijiet ta' użu jew problemi inqas komuni.

Allura xi ngħidu dwar l-appoġġ għall-iżvilupp lokali?

Ma sibniex mod kif noħolqu istanza ta' Cloud Spanner fil-post. L-eqreb ħaġa li ksibna kienet immaġni Docker. wirdienDB, li huwa simili fil-prinċipju, iżda differenti ħafna fil-prattika. Per eżempju, CockroachDB jista 'juża PostgreSQL JDBC. Peress li l-ambjent ta 'żvilupp għandu jkun qrib l-ambjent tal-produzzjoni kemm jista' jkun, Cloud Spanner mhuwiex ideali peress li jrid jiddependi fuq istanza Spanner sħiħa. Biex tiffranka l-ispejjeż, tista 'tagħżel istanza ta' reġjun wieħed.

Appoġġ amministrattiv?

Il-ħolqien ta' eżempju ta' Cloud Spanner huwa sempliċi ħafna. Għandek bżonn biss li tagħżel bejn il-ħolqien ta 'istanza ta' multi-reġjun jew ta 'reġjun wieħed, speċifika r-reġjun(i) u n-numru ta' nodi. F'inqas minn minuta, l-istanza tiegħek se tkun qed taħdem.

Diversi metriċi rudimentali huma direttament aċċessibbli mill-paġna Spanner fil-Google Console. Fehmiet aktar dettaljati huma disponibbli permezz ta’ Stackdriver, fejn tista’ wkoll tissettja limiti metriċi u politiki ta’ twissija.

Aċċess għar-riżorsi?

MySQL joffri settings estensivi u granulari ħafna għall-permessi/rwoli tal-utent. Tista 'faċilment tikkonfigura l-aċċess għal tabella speċifika, jew saħansitra sempliċement subsett tal-kolonni tagħha. Cloud Spanner juża l-għodda tal-Ġestjoni tal-Identità u l-Aċċess (IAM) ta’ Google, li tippermettilek biss li tissettja politiki u permessi f’livell għoli ħafna. L-iktar għażla granulari hija r-riżoluzzjoni fil-livell tad-database, li ma tidħolx fil-biċċa l-kbira tal-każijiet ta 'użu tal-produzzjoni. Din il-limitazzjoni ġġiegħlek iżżid miżuri ta' sigurtà addizzjonali mal-kodiċi, l-infrastruttura, jew it-tnejn tiegħek biex tipprevjeni l-użu mhux awtorizzat tar-riżorsi ta' Spanner.

Backups?

Fi kliem sempliċi, m'hemm l-ebda backups fi Cloud Spanner. Għalkemm ir-rekwiżiti għoljin ta 'SLA ta' Google jistgħu jiżguraw li ma titlef l-ebda data minħabba fallimenti ta 'hardware jew database, żbalji umani, difetti fl-applikazzjoni, eċċ Aħna lkoll nafu r-regola: disponibbiltà għolja mhix sostitut għal strateġija ta' backup soda. Bħalissa, l-uniku mod biex tagħmel backup tad-dejta huwa li tixxandarha b'mod programmatiku minn database għal ambjent ta 'ħażna separat.

Prestazzjoni tal-mistoqsija?

Aħna użajna Yahoo! biex tgħabbi d-dejta u tittestja mistoqsijiet. Punt ta' Referenza għas-Servizzi tal-Cloud. It-tabella hawn taħt turi l-ammont ta’ xogħol B tal-YCSB b’proporzjon ta’ 95% qari għal 5% ta’ kitba.

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

* It-test tat-tagħbija tmexxa fuq l-n1-standard-32 Compute Engine (CE) (32 vCPU, 120 GB memorja), u l-istanza tat-test qatt ma kienet ostakolu fit-testijiet.
** In-numru massimu ta 'ħjut f'istanza YCSB waħda huwa 400. Total ta' sitt istanzi paralleli ta 'testijiet YCSB kellhom isiru biex jinkiseb total ta' 2400 ħajt.

Meta nħarsu lejn ir-riżultati tal-benchmark, partikolarment il-kombinazzjoni tat-tagħbija tas-CPU u t-TPS, nistgħu naraw b'mod ċar li Cloud Spanner tiskala pjuttost tajjeb. It-tagħbija tqila maħluqa min-numru kbir ta 'ħjut hija kkumpensata bin-numru kbir ta' nodi fil-cluster Cloud Spanner. Filwaqt li l-latency tidher pjuttost għolja, speċjalment meta taħdem b'2400 ħajta, jista 'jkun meħtieġ ittestjar mill-ġdid b'6 każijiet iżgħar tal-magna tal-kompjuter biex jinkisbu numri aktar preċiżi. Kull istanza se twettaq test YCSB wieħed minflok istanza CE kbira waħda b'6 testijiet paralleli. B'dan il-mod, ikun aktar faċli li ssir differenza bejn il-latenza tat-talba ta' Cloud Spanner u l-latenza miżjuda mill-konnessjoni tan-netwerk bejn Cloud Spanner u l-istanza CE li qed tmexxi t-test.

Kif jaħdem Cloud Spanner bħala OLAP?

Il-qsim?

Id-diviżjoni tad-dejta f'segmenti fiżikament u/jew loġikament indipendenti, imsejħa diviżorji, huwa kunċett popolari ħafna li jinsab fil-biċċa l-kbira tal-magni OLAP. Il-ħitan jistgħu jtejbu b'mod sinifikanti l-prestazzjoni tal-mistoqsija u l-manutenzjoni tad-database. Nidħlu aktar fil-fond fil-qsim ikun artiklu(i) separat(i), allura ejja nsemmu biss l-importanza li jkun hemm skema ta 'qsim u sub-qsim. Il-kapaċità li d-dejta tinqasam f'diviżorji u saħansitra aktar f'subpartizzjonijiet hija essenzjali għall-prestazzjoni analitika tal-mistoqsijiet.

Cloud Spanner ma jappoġġjax diviżorji bħala tali. Taqsam id-dejta internament f'hekk imsejħa maqsuma-s ibbażati fuq firxiet ewlenin primarji. Il-qsim isir awtomatikament biex jibbilanċja t-tagħbija fi cluster Cloud Spanner. Karatteristika utli ħafna ta 'Cloud Spanner hija l-qsim tat-tagħbija bażi tat-tabella ġenitur (tabella li mhix interleaved ma' oħra). Spanner awtomatikament jiskopri jekk fihx maqsuma data li tinqara aktar spiss minn data f’oħrajn maqsuma-ah, u jistgħu jiddeċiedu dwar separazzjoni ulterjuri. B'dan il-mod, aktar nodi jistgħu jkunu involuti f'talba, li żżid ukoll b'mod effettiv it-throughput.

Tagħbija data?

Il-metodu Cloud Spanner għad-dejta bl-ingrossa huwa l-istess bħal għal tagħbija normali. Biex tikseb prestazzjoni massima, trid issegwi xi linji gwida, inklużi:

  • Issortja d-data tiegħek skond iċ-ċavetta primarja.
  • Aqsamhom b'10*numru ta' nodi sezzjonijiet separati.
  • Oħloq sett ta 'kompiti tax-xogħol li jgħabbu d-dejta b'mod parallel.

Din it-tagħbija tad-dejta tuża n-nodi kollha tal-Cloud Spanner.

Aħna użajna l-ammont ta’ xogħol A tal-YCSB biex niġġenera sett ta’ data ta’ 10M ringieli.

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

* It-test tat-tagħbija tmexxa fuq il-magna tal-komputazzjoni n1-standard-32 (32 vCPU, 120 GB memorja), u l-istanza tat-test qatt ma kienet ostakolu fit-testijiet.
**Is-setup ta' nodu wieħed mhux rakkomandat għal kwalunkwe ammont ta' xogħol ta' produzzjoni.

Kif imsemmi hawn fuq, Cloud Spanner awtomatikament jipproċessa qasmiet ibbażati fuq it-tagħbija tagħhom, u għalhekk ir-riżultati jitjiebu wara diversi repetizzjonijiet konsekuttivi tat-test. Ir-riżultati ppreżentati hawn huma l-aħjar riżultati li ksibna. Meta nħarsu lejn in-numri ta 'hawn fuq, nistgħu naraw kif Cloud Spanner tiskala (tajjeb) hekk kif in-numru ta' nodi fil-cluster jiżdied. In-numri li jispikkaw huma l-latenzi medji estremament baxxi, li jikkuntrastaw mar-riżultati għal xogħolijiet imħallta (95% jaqraw u 5% jiktbu) kif deskritt fit-taqsima hawn fuq.

Skala?

Iż-żieda u t-tnaqqis tan-numru ta 'nodi Cloud Spanner huwa kompitu ta' klikk waħda. Jekk trid tgħabbi d-dejta malajr, tista 'tikkunsidra li tagħti spinta lill-istanza tiegħek sal-massimu (fil-każ tagħna kienet 25 nodu fir-reġjun US-EAST) u mbagħad tnaqqas in-numru ta' nodi eliġibbli għat-tagħbija normali tiegħek ladarba d-dejta kollha tkun f' id-database, b'referenza għal-limitu ta' 2TB/node.

Ġejna mfakkra dwar dan il-limitu anke b'database ferm iżgħar. Wara bosta testijiet ta 'tagħbija, id-database tagħna kienet ta' madwar 155 GB fid-daqs, u meta tnaqqset għal eżempju ta 'node 1, irċevejna l-iżball li ġej:

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

Irnexxielna nnaqqsu minn 25 għal 2 każijiet, iżda konna mwaħħla f'żewġ nodi.

Iż-żieda u t-tnaqqis tan-numru ta 'nodi fi cluster Cloud Spanner jistgħu jiġu awtomatizzati bl-użu tal-API REST. Dan jista' jkun utli b'mod speċjali biex titnaqqas iż-żieda fit-tagħbija tas-sistema waqt il-ħinijiet tax-xogħol impenjattivi.

Prestazzjoni tal-mistoqsijiet OLAP?

Oriġinarjament ippjanajna li nqattgħu ammont sinifikanti ta' ħin fl-evalwazzjoni tagħna ta' Spanner fuq din il-parti. Wara diversi GĦADDI TA' GĦAŻLA, immedjatament indunajna li l-ittestjar kien se jkun qasir u li Spanner MHUX magna adattata għall-OLAP. Irrispettivament min-numru ta 'nodi fil-cluster, sempliċement tagħżel in-numru ta' ringieli f'tabella ta 'ringiela ta' 10M ħadet bejn 55 u 60 sekonda. Barra minn hekk, kwalunkwe mistoqsija li kienet teħtieġ aktar memorja biex taħżen riżultati intermedji falliet bi żball OOM.

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

Xi numri għal mistoqsijiet TPC-H jistgħu jinstabu fl-artiklu ta 'Todd Lipcon Nosql-kudu-spanner-slides.html, slides 42 u 43. Dawn in-numri huma konsistenti mar-riżultati tagħna stess (sfortunatament).

Google Cloud Spanner: Tajjeb, Ħażin, Ikrah

4. Il-konklużjonijiet tagħna

Minħabba l-istat attwali tal-karatteristiċi ta 'Cloud Spanner, huwa diffiċli li wieħed jimmaġina li huwa sostitut sempliċi għas-soluzzjoni OLTP eżistenti tiegħek, speċjalment meta l-bżonnijiet tiegħek jegħlbuha. Irid jintefaq ammont sinifikanti ta' ħin biex tibni soluzzjoni madwar in-nuqqasijiet ta' Cloud Spanner.

Meta bdejna nevalwaw Cloud Spanner, konna nistennew li l-karatteristiċi tal-ġestjoni tiegħu jkunu fuq l-istess, jew għall-inqas mhux wisq 'il bogħod minn, soluzzjonijiet oħra ta' Google SQL. Iżda konna sorpriżi bin-nuqqas sħiħ ta 'backups u kontroll limitat ħafna fuq l-aċċess għar-riżorsi. Biex ma nsemmux l-ebda fehmiet, l-ebda ambjent ta 'żvilupp lokali, sekwenzi mhux appoġġjati, JDBC mingħajr appoġġ DML u DDL, eċċ.

Allura fejn imur xi ħadd li jeħtieġ li jkabbar database transazzjonali? Ma jidhirx li hemm soluzzjoni waħda fis-suq li taqbel mal-każijiet kollha tal-użu. Hemm ħafna soluzzjonijiet ta 'sors magħluq u miftuħ (li wħud minnhom huma msemmija f'dan l-artikolu), kull wieħed bil-saħħiet u d-dgħufijiet tagħhom, iżda ħadd minnhom ma joffri SaaS b'99,999% SLA u konsistenza għolja. Jekk SLA għoli huwa l-għan ewlieni tiegħek u m'intix inklinat li tibni soluzzjoni multi-cloud personalizzata, Cloud Spanner tista' tkun is-soluzzjoni li qed tfittex. Imma għandek tkun konxju tal-limitazzjonijiet kollha tagħha.

Biex inkun ġust, Cloud Spanner ġie rilaxxat biss lill-pubbliku fir-rebbiegħa tal-2017, għalhekk huwa raġonevoli li wieħed jistenna li xi wħud min-nuqqasijiet attwali tiegħu jistgħu eventwalment imorru (nittamaw), u meta jagħmlu dan, jista 'jkun li jbiddel il-logħba. Wara kollox, Cloud Spanner mhuwiex biss proġett sekondarju għal Google. Google jużaha bħala l-bażi għal prodotti oħra Google. U meta Google reċentement issostitwixxa Megastore f'Google Cloud Storage ma' Cloud Spanner, ippermetta li Google Cloud Storage isir konsistenti ħafna għal-listi ta' oġġetti fuq skala globali (li għadu mhux il-każ għal Amazon's S3).

Mela, għad hemm tama... nittamaw.

Dak kollox. Bħall-awtur tal-artiklu, aħna wkoll nibqgħu nittamaw, imma x’taħseb dwar dan? Ikteb fil-kummenti

Nistiednu lil kulħadd iżur tagħna webinar b'xejn li fih ser ngħidulkom fid-dettall dwar il-kors "AWS għall-Iżviluppaturi" minn OTUS.

Sors: www.habr.com

Żid kumment