Google mÄkoÅu uzgriežÅu atslÄga: labs, slikts, neglÄ«ts
Sveiki, Habrovskas iedzÄ«votÄji. KÄ ierasts, mÄs turpinÄm dalÄ«ties ar interesantu materiÄlu pirms jaunu kursu sÄkuma. Å odien Ä«paÅ”i jums esam publicÄjuÅ”i rakstu par Google Cloud Spanner, lai tas sakristu ar kursa sÄkÅ”anu "AWS izstrÄdÄtÄjiem".
KÄ uzÅÄmums, kas piedÄvÄ dažÄdus mÄkoÅdatoÅ”anas POS risinÄjumus mazumtirgotÄjiem, restorÄniem un tieÅ”saistes pÄrdevÄjiem visÄ pasaulÄ, Lightspeed izmanto dažÄdu veidu datu bÄzu platformas dažÄdiem darÄ«jumu, analÄ«tiskajiem un meklÄÅ”anas gadÄ«jumiem. Katrai no Ŕīm datu bÄzu platformÄm ir savas stiprÄs un vÄjÄs puses. LÄ«dz ar to, kad Google tirgÅ« ieviesa Cloud Spanner ā relÄciju datu bÄzu pasaulÄ neredzÄtas daudzsoloÅ”as funkcijas, piemÄram, praktiski neierobežota horizontÄlÄ mÄrogojamÄ«ba un 99,999% pakalpojumu lÄ«meÅa lÄ«gums (SLA), ā nevarÄjÄm laist garÄm iespÄju tikt pie rokas!
Lai sniegtu visaptveroÅ”u pÄrskatu par mÅ«su pieredzi ar Cloud Spanner, kÄ arÄ« izmantotajiem vÄrtÄÅ”anas kritÄrijiem, mÄs apskatÄ«sim Å”Ädas tÄmas:
MÅ«su vÄrtÄÅ”anas kritÄriji
MÄkoÅu atslÄga Ä«sumÄ
MÅ«su vÄrtÄjums
MÅ«su atklÄjumi
1. MÅ«su vÄrtÄÅ”anas kritÄriji
Pirms iedziļinÄties Cloud Spanner specifikÄ, tÄ lÄ«dzÄ«bÄs un atŔķirÄ«bÄs ar citiem tirgÅ« esoÅ”ajiem risinÄjumiem, vispirms parunÄsim par galvenajiem lietoÅ”anas gadÄ«jumiem, kas mums bija prÄtÄ, apsverot, kur mÅ«su infrastruktÅ«rÄ izvietot Cloud Spanner:
KÄ (pÄrsvarÄ) tradicionÄlÄ SQL datu bÄzes risinÄjuma aizstÄjÄjs
KÄ OLTP risinÄjumu ar OLAP atbalstu
PiezÄ«me: VienkÄrŔības un salÄ«dzinÄÅ”anas labad Å”ajÄ rakstÄ Cloud Spanner ir salÄ«dzinÄts ar GCP Cloud SQL un Amazon AWS RDS risinÄjumu saimes MySQL variantiem.
Cloud Spanner izmantoÅ”ana kÄ tradicionÄlÄ SQL datu bÄzes risinÄjuma aizstÄjÄjs
VidÄ tradicionÄlÄ datubÄzÄm, kad datu bÄzes vaicÄjuma reakcijas laiks tuvojas vai pat pÄrsniedz iepriekÅ” definÄtos lietojumprogrammu sliekÅ”Åus (galvenokÄrt lietotÄju un/vai pieprasÄ«jumu skaita pieauguma dÄļ), ir vairÄki veidi, kÄ samazinÄt atbildes laiku lÄ«dz pieÅemamam lÄ«menim. TomÄr lielÄkÄ daļa Å”o risinÄjumu ietver manuÄlu iejaukÅ”anos.
PiemÄram, pirmais solis, kas jÄveic, ir aplÅ«kot dažÄdus ar veiktspÄju saistÄ«tos datu bÄzes parametrus un pielÄgot tos, lai tie vislabÄk atbilstu lietojumprogrammu lietoÅ”anas gadÄ«jumu modeļiem. Ja ar to nepietiek, varat izvÄlÄties mÄrogot datubÄzi vertikÄli vai horizontÄli.
Lietojumprogrammas vertikÄlÄ mÄrogoÅ”ana ir saistÄ«ta ar servera instances jauninÄÅ”anu, parasti pievienojot vairÄk procesoru/kodolu, vairÄk RAM, ÄtrÄku krÄtuvi utt. Pievienojot vairÄk aparatÅ«ras resursu, palielinÄs datu bÄzes veiktspÄja, galvenokÄrt transakcijÄs sekundÄ, un darÄ«jumu latentums OLTP sistÄmÄm. RelÄciju datu bÄzu sistÄmas (kas izmanto daudzpavedienu pieeju), piemÄram, MySQL mÄrogojas labi vertikÄli.
Å ai pieejai ir vairÄki trÅ«kumi, taÄu visredzamÄkais ir tirgÅ« pieejamais maksimÄlais servera izmÄrs. Kad ir sasniegts lielÄkÄs servera instances ierobežojums, atliek tikai viena iespÄja: horizontÄlÄ mÄrogoÅ”ana.
HorizontÄlÄ mÄrogoÅ”ana ir pieeja, kurÄ klasterim tiek pievienots vairÄk serveru, ideÄlÄ gadÄ«jumÄ lineÄri palielinot veiktspÄju, pievienojot serveru skaitu. Vairums tradicionÄlÄ Datu bÄzu sistÄmas mÄrogojas horizontÄli slikti vai vispÄr netiek mÄrogotas. PiemÄram, MySQL var mÄrogot horizontÄli lasÄ«Å”anas darbÄ«bÄm, pievienojot vergu lasÄ«tÄjus, bet nevar mÄrogot horizontÄli rakstÄ«Å”anai.
No otras puses, tÄ bÅ«tÄ«bas dÄļ Cloud Spanner var viegli mÄrogot horizontÄli ar minimÄlu iejaukÅ”anos.
PilnÄ«bÄ aprÄ«kots DBVS kÄ pakalpojums jÄvÄrtÄ no dažÄdiem leÅÄ·iem. Par pamatu mÄs ÅÄmÄm populÄrÄkÄs DBVS mÄkonÄ« - Google, GCP Cloud SQL un Amazon, AWS RDS. SavÄ novÄrtÄjumÄ mÄs koncentrÄjÄmies uz Å”ÄdÄm kategorijÄm:
Lai gan Google skaidri nenorÄda, ka Cloud Spanner ir paredzÄts analÄ«tiskai apstrÄdei, tÄ koplieto dažus atribÅ«tus ar citiem dzinÄjiem, piemÄram, Apache Impala & Kudu un YugaByte, kas ir paredzÄti OLAP darba slodzÄm.
Pat ja bÅ«tu tikai neliela iespÄja, ka Cloud Spanner iekļÄva konsekventu mÄrogojamu HTAP (hibrÄ«da darÄ«jumu/analÄ«tikas apstrÄdes) dzinÄju ar (vairÄk vai mazÄk) lietojamu OLAP funkciju kopu, mÄs uzskatÄm, ka tas bÅ«tu mÅ«su uzmanÄ«bas vÄrts.
Paturot to prÄtÄ, mÄs apskatÄ«jÄm Å”Ädas kategorijas:
Datu ielÄde, indeksi un sadalÄ«Å”anas atbalsts
VaicÄjuma veiktspÄja un DML
2. MÄkoÅu atslÄga Ä«sumÄ
Google Spanner ir kopu relÄciju datu bÄzes pÄrvaldÄ«bas sistÄma (RDBMS), ko Google izmanto vairÄkiem saviem pakalpojumiem. Google padarÄ«ja to vispÄrÄji pieejamu Google Cloud Platform lietotÄjiem 2017. gada sÄkumÄ.
Šeit ir daži no Cloud Spanner atribūtiem:
Ä»oti konsekvents mÄrogojams RDBMS klasteris: izmanto aparatÅ«ras laika sinhronizÄciju, lai nodroÅ”inÄtu datu konsekvenci.
VairÄku tabulu transakciju atbalsts: darÄ«jumi var aptvert vairÄkas tabulas ā ne vienmÄr ir tikai viena tabula (atŔķirÄ«bÄ no Apache HBase vai Apache Kudu).
Tabulas, kuru pamatÄ ir primÄrÄ atslÄga: VisÄm tabulÄm ir jÄbÅ«t deklarÄtai primÄrajai atslÄgai (PC), kas var sastÄvÄt no vairÄkÄm tabulas kolonnÄm. Tabulu dati tiek glabÄti datora secÄ«bÄ, padarot tos ļoti efektÄ«vus un Ätrus meklÄÅ”anai datorÄ. TÄpat kÄ citas uz datoru balstÄ«tas sistÄmas, ievieÅ”ana ir jÄmodelÄ, Åemot vÄrÄ iepriekÅ” izstrÄdÄtus lietoÅ”anas gadÄ«jumus, lai to panÄktu labÄkais sniegums.
SvÄ«trainas tabulas: tabulÄm var bÅ«t fiziska atkarÄ«ba viena no otras. PakÄrtotÄs tabulas rindas var saskaÅot ar vecÄktabulas rindÄm. Å Ä« pieeja paÄtrina tÄdu attiecÄ«bu meklÄÅ”anu, kuras var identificÄt datu modelÄÅ”anas fÄzÄ, piemÄram, klientu un viÅu rÄÄ·inu lÄ«dzÄsatraÅ”anos.
Indeksi: Cloud Spanner atbalsta sekundÄros indeksus. Indekss sastÄv no indeksÄtajÄm kolonnÄm un visÄm PC kolonnÄm. Ja vÄlaties, rÄdÄ«tÄjÄ var bÅ«t arÄ« citas neindeksÄtas kolonnas. Lai paÄtrinÄtu vaicÄjumu izpildi, indeksu var apvienot ar vecÄktabulu. Uz indeksiem attiecas vairÄki ierobežojumi, piemÄram, maksimÄlais indeksÄ saglabÄto papildu kolonnu skaits. TurklÄt vaicÄjumi, izmantojot indeksus, var nebÅ«t tik vienkÄrÅ”i kÄ citÄs RDBVS.
āCloud Spanner automÄtiski atlasa indeksu tikai retos gadÄ«jumos. Jo Ä«paÅ”i, Cloud Spanner automÄtiski neatlasa sekundÄro indeksu, ja vaicÄjumÄ tiek pieprasÄ«tas kolonnas, kas nav saglabÄtas rÄdÄ«tÄjs '.
Pakalpojuma lÄ«meÅa lÄ«gums (SLA): izvietoÅ”ana vienÄ reÄ£ionÄ ar SLA 99,99%; vairÄku reÄ£ionu izvietoÅ”ana ar 99,999% SLA. Lai gan pats SLA ir tikai vienoÅ”anÄs, nevis nekÄda veida garantija, es uzskatu, ka Google darbiniekiem ir daži grÅ«ti dati, lai izteiktu tik spÄcÄ«gu apgalvojumu. (UzziÅai ā 99,999% nozÄ«mÄ, ka pakalpojums nav pieejams 26,3 sekundes mÄnesÄ«.)
PiezÄ«me: Apache Tephra projekts pievieno uzlabotu darÄ«jumu atbalstu Apache HBase (tagad arÄ« tiek ieviests Apache Phoenix kÄ beta versija).
3. MÅ«su vÄrtÄjums
TÄtad, mÄs visi esam lasÄ«juÅ”i Google apgalvojumus par Cloud Spanner priekÅ”rocÄ«bÄm ā praktiski neierobežotu horizontÄlo mÄrogoÅ”anu, vienlaikus saglabÄjot augstu konsekvenci un ļoti augstu SLA. Lai gan Ŕīs prasÄ«bas jebkurÄ gadÄ«jumÄ ir ÄrkÄrtÄ«gi grÅ«ti izpildÄmas, mÅ«su mÄrÄ·is nebija tÄs atspÄkot. TÄ vietÄ pievÄrsÄ«simies citÄm lietÄm, kas rÅ«p lielÄkajai daļai datu bÄzes lietotÄju: paritÄtei un lietojamÄ«bai.
MÄs novÄrtÄjÄm Cloud Spanner kÄ Sharded MySQL aizstÄjÄju
Google Cloud SQL un Amazon AWS RDS, divÄm no populÄrÄkajÄm OLTP DBVS mÄkoÅu tirgÅ«, ir ļoti plaÅ”s funkciju kopums. TomÄr, lai Ŕīs datu bÄzes bÅ«tu lielÄkas par viena mezgla lielumu, ir jÄveic lietojumprogrammu sadalÄ«Å”ana. Å Ä« pieeja rada papildu sarežģītÄ«bu gan lietojumprogrammÄm, gan administrÄÅ”anai. MÄs apskatÄ«jÄm, kÄ Spanner iekļaujas scenÄrijÄ, kurÄ vienÄ instancÄ tiek apvienotas vairÄkas Ŕķembas, un kÄdas funkcijas (ja tÄdas ir) varÄtu bÅ«t jÄupurÄ.
SQL, DML un DDL atbalsts, kÄ arÄ« savienotÄjs un bibliotÄkas?
PirmkÄrt, sÄkot ar jebkuru datu bÄzi, ir jÄizveido datu modelis. Ja domÄjat, ka varat savienot JDBC Spanner ar savu iecienÄ«tÄko SQL rÄ«ku, jÅ«s atklÄsit, ka varat ar to vaicÄt savus datus, taÄu nevarat to izmantot, lai izveidotu tabulu vai modificÄtu (DDL) vai ievietotu/atjauninÄtu/dzÄstu. operÄcijas (DML). Google oficiÄlais JDBC neatbalsta nevienu no tiem.
"Draiveri paÅ”laik neatbalsta DML vai DDL paziÅojumus."
UzgriežÅu atslÄgas dokumentÄcija
SituÄcija nav labÄka ar GCP konsoli ā jÅ«s varat nosÅ«tÄ«t tikai SELECT vaicÄjumus. Par laimi, kopienai ir JDBC draiveris ar DML un DDL atbalstu, tostarp darÄ«jumiem github.com/olavloite/spanner-jdbc. Lai gan Å”is draiveris ir ÄrkÄrtÄ«gi noderÄ«gs, Google paÅ”a JDBC draivera trÅ«kums ir pÄrsteidzoÅ”s. Par laimi, Google piedÄvÄ diezgan plaÅ”u atbalstu klientu bibliotÄkÄm (pamatojoties uz gRPC): C#, Go, Java, node.js, PHP, Python un Ruby.
GandrÄ«z obligÄta Cloud Spanner pielÄgoto API izmantoÅ”ana (jo JDBC nav DDL un DML) rada zinÄmus ierobežojumus saistÄ«tajÄm koda jomÄm, piemÄram, savienojumu pÅ«liem vai datu bÄzes saistÄ«Å”anas ietvariem (piemÄram, Spring MVC). Parasti, izmantojot JDBC, jÅ«s varat brÄ«vi izvÄlÄties savu iecienÄ«tÄko savienojumu kopu (piemÄram, HikariCP, DBCP, C3PO utt.), kas ir pÄrbaudÄ«ts un darbojas labi. PielÄgotu Spanner API gadÄ«jumÄ mums ir jÄpaļaujas uz ietvariem/saistoÅ”iem pÅ«liem/sesijÄm, ko esam izveidojuÅ”i paÅ”i.
Uz primÄro atslÄgu (PC) orientÄtais dizains ļauj Cloud Spanner darboties ļoti Ätri, piekļūstot datiem, izmantojot datoru, kÄ arÄ« rada dažas vaicÄjumu problÄmas.
JÅ«s nevarat atjauninÄt primÄrÄs atslÄgas vÄrtÄ«bu; Vispirms ir jÄizdzÄÅ” ieraksts no sÄkotnÄjÄ datora un atkÄrtoti jÄievieto ar jauno vÄrtÄ«bu. (Tas ir lÄ«dzÄ«gs citiem uz datoru orientÄtiem datu bÄzu/atmiÅas dzinÄjiem.)
Jebkuriem priekÅ”rakstiem UPDATE un DELETE ir jÄnorÄda PC laukÄ WHERE, tÄpÄc visi priekÅ”raksti DELETE nedrÄ«kst bÅ«t tukÅ”i - vienmÄr ir jÄbÅ«t apakÅ”vaicÄjumam, piemÄram: UPDATE xxx WHERE id IN (SELECT id FROM table1)
TrÅ«kst automÄtiskÄs palielinÄÅ”anas opcijas vai kaut kas lÄ«dzÄ«gs, kas nosaka datora lauka secÄ«bu. Lai tas darbotos, lietojumprogrammas pusÄ ir jÄizveido atbilstoÅ”Ä vÄrtÄ«ba.
SekundÄrie indeksi?
Google Cloud Spanner ir iebÅ«vÄts atbalsts sekundÄrajiem indeksiem. Å Ä« ir ļoti jauka funkcija, kas ne vienmÄr ir pieejama citÄs tehnoloÄ£ijÄs. Apache Kudu paÅ”laik vispÄr neatbalsta sekundÄros indeksus, un Apache HBase neatbalsta indeksus tieÅ”i, bet var tos pievienot, izmantojot Apache Phoenix.
Indeksus programmÄs Kudu un HBase var modelÄt kÄ atseviŔķu tabulu ar atŔķirÄ«gu primÄro atslÄgu sastÄvu, taÄu vecÄku tabulÄ un ar to saistÄ«tajÄs indeksu tabulÄs veikto darbÄ«bu atomitÄte ir jÄveic lietojumprogrammas lÄ«menÄ«, un tÄ nav triviÄla, lai to pareizi ieviestu.
KÄ minÄts Cloud Spanner pÄrskatÄ, tÄ indeksi var atŔķirties no MySQL indeksiem. TÄpÄc, veidojot vaicÄjumus un profilÄÅ”anu, ir jÄievÄro Ä«paÅ”a piesardzÄ«ba, lai nodroÅ”inÄtu, ka tur, kur tas ir nepiecieÅ”ams, tiek izmantots pareizs indekss.
PÄrstÄvÄ«ba?
Ä»oti populÄrs un noderÄ«gs objekts datu bÄzÄ ir skati. Tie var bÅ«t noderÄ«gi daudziem lietoÅ”anas gadÄ«jumiem; mani divi favorÄ«ti ir loÄ£iskÄs abstrakcijas slÄnis un droŔības slÄnis. DiemžÄl Cloud Spanner NEatbalsta skatus. TomÄr tas mÅ«s ierobežo tikai daļÄji, jo piekļuves atļaujÄm kolonnu lÄ«menÄ« nav precizitÄtes, kur skati varÄtu bÅ«t dzÄ«votspÄjÄ«gs risinÄjums.
Skatiet Cloud Spanner dokumentÄcijÄ sadaļu, kurÄ ir detalizÄti aprakstÄ«tas kvotas un ierobežojumi (uzgriežÅu atslÄga/kvotas), ir viena, kas var bÅ«t problemÄtiska dažÄm lietojumprogrammÄm: Cloud Spanner jau sÄkotnÄji ir ierobežots lÄ«dz 100 datu bÄzÄm vienÄ instancÄ. AcÄ«mredzot tas var bÅ«t galvenais ŔķÄrslis datu bÄzei, kas paredzÄta vairÄk nekÄ 100 datu bÄzÄm. Par laimi, pÄc sarunas ar mÅ«su Google tehnisko pÄrstÄvi mÄs noskaidrojÄm, ka, izmantojot Google atbalstu, Å”o ierobežojumu var palielinÄt lÄ«dz gandrÄ«z jebkurai vÄrtÄ«bai.
Atbalsts attīstībai?
Cloud Spanner piedÄvÄ diezgan pienÄcÄ«gu programmÄÅ”anas valodas atbalstu darbam ar tÄ API. OficiÄli atbalstÄ«tÄs bibliotÄkas ir C#, Go, Java, node.js, PHP, Python un Ruby jomÄs. DokumentÄcija ir diezgan detalizÄta, taÄu, tÄpat kÄ ar citÄm progresÄ«vÄm tehnoloÄ£ijÄm, kopiena ir diezgan maza, salÄ«dzinot ar populÄrÄkajÄm datu bÄzu tehnoloÄ£ijÄm, kas var novest pie vairÄk laika, kas pavadÄ«ts retÄk sastopamu lietoÅ”anas gadÄ«jumu vai problÄmu risinÄÅ”anai.
KÄ tad ar vietÄjÄs attÄ«stÄ«bas atbalstÄ«Å”anu?
MÄs neesam atraduÅ”i veidu, kÄ lokÄli izveidot Cloud Spanner instanci. TuvÄkais, ko mÄs saÅÄmÄm, bija Docker attÄls. TarakÄnsDB, kas principÄ ir lÄ«dzÄ«gs, bet praksÄ Ä¼oti atŔķirÄ«gs. PiemÄram, CockroachDB var izmantot PostgreSQL JDBC. TÄ kÄ izstrÄdes videi ir jÄbÅ«t pÄc iespÄjas tuvÄkai ražoÅ”anas videi, Cloud Spanner nav ideÄls, jo tam ir jÄpaļaujas uz pilnu uzgriežÅu atslÄgu gadÄ«jumu. Lai ietaupÄ«tu izmaksas, varat atlasÄ«t viena reÄ£iona gadÄ«jumu.
AdministrÄcijas atbalsts?
Cloud Spanner instances izveide ir ļoti vienkÄrÅ”a. Jums vienkÄrÅ”i jÄizvÄlas starp vairÄku reÄ£ionu vai viena reÄ£iona instances izveidi, jÄnorÄda reÄ£ions(-i) un mezglu skaits. MazÄk nekÄ minÅ«tes laikÄ jÅ«su instance tiks izveidota un darbosies.
VairÄki elementÄri rÄdÄ«tÄji ir tieÅ”i pieejami Google konsoles uzgriežÅu atslÄgas lapÄ. DetalizÄtÄki skati ir pieejami, izmantojot Stackdriver, kur varat arÄ« iestatÄ«t metrikas sliekÅ”Åus un brÄ«dinÄjumu politikas.
Piekļuve resursiem?
MySQL piedÄvÄ plaÅ”us un ļoti detalizÄtus iestatÄ«jumus lietotÄja atļaujÄm/lomÄm. Varat viegli konfigurÄt piekļuvi noteiktai tabulai vai pat tikai tÄs kolonnu apakÅ”kopai. Cloud Spanner izmanto Google identitÄtes un piekļuves pÄrvaldÄ«bas (IAM) rÄ«ku, kas ļauj iestatÄ«t politikas un atļaujas tikai ļoti augstÄ lÄ«menÄ«. VisprecÄ«zÄkÄ iespÄja ir datu bÄzes lÄ«meÅa izŔķirtspÄja, kas neietilpst lielÄkajÄ daÄ¼Ä ražoÅ”anas gadÄ«jumu. Å is ierobežojums liek jums pievienot papildu droŔības pasÄkumus savam kodam, infrastruktÅ«rai vai abiem, lai novÄrstu neatļautu Spanner resursu izmantoÅ”anu.
DublÄjumkopijas?
VienkÄrÅ”i sakot, pakalpojumÄ Cloud Spanner nav dublÄjumu. Lai gan Google augstÄs SLA prasÄ«bas var nodroÅ”inÄt, ka jÅ«s nezaudÄjat datus aparatÅ«ras vai datu bÄzes kļūmju, cilvÄku kļūdu, lietojumprogrammu defektu u.c. dÄļ. MÄs visi zinÄm noteikumu: augsta pieejamÄ«ba neaizstÄj droÅ”u dublÄÅ”anas stratÄÄ£iju. PaÅ”laik vienÄ«gais veids, kÄ dublÄt datus, ir programmatiski straumÄt tos no datu bÄzes uz atseviŔķu krÄtuves vidi.
Vai vaicÄt veiktspÄju?
MÄs izmantojÄm Yahoo!, lai ielÄdÄtu datus un pÄrbaudÄ«tu vaicÄjumus. MÄkoÅa apkalpoÅ”anas etalons. TÄlÄk esoÅ”ajÄ tabulÄ parÄdÄ«ta YCSB darba slodze B ar 95% lasÄ«Å”anas un 5% rakstÄ«Å”anas attiecÄ«bu.
* Slodzes tests tika veikts ar n1-standard-32 Compute Engine (CE) (32 vCPU, 120 GB atmiÅa), un testa eksemplÄrs testos nekad nav bijis ŔķÄrslis. ** MaksimÄlais pavedienu skaits vienÄ YCSB instancÄ ir 400. KopÄ bija jÄpalaiž seÅ”i paralÄli YCSB testu gadÄ«jumi, lai kopÄ iegÅ«tu 2400 pavedienus.
AplÅ«kojot etalonu rezultÄtus, jo Ä«paÅ”i CPU slodzes un TPS kombinÄciju, mÄs varam skaidri redzÄt, ka Cloud Spanner mÄrogojas diezgan labi. Lielo slodzi, ko rada liels pavedienu skaits, kompensÄ lielais mezglu skaits Cloud Spanner klasterÄ«. Lai gan latentums izskatÄs diezgan augsts, it Ä«paÅ”i, ja darbojas ar 2400 pavedieniem, var bÅ«t nepiecieÅ”ama atkÄrtota pÄrbaude ar 6 mazÄkiem skaitļoÅ”anas programmas gadÄ«jumiem, lai iegÅ«tu precÄ«zÄkus skaitļus. Katrs gadÄ«jums veiks vienu YCSB testu, nevis vienu lielu CE gadÄ«jumu ar 6 paralÄliem testiem. TÄdÄ veidÄ bÅ«s vieglÄk atŔķirt Cloud Spanner pieprasÄ«juma latentumu un latentumu, ko pievieno tÄ«kla savienojums starp Cloud Spanner un CE instanci, kas veic testu.
KÄ Cloud Spanner darbojas kÄ OLAP?
SadalīŔana?
Datu sadalÄ«Å”ana fiziski un/vai loÄ£iski neatkarÄ«gos segmentos, ko sauc par nodalÄ«jumiem, ir ļoti populÄrs jÄdziens, kas atrodams lielÄkajÄ daÄ¼Ä OLAP dzinÄju. Starpsienas var ievÄrojami uzlabot vaicÄjumu veiktspÄju un datu bÄzes apkopi. PadziļinÄta sadalÄ«Å”ana bÅ«tu atseviŔķs(-i) raksts(-i), tÄpÄc pieminÄsim tikai sadalÄ«Å”anas un apakÅ”nodalÄ«Å”anas shÄmas nozÄ«mi. AnalÄ«tiskÄ vaicÄjuma veiktspÄjas atslÄga ir spÄja sadalÄ«t datus nodalÄ«jumos un vÄl vairÄk apakÅ”sadaļÄs.
Cloud Spanner neatbalsta nodalÄ«jumus kÄ tÄdus. Tas datus iekÅ”Äji sadala tÄ sauktajos sadalÄ«t-s, pamatojoties uz primÄro atslÄgu diapazoniem. SadalÄ«Å”ana tiek veikta automÄtiski, lai lÄ«dzsvarotu slodzi Cloud Spanner klasterÄ«. Ä»oti noderÄ«ga Cloud Spanner funkcija ir vecÄktabulas bÄzes slodzes sadalÄ«Å”ana (tabula, kas nav savstarpÄji savienota ar citu). AtslÄgas atslÄga automÄtiski nosaka, vai tajÄ ir sadalÄ«t dati, kas tiek lasÄ«ti biežÄk nekÄ dati citÄs sadalÄ«t-ah, un var lemt par turpmÄku ŔķirÅ”anos. TÄdÄ veidÄ pieprasÄ«jumÄ var iesaistÄ«t vairÄk mezglu, kas arÄ« efektÄ«vi palielina caurlaidspÄju.
Vai ielÄdÄt datus?
Cloud Spanner metode lielapjoma datiem ir tÄda pati kÄ parastai ielÄdei. Lai sasniegtu maksimÄlu veiktspÄju, jums jÄievÄro daži noteikumi, tostarp:
KÄrtojiet datus pÄc primÄrÄs atslÄgas.
Sadaliet tos ar 10*mezglu skaits atseviŔķas sadaļas.
Izveidojiet darba uzdevumu kopu, kas paralÄli ielÄdÄ datus.
Å Ä« datu ielÄde izmanto visus Cloud Spanner mezglus.
MÄs izmantojÄm YCSB darba slodzi A, lai Ä£enerÄtu datu kopu ar 10 miljoniem rindu.
* Slodzes tests tika veikts ar n1-standard-32 skaitļoÅ”anas dzinÄju (32 vCPU, 120 GB atmiÅa), un testa eksemplÄrs testos nekad nav bijis ŔķÄrslis.
** Viena mezgla iestatīŔana nav ieteicama nevienai ražoŔanas darba slodzei.
KÄ minÄts iepriekÅ”, Cloud Spanner automÄtiski apstrÄdÄ sadalÄ«jumus, pamatojoties uz to slodzi, tÄpÄc rezultÄti uzlabojas pÄc vairÄkiem secÄ«giem testa atkÄrtojumiem. Å eit sniegtie rezultÄti ir labÄkie rezultÄti, ko esam sasnieguÅ”i. AplÅ«kojot iepriekÅ” minÄtos skaitļus, mÄs varam redzÄt, kÄ Cloud Spanner mÄrogojas (labi), palielinoties klastera mezglu skaitam. Skaitļi, kas izceļas, ir ÄrkÄrtÄ«gi zemais vidÄjais latentums, kas ir pretrunÄ ar rezultÄtiem jauktÄm darba slodzÄm (95% lasÄ«Å”anas un 5% rakstÄ«Å”anas), kÄ aprakstÄ«ts iepriekÅ” sadaļÄ.
MÄrogoÅ”ana?
Cloud Spanner mezglu skaita palielinÄÅ”ana un samazinÄÅ”ana ir uzdevums ar vienu klikŔķi. Ja vÄlaties Ätri ielÄdÄt datus, varat apsvÄrt iespÄju maksimÄli palielinÄt instanci (mÅ«su gadÄ«jumÄ tas bija 25 mezgli ASV un Austrumu reÄ£ionÄ) un pÄc tam samazinÄt to mezglu skaitu, kas ir piemÄroti jÅ«su parastajai ielÄdei, tiklÄ«dz visi dati ir ievadÄ«ti. datu bÄzÄ, atsaucoties uz 2TB/mezgla ierobežojumu.
Mums tika atgÄdinÄts par Å”o ierobežojumu pat ar daudz mazÄku datu bÄzi. PÄc vairÄkÄm slodzes pÄrbaudÄm mÅ«su datubÄze bija aptuveni 155 GB liela, un, samazinot lÄ«dz 1 mezgla instancei, mÄs saÅÄmÄm Å”Ädu kļūdu:
Mums izdevÄs samazinÄt apjomu no 25 lÄ«dz 2 gadÄ«jumiem, taÄu mÄs bijÄm iestrÄguÅ”i divos mezglos.
Mezglu skaita palielinÄÅ”anu un samazinÄÅ”anu Cloud Spanner klasterÄ« var automatizÄt, izmantojot REST API. Tas var bÅ«t Ä«paÅ”i noderÄ«gi, lai samazinÄtu palielinÄtu sistÄmas slodzi aizÅemtajÄ darba laikÄ.
OLAP vaicÄjumu veiktspÄja?
SÄkotnÄji mÄs plÄnojÄm veltÄ«t ievÄrojamu laiku, lai novÄrtÄtu Spannera Å”o daļu. PÄc vairÄkiem SELECT COUNT mÄs uzreiz sapratÄm, ka testÄÅ”ana bÅ«s Ä«sa un ka Spanner NEBÅŖS piemÄrots OLAP dzinÄjs. NeatkarÄ«gi no mezglu skaita klasterÄ«, vienkÄrÅ”i atlasot rindu skaitu 10 miljonu rindu tabulÄ, bija nepiecieÅ”amas 55ā60 sekundes. TurklÄt jebkurÅ” vaicÄjums, kuram bija nepiecieÅ”ams vairÄk atmiÅas, lai saglabÄtu starprezultÄtus, neizdevÄs ar OOM kļūdu.
SELECT COUNT(DISTINCT(field0)) FROM usertable; ā (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.
Daži skaitļi TPC-H vaicÄjumiem ir atrodami Toda Lipkona rakstÄ Nosql-kudu-spanner-slides.html, 42. un 43. slaidi. Å ie skaitļi atbilst mÅ«su paÅ”u rezultÄtiem (diemžÄl).
4. MÅ«su secinÄjumi
Å emot vÄrÄ paÅ”reizÄjo Cloud Spanner funkciju stÄvokli, ir grÅ«ti iedomÄties, ka tas varÄtu vienkÄrÅ”i aizstÄt jÅ«su esoÅ”o OLTP risinÄjumu, it Ä«paÅ”i, ja jÅ«su vajadzÄ«bas to pÄrspÄj. BÅ«tu jÄpavada ievÄrojams laiks, lai izstrÄdÄtu risinÄjumu Cloud Spanner trÅ«kumiem.
Kad sÄkÄm novÄrtÄt Cloud Spanner, mÄs gaidÄ«jÄm, ka tÄ pÄrvaldÄ«bas funkcijas bÅ«s lÄ«dzvÄrtÄ«gas citiem Google SQL risinÄjumiem vai vismaz ne pÄrÄk tÄlu no tiem. Bet mÅ«s pÄrsteidza pilnÄ«gs rezerves kopiju trÅ«kums un ļoti ierobežota kontrole pÄr piekļuvi resursiem. Nemaz nerunÄjot par bezskatiem, bez vietÄjÄs izstrÄdes vides, neatbalstÄ«tÄm sekvencÄm, JDBC bez DML un DDL atbalsta un tÄ tÄlÄk.
TÄtad, kur iet kÄds, kuram ir jÄmÄro darÄ«jumu datu bÄze? Å Ä·iet, ka tirgÅ« nav neviena risinÄjuma, kas atbilstu visiem lietoÅ”anas gadÄ«jumiem. Ir daudz slÄgtÄ un atvÄrtÄ koda risinÄjumu (daži no tiem ir minÄti Å”ajÄ rakstÄ), katram ir savas stiprÄs un vÄjÄs puses, taÄu neviens no tiem nepiedÄvÄ SaaS ar 99,999% SLA un augstu konsekvenci. Ja jÅ«su galvenais mÄrÄ·is ir augsts SLA un jÅ«s nevÄlaties izveidot pielÄgotu vairÄku mÄkoÅu risinÄjumu, Cloud Spanner var bÅ«t jÅ«su meklÄtais risinÄjums. Bet jums jÄapzinÄs visi tÄ ierobežojumi.
TaisnÄ«bas labad jÄsaka, ka Cloud Spanner sabiedrÄ«bai tika izlaists tikai 2017. gada pavasarÄ«, tÄpÄc ir pamatoti sagaidÄ«t, ka daži no tÄ paÅ”reizÄjiem trÅ«kumiem galu galÄ var izzust (cerams), un, kad tie notiks, tas varÄtu mainÄ«t spÄli. Galu galÄ Cloud Spanner nav tikai Google blakusprojekts. Google to izmanto kÄ pamatu citiem Google produktiem. Un, kad Google nesen Google mÄkoÅkrÄtuvÄ Megastore nomainÄ«ja ar Cloud Spanner, tas ļÄva Google Cloud Storage kļūt ļoti konsekventi globÄlÄ mÄroga objektu sarakstiem (kas joprojÄm tÄ nav AmazonesS3).
TÄtad, vÄl ir cerÄ«ba... mÄs ceram.
Tas ir viss. TÄpat kÄ raksta autors, arÄ« mÄs turpinÄm cerÄt, bet ko jÅ«s par to domÄjat? Raksti komentÄros