Google Cloud Spanner: Maayo, Daotan, Pangit

Hello, mga Khabrovites. Sa naandan, nagpadayon kami sa pagpaambit sa makapaikag nga materyal sa bisperas sa pagsugod sa bag-ong mga kurso. Karon, labi na alang kanimo, gihubad namon ang usa ka artikulo bahin sa Google Cloud Spanner, nga gitakda nga motakdo sa paglansad sa kurso "AWS alang sa mga Developer".

Google Cloud Spanner: Maayo, Daotan, Pangit

Orihinal nga gimantala sa Lightspeed HQ blog.

Ingon usa ka kompanya nga nagtanyag usa ka lainlaing mga solusyon sa cloud-based nga POS alang sa mga retailer, restaurateurs, ug mga negosyante sa online sa tibuuk kalibutan, ang Lightspeed naggamit sa daghang lainlaing mga lahi sa mga platform sa database alang sa lainlaing mga kaso sa transactional, analytics, ug paggamit sa pagpangita. Ang matag usa niini nga mga database platform adunay kaugalingong mga kalig-on ug mga kahuyang.Busa, sa dihang gipaila sa Google ang Cloud Spanner ngadto sa merkado - nagsaad nga mga bahin nga dili makita sa kalibutan sa relational database, sama sa halos walay kinutuban nga horizontal scalability ug usa ka 99,999% service level agreement (SLA) , Dili namo palabyon ang oportunidad nga maangkon siya sa among mga kamot!

Aron mahatagan ang usa ka komprehensibo nga pagtan-aw sa among kasinatian sa Cloud Spanner, ingon man ang mga pamatasan sa pagtimbang-timbang nga among gigamit, tabonan namon ang mosunod nga mga hilisgutan:

  1. Ang atong evaluation criteria
  2. Cloud Spanner sa usa ka Nutshell
  3. Among assessment
  4. Ang among mga nahibal-an

Google Cloud Spanner: Maayo, Daotan, Pangit

1. Ang atong evaluation criteria

Sa dili pa tukion ang mga detalye sa Cloud Spanner, ang pagkaparehas ug kalainan niini sa ubang mga solusyon sa merkado, hisgotan una nato ang bahin sa mga nag-unang mga kaso sa paggamit nga atong nahunahunaan sa dihang naghunahuna kung asa i-deploy ang Cloud Spanner sa atong imprastraktura:

  • Isip kapuli sa (nag-una) nga tradisyonal nga solusyon sa database sa SQL
  • Ingon usa ka solusyon sa OLTP nga adunay suporta sa OLAP

Mubo nga sulat: Alang sa kasayon ​​​​sa pagtandi, gitandi niini nga artikulo ang Cloud Spanner sa mga variant sa MySQL sa mga pamilya sa solusyon sa GCP Cloud SQL ug Amazon AWS RDS.

Gigamit ang Cloud Spanner isip kapuli sa tradisyonal nga solusyon sa database sa SQL

Sa palibot tradisyonal mga database, kung ang oras sa pagtubag alang sa usa ka pangutana sa database moduol o molapas na sa gitakda nang daan nga mga sukaranan sa aplikasyon (panguna tungod sa pagdugang sa gidaghanon sa mga tiggamit ug/o mga hangyo), adunay daghang mga paagi aron makunhuran ang oras sa pagtubag sa mga madawat nga lebel. Bisan pa, kadaghanan niini nga mga solusyon naglakip sa manual nga interbensyon.

Pananglitan, ang una nga lakang nga buhaton mao ang pagtan-aw sa lainlaing mga setting sa database nga may kalabotan sa pasundayag ug ipahiangay kini nga labing maayo nga pagpares sa mga pattern sa senaryo sa paggamit sa aplikasyon. Kung dili pa kini igo, mahimo nimong pilion ang pag-scale sa database nga patindog o pahalang.

Ang pag-scale sa usa ka aplikasyon nag-apil sa pag-update sa instance sa server, kasagaran pinaagi sa pagdugang og daghang mga processor/core, dugang RAM, mas paspas nga storage, ug uban pa. Relational database systems (nga naggamit ug multi-threaded approach) sama sa MySQL nga sukdanan nga maayo sa vertically.

Adunay daghang mga kakulangan sa kini nga pamaagi, apan ang labing klaro mao ang labing kadaghan nga gidak-on sa server sa merkado. Sa higayon nga maabot na ang kinadak-ang limitasyon sa Server Instance, usa na lang ka dalan ang nahibilin: i-scale out.

Ang Scale-out usa ka pamaagi nga nagdugang daghang mga server sa usa ka cluster aron mas maayo nga madugangan ang pasundayag nga linear samtang daghang mga server ang idugang. Kadaghanan tradisyonal Ang mga sistema sa database dili maayo ang sukdanan o wala gayoy sukod. Pananglitan, ang MySQL makahimo sa pag-scale alang sa mga operasyon sa pagbasa pinaagi sa pagdugang sa mga magbabasa sa ulipon, apan dili makasukod sa mga operasyon sa pagsulat.

Sa laing bahin, tungod sa kinaiyahan niini, ang Cloud Spanner dali nga masukod nga pinahigda nga adunay gamay nga interbensyon.

Full featured DBMS isip usa ka serbisyo kinahanglan nga timbang-timbangon gikan sa lain-laing mga panglantaw. Isip basehan, among gikuha ang pinakasikat nga DBMS sa cloud - para sa Google, GCP Cloud SQL ug para sa Amazon, AWS RDS. Sa among ebalwasyon, gipunting namo ang mosunod nga mga kategoriya:

  • Feature mapping: SQL gilapdon, DDL, DML; koneksyon nga mga librarya/konektor, suporta sa transaksyon, ug uban pa.
  • Suporta sa Pag-uswag: Kasayon ​​sa pag-uswag ug pagsulay.
  • Pagsuporta sa Administrasyon: Pagdumala sa instance sama sa pag-scale up/down ug pag-upgrade sa mga higayon; SLA, backup ug recovery; pagkontrol sa seguridad/pag-access.

Paggamit sa Cloud Spanner isip usa ka OLAP-Enabled OLTP Solution

Samtang ang Google dili klaro nga nag-ingon nga ang Cloud Spanner alang sa analytics, kini nagpaambit sa pipila ka mga kinaiya sa ubang mga makina sama sa Apache Impala & Kudu ug YugaByte nga gidisenyo alang sa OLAP nga mga workloads.

Bisan kung adunay gamay ra nga higayon nga ang Cloud Spanner nag-uban sa usa ka makanunayon nga scale-out nga HTAP (Hybrid Transactional/Analytic Processing) nga makina nga adunay usa ka (kapin o dili kaayo) magamit nga set sa feature sa OLAP, sa among hunahuna kini takus sa among atensyon.

Uban niana sa hunahuna, among gitan-aw ang mosunod nga mga kategorya:

  • Pag-load sa datos, pag-index ug suporta sa partisyon
  • Pangutana nga performance ug DML

2. Cloud Spanner sa usa ka Nutshell

Ang Google Spanner usa ka clustered relational database management system (RDBMS) nga gigamit sa Google alang sa pipila sa iyang kaugalingong mga serbisyo. Gihimo kini sa Google nga magamit sa publiko sa mga tiggamit sa Google Cloud Platform sa sayong bahin sa 2017.

Ania ang pipila sa mga hiyas sa Cloud Spanner:

  • Labi nga makanunayon, Scalable RDBMS Cluster: Gigamit ang pag-synchronize sa oras sa hardware aron masiguro ang pagkamakanunayon sa datos.
  • Suporta sa transaksyon sa cross-table: Ang mga transaksyon mahimong mosangkap sa daghang mga lamesa - dili kinahanglan nga limitado sa usa ka lamesa (dili sama sa Apache HBase o Apache Kudu).
  • Primary Key Based Tables: Ang tanan nga mga lamesa kinahanglan adunay gideklarar nga Primary Key (PC), nga mahimong naglangkob sa daghang mga kolum sa lamesa. Ang tabular nga datos gitipigan sa han-ay sa PC, nga naghimo niini nga episyente ug paspas alang sa pagpangita sa PC. Sama sa uban nga mga sistema nga nakabase sa PC, ang pagpatuman kinahanglan nga modelo batok sa giplano nang daan nga mga kaso sa paggamit aron makab-ot labing maayo nga performance.
  • Mga striped nga lamesa: Ang mga lamesa mahimong adunay pisikal nga pagsalig sa usag usa. Ang mga laray sa lamesa sa bata mahimong ipares sa mga laray sa lamesa sa ginikanan. Kini nga pamaagi nagpadali sa pagpangita alang sa mga relasyon nga mahimong matino sa yugto sa pagmodelo sa datos, pananglitan, kung ibutang ang mga kustomer ug ang ilang mga invoice nga magkauban.
  • Mga indeks: Gisuportahan sa Cloud Spanner ang mga sekondaryang indeks. Ang usa ka indeks naglangkob sa mga na-index nga mga kolum ug tanan nga mga kolum sa PC. Opsyonal, ang indeks mahimo usab nga maglangkob sa uban nga dili na-index nga mga kolum. Ang indeks mahimong i-interleaved sa parent table aron mapadali ang mga pangutana. Daghang mga pagdili ang magamit sa mga indeks, sama sa labing kadaghan nga dugang nga mga kolum nga mahimong tipigan sa usa ka indeks. Usab, ang mga pangutana pinaagi sa mga indeks mahimong dili ingon ka prangka sama sa ubang RDBMS.

"Gipili sa Cloud Spanner ang usa ka indeks nga awtomatiko lamang sa talagsa nga mga kaso. Sa partikular, ang Cloud Spanner dili awtomatik nga mopili ug sekondaryang indeks kon ang pangutana mangayo ug bisan unsang mga kolum nga wala gitipigan sa indeks ".

  • Service Level Agreement (SLA): Pag-deploy sa usa ka rehiyon nga adunay 99,99% SLA; multi-region deployments nga adunay 99,999% SLA. Samtang ang SLA mismo usa ra ka kasabutan ug dili usa ka garantiya sa bisan unsang klase, nagtuo ako nga ang mga tawo sa Google adunay pipila ka lisud nga datos aron makahimo usa ka kusgan nga pag-angkon. (Alang sa pakisayran, ang 99,999% nagpasabut nga 26,3 segundos nga downtime sa serbisyo matag bulan.)
  • Dugang pa: https://cloud.google.com/spanner/

Mubo nga sulat: Ang proyekto sa Apache Tephra nagdugang abante nga suporta sa transaksyon sa Apache HBase (gipatuman usab karon sa Apache Phoenix isip usa ka beta).

3. Ang atong assessment

Mao nga, nabasa namong tanan ang mga pahayag sa Google bahin sa mga benepisyo sa Cloud Spanner - halos walay limitasyon nga horizontal scaling samtang nagmintinar sa taas nga pagkamakanunayon ug taas kaayo nga SLA. Bisan kung kini nga mga pag-angkon, sa bisan unsang kaso, lisud kaayo nga makab-ot, ang among katuyoan dili ang pagsalikway niini. Hinunoa, mag-focus kita sa ubang mga butang nga giatiman sa kadaghanan sa mga tiggamit sa database: parity ug usability.

Gi-rate namo ang Cloud Spanner isip kapuli sa Sharded MySQL

Ang Google Cloud SQL ug Amazon AWS RDS, duha sa pinakasikat nga OLTP database sa cloud market, adunay dako kaayong feature set. Bisan pa, aron ma-scale kini nga mga database lapas sa gidak-on sa usa ka node, kinahanglan nimo nga himuon ang pagbahin sa aplikasyon. Kini nga pamaagi nagmugna og dugang nga pagkakomplikado alang sa mga aplikasyon ug administrasyon. Among gitan-aw kon sa unsang paagi mohaum ang Spanner sa senaryo sa paghiusa sa daghang mga shards ngadto sa usa ka higayon ug unsa nga mga bahin (kon aduna man) ang kinahanglang isakripisyo.

Suporta alang sa SQL, DML ug DDL, ingon man ang konektor ug mga librarya?

Una, sa pagsugod sa bisan unsang database, kinahanglan nimo nga maghimo usa ka modelo sa datos. Kung sa imong hunahuna mahimo nimong ikonektar ang JDBC Spanner sa imong paborito nga tool sa SQL, imong mahibal-an nga mahimo nimong ipangutana ang imong data niini, apan dili nimo magamit kini aron maghimo usa ka lamesa o pag-update (DDL) o bisan unsang pagsulud / pag-update / pagtangtang. mga operasyon (DML). Ang opisyal nga JDBC sa Google dili usab mosuporta.

"Ang mga drayber dili karon nagsuporta sa mga pahayag sa DML o DDL."
Dokumentasyon sa Spanner

Ang sitwasyon dili mas maayo sa GCP console - mahimo ka lang magpadala sa PILI nga mga pangutana. Swerte kay naay JDBC driver nga DML ug DDL support gikan sa community apil na ang transactions github.com/olavloite/spanner-jdbc. Samtang kini nga drayber mapuslanon kaayo, ang pagkawala sa kaugalingon nga drayber sa JDBC sa Google makapakurat. Maayo na lang, ang Google nagtanyag og medyo lapad nga suporta sa librarya sa kliyente (base sa gRPC): C#, Go, Java, node.js, PHP, Python, ug Ruby.

Ang hapit-mandatory nga paggamit sa Cloud Spanner's custom APIs (tungod sa kakulang sa DDL ug DML sa JDBC) moresulta sa pipila ka mga limitasyon alang sa mga may kalabutan nga mga bahin sa code sama sa koneksyon pooling o database binding frameworks (sama sa Spring MVC). Kasagaran, kung mogamit ka sa JDBC, gawasnon ka sa pagpili sa imong paborito nga pool sa koneksyon (eg HikariCP, DBCP, C3PO, ug uban pa) nga gisulayan ug maayo ang pagtrabaho. Sa kaso sa mga custom nga Spanner API, kinahanglan kitang mosalig sa mga frameworks/binding/session pool nga kita mismo ang nagbuhat.

Ang panguna nga yawe (PC) oriented nga disenyo nagtugot sa Cloud Spanner nga paspas kaayo kung mag-access sa datos pinaagi sa PC, apan nagpaila usab sa pipila ka mga isyu sa pangutana.

  • Dili nimo ma-update ang bili sa usa ka panguna nga yawe; Kinahanglan nimong papason una ang orihinal nga entry sa PC ug isulod kini pag-usab sa bag-ong kantidad. (Sama kini sa ubang PC oriented database/storage engines.)
  • Ang bisan unsa nga UPDATE ug DELETE nga mga pahayag kinahanglan nga mag-specify sa PC sa WHERE, busa, dili mahimong walay sulod DELETE ang tanan nga mga pahayag - kinahanglan kanunay adunay usa ka subquery, pananglitan: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • Kakulang sa usa ka kapilian sa auto-increment o usa ka butang nga susama nga nagtakda sa pagkasunod-sunod alang sa uma sa PC. Aron kini molihok, ang katumbas nga kantidad kinahanglan himuon sa bahin sa aplikasyon.

Mga sekondaryang indeks?

Ang Google Cloud Spanner adunay built-in nga suporta alang sa mga sekondaryang indeks. Kini usa ka nindot kaayo nga bahin nga dili kanunay anaa sa ubang mga teknolohiya. Ang Apache Kudu dili karon nagsuporta sa mga sekondaryang indeks, ug ang Apache HBase dili direktang nagsuporta sa mga indeks, apan makadugang niini pinaagi sa Apache Phoenix.

Ang mga indeks sa Kudu ug HBase mahimong mamodelo ingon nga usa ka bulag nga lamesa nga adunay lainlain nga komposisyon sa panguna nga mga yawe, apan ang atomicity sa mga operasyon nga gihimo sa lamesa sa ginikanan ug mga may kalabutan nga mga lamesa sa indeks kinahanglan nga himuon sa lebel sa aplikasyon ug dili hinungdanon nga ipatuman sa husto.

Sama sa gihisgutan sa pagrepaso sa Cloud Spanner, ang mga indeks niini mahimong lahi sa mga indeks sa MySQL. Sa ingon, ang espesyal nga pag-atiman kinahanglan himuon sa pagtukod sa pangutana ug pag-profile aron masiguro nga ang husto nga indeks gigamit kung diin kini kinahanglan.

Representasyon?

Usa ka popular kaayo ug mapuslanon nga butang sa usa ka database mao ang mga pagtan-aw. Mahimo silang mapuslanon alang sa daghang gidaghanon sa mga kaso sa paggamit; akong duha ka paborito mao ang logical abstraction layer ug ang security layer. Ikasubo WALA gisuportahan sa Cloud Spanner ang mga panan-aw. Bisan pa, kini usa ka bahin nga naglimite kanamo, tungod kay wala’y lebel sa lebel sa kolum alang sa mga pagtugot sa pag-access diin ang mga pagtan-aw mahimong usa ka madawat nga solusyon.

Tan-awa ang dokumentasyon sa Cloud Spanner para sa usa ka seksyon nga nagdetalye sa mga quota ug limitasyon (spanner/quota), adunay usa ka partikular nga mahimong problema alang sa pipila ka mga aplikasyon: Ang Cloud Spanner gikan sa kahon adunay labing taas nga 100 nga mga database matag higayon. Dayag nga kini mahimong usa ka dakong babag alang sa usa ka database nga gilaraw aron sukdon sa kapin sa 100 ka mga database. Maayo na lang, pagkahuman nakigsulti sa among teknikal nga representante sa Google, nahibal-an namon nga kini nga limitasyon mahimong madugangan sa halos bisan unsang kantidad pinaagi sa Suporta sa Google.

Suporta sa kalamboan?

Nagtanyag ang Cloud Spanner og medyo disente nga suporta sa programming language alang sa pagtrabaho kauban ang API niini. Ang opisyal nga gisuportahan nga mga librarya naa sa lugar sa C#, Go, Java, node.js, PHP, Python, ug Ruby. Ang dokumentasyon medyo detalyado, apan sama sa ubang mga teknolohiya, ang komunidad gamay ra kung itandi sa labing inila nga mga teknolohiya sa database, nga mahimong moresulta sa daghang oras nga gigugol sa dili kaayo kasagaran nga mga kaso sa paggamit o mga problema.

Unsa man ang bahin sa suporta sa lokal nga kalamboan?

Wala kami nakit-an nga paagi aron makahimo usa ka pananglitan sa Cloud Spanner sa lugar. Ang labing duol nga among nakuha usa ka imahe sa Docker cockroachDBnga susama sa prinsipyo, apan lahi kaayo sa praktis. Pananglitan ang CockroachDB mahimong mogamit sa PostgreSQL JDBC. Tungod kay ang palibot sa pag-uswag kinahanglan nga hapit sa mahimo sa palibot sa produksiyon, ang Cloud Spanner dili maayo tungod kay kinahanglan nimo nga magsalig sa usa ka tibuuk nga pananglitan sa Spanner. Aron makadaginot sa mga gasto, makapili ka ug usa ka pananglitan sa rehiyon.

Pagsuporta sa administrasyon?

Ang paghimo usa ka pananglitan sa Cloud Spanner yano ra kaayo. Kinahanglan ka lang nga mopili tali sa paghimo sa usa ka multi-rehiyon o usa ka-rehiyon nga pananglitan, ipiho ang (mga) rehiyon ug ang gidaghanon sa mga node. Sa wala pay usa ka minuto, ang instance moandar na.

Daghang elementarya nga sukatan ang direktang magamit sa panid sa Spanner sa Google Console. Ang mas detalyado nga mga panan-aw magamit pinaagi sa Stackdriver, diin mahimo ka usab magtakda sa metric threshold ug alerto nga mga palisiya.

Pag-access sa mga kapanguhaan?

Nagtanyag ang MySQL og daghang ug kaayo nga granular nga pagtugot sa user / mga setting sa papel. Dali nimong ipasibo ang pag-access sa usa ka piho nga lamesa, o bisan usa lang ka subset sa mga kolum niini. Ang Cloud Spanner naggamit sa Google Identity & Access Management (IAM) nga himan, nga nagtugot lamang kanimo sa pagtakda sa mga palisiya ug mga pagtugot sa taas kaayo nga lebel. Ang labing butil nga kapilian mao ang pagtugot sa lebel sa database, nga dili angay sa kadaghanan sa mga kaso sa produksiyon. Kini nga pagdili nagpugos kanimo sa pagdugang sa dugang nga mga lakang sa seguridad sa imong code, imprastraktura, o pareho aron mapugngan ang dili awtorisado nga paggamit sa mga kapanguhaan sa Spanner.

Mga backup?

Sa yano nga pagkasulti, wala’y mga backup sa Cloud Spanner. Samtang ang taas nga mga kinahanglanon sa SLA sa Google makasiguro nga dili ka mawad-an sa bisan unsang datos tungod sa pagkapakyas sa hardware o database, sayup sa tawo, mga depekto sa aplikasyon, ug uban pa. Kitang tanan nahibal-an ang lagda: ang taas nga pagkaanaa dili kapuli sa usa ka maalamon nga estratehiya sa pag-backup. Sa pagkakaron, ang bugtong paagi sa pag-back up sa datos mao ang pag-programa niini gikan sa database ngadto sa lain nga storage environment.

Pangutana nga performance?

Gigamit namo ang Yahoo! sa pag-load sa datos ug mga pangutana sa pagsulay. Benchmark sa Pag-alagad sa Cloud. Ang talaan sa ubos nagpakita sa B YCSB nga workload nga adunay 95% read to 5% write ratio.

Google Cloud Spanner: Maayo, Daotan, Pangit

* Ang load test gipadagan sa n1-standard-32 Compute Engine (CE) (32 vCPUs, 120 GB memory) ug ang test instance dili gayud ang bottleneck sa mga pagsulay.
** Ang kinatas-ang gidaghanon sa mga thread sa usa ka YCSB instance kay 400. Sa kinatibuk-an, unom ka parallel instances sa YCSB nga mga pagsulay ang kinahanglang ipadagan aron makakuha og total nga 2400 ka thread.

Sa pagtan-aw sa mga resulta sa benchmark, ilabi na ang kombinasyon sa CPU load ug TPS, klaro natong makita nga ang Cloud Spanner nga mga timbangan maayo kaayo. Ang dako nga load nga gihimo sa usa ka dako nga gidaghanon sa mga hilo gi-offset sa usa ka dako nga gidaghanon sa mga node sa Cloud Spanner cluster. Bisan kung ang latency tan-awon nga taas, labi na kung nagdagan sa 2400 nga mga hilo, mahimo’g kinahanglan nga susihon pag-usab gamit ang 6 nga gagmay nga mga higayon sa makina sa pagkalkula aron makakuha og mas tukma nga mga numero. Ang matag instance magpadagan ug usa ka YCSB test imbes nga usa ka dako nga CE instance nga adunay 6 ka parallel nga pagsulay. Gipasayon ​​niini ang pag-ila tali sa mga paglangan sa hangyo sa Cloud Spanner ug mga paglangay nga gidugang sa koneksyon sa network tali sa Cloud Spanner ug sa pananglitan sa CE nga nagpadagan sa pagsulay.

Giunsa pagbuhat ang Cloud Spanner ingon usa ka OLAP?

Pagbahinbahin?

Ang pagbahin sa datos ngadto sa pisikal ug/o lohikal nga independente nga mga bahin, nga gitawag ug partitions, usa ka popular kaayo nga konsepto nga makita sa kadaghanang OLAP nga makina. Ang mga partisyon mahimong makapauswag pag-ayo sa pasundayag sa pangutana ug pagpadayon sa database. Ang dugang nga pagtuki sa partitioning mahimong usa ka bulag nga (mga) artikulo, mao nga ato lang hisgutan ang kamahinungdanon sa pagbaton ug partitioning scheme ug sub-partitioning. Ang katakus sa pagbahin sa datos sa mga partisyon ug labi pa sa mga sub-partisyon mao ang yawe sa paghimo sa mga analytical nga pangutana.

Wala gisuportahan sa Cloud Spanner ang mga partisyon matag usa. Gibulag niini ang datos sa sulod sa gitawag nga split-s base sa nag-unang yawe han-ay. Awtomatikong gihimo ang partitioning aron mabalanse ang load sa Cloud Spanner cluster. Usa ka magamit kaayo nga bahin sa Cloud Spanner mao ang pagbahin sa base nga load sa usa ka parent table (usa ka lamesa nga wala gi-interleaved sa lain). Awtomatikong makit-an ang Spanner kung adunay kini split data nga mabasa nga mas kanunay kay sa datos sa uban split-ah, ug mahimong magdesisyon sa usa ka dugang nga panagbulag. Sa ingon, daghang mga node ang mahimong maapil sa usa ka hangyo, nga epektibo usab nga nagdugang sa throughput.

Nagkarga sa datos?

Ang paagi sa Cloud Spanner alang sa kinabag-an nga datos parehas sa usa ka regular nga pag-upload. Alang sa labing taas nga pasundayag, kinahanglan nimong sundon ang pipila ka mga panudlo, lakip ang:

  • Pagsunud sa imong data pinaagi sa panguna nga yawe.
  • Bahina sila sa 10 *gidaghanon sa mga node indibidwal nga mga seksyon.
  • Paghimo usa ka hugpong sa mga buluhaton sa mamumuo nga nagkarga sa datos nga managsama.

Kini nga data load naggamit sa tanang Cloud Spanner node.

Gigamit namo ang A YCSB workload aron makamugna og 10M row dataset.

Google Cloud Spanner: Maayo, Daotan, Pangit

* Ang load test gipadagan sa n1-standard-32 compute engine (32 vCPUs, 120 GB memory) ug ang test instance dili gayud ang bottleneck sa mga pagsulay.
** Ang usa ka 1 node setup dili girekomendar alang sa bisan unsang produksyon nga workload.

Sama sa gihisgutan sa ibabaw, ang Cloud Spanner awtomatikong nagproseso sa mga split depende sa ilang load, mao nga ang mga resulta molambo human sa pipila ka sunod-sunod nga mga pag-uli sa pagsulay. Ang mga resulta nga gipresentar dinhi mao ang pinakamaayong resulta nga among nadawat. Sa pagtan-aw sa mga numero sa ibabaw, atong makita kung giunsa ang Cloud Spanner nga mga timbangan (maayo) samtang ang gidaghanon sa mga node sa cluster nagdugang. Ang mga numero nga makita kay ubos kaayo nga average latency, nga sukwahi sa mga resulta gikan sa nagkasagol nga workloads (95% read ug 5% write) sama sa gihulagway sa seksyon sa ibabaw.

Pag-scale?

Ang pagdugang ug pagkunhod sa gidaghanon sa mga Cloud Spanner node usa ka usa ka pag-klik nga buluhaton. Kung gusto nimo nga dali nga ma-load ang data, mahimo nimong hunahunaon ang pagpausbaw sa pananglitan sa labing kataas (sa among kaso kini 25 nga mga node sa rehiyon sa US-EAST) ug dayon pakunhuran ang gidaghanon sa mga node nga angay alang sa imong normal nga pagkarga pagkahuman sa tanan nga datos. sa database, ibutang sa hunahuna ang 2 TB/node limit.

Gipahinumduman kami niini nga limitasyon bisan sa mas gamay nga database. Pagkahuman sa daghang pagdagan sa pagsulay sa pagkarga, ang among database mga 155 GB ang kadako, ug kung gipaubos sa usa ka pananglitan sa 1 node, nakuha namon ang mosunod nga sayup:

Google Cloud Spanner: Maayo, Daotan, Pangit

Nahimo namon ang pagkunhod gikan sa 25 hangtod sa 2 nga mga higayon, apan kami natanggong sa duha ka mga node.

Ang pagpataas ug pagkunhod sa gidaghanon sa mga node sa Cloud Spanner cluster mahimong automated gamit ang REST API. Kini mahimong labi ka mapuslanon alang sa pagkunhod sa dugang nga load sa sistema sa panahon sa busy nga mga oras.

performance sa pangutana sa OLAP?

Sa sinugdan kami nagplano sa paggahin ug igong panahon sa among pagtimbang-timbang sa Spanner niining bahina. Human sa pipila ka SELECT COUNTs, naamgohan dayon namo nga mubo ra ang pagsulay ug ang Spanner DILI angayan nga makina para sa OLAP. Bisan unsa pa ang gidaghanon sa mga node sa cluster, ang pagpili lamang sa gidaghanon sa mga laray sa usa ka 10M row table nagkinahanglan og 55 ngadto sa 60 segundos. Usab, ang bisan unsang pangutana nga nanginahanglan dugang nga memorya sa pagtipig sa mga intermediate nga resulta napakyas sa usa ka sayup sa OOM.

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

Ang pila ka numero para sa mga pangutana sa TPC-H makita sa artikulo ni Todd Lipcon nosql-kudu-spanner-slides.html, mga slide 42 ug 43. Kini nga mga numero nahiuyon sa atong kaugalingong mga resulta (sa kasubo).

Google Cloud Spanner: Maayo, Daotan, Pangit

4. Ang atong mga kaplag

Tungod sa kasamtangan nga kahimtang sa mga feature sa Cloud Spanner, lisud kini tan-awon isip usa ka yano nga kapuli sa usa ka kasamtangan nga solusyon sa OLTP, ilabi na kung ang imong mga panginahanglan labaw pa niini. Usa ka mahinungdanong gidugayon sa panahon ang kinahanglang igugol sa paghimog solusyon sa mga kakulangan sa Cloud Spanner.

Sa dihang gisugdan namo ang pagtimbang-timbang sa Cloud Spanner, among gipaabot nga ang mga feature sa pagdumala niini mahisama sa, o labing menos dili layo sa, ubang mga solusyon sa Google SQL. Apan natingala kami sa hingpit nga kakulang sa mga backup ug limitado kaayo nga kontrol sa pag-access sa mga kapanguhaan. Wala pay labot ang walay mga panglantaw, walay lokal nga kalamboan nga palibot, dili suportadong mga han-ay, JDBC nga walay DML ug DDL nga suporta, ug uban pa.

Busa, asa moadto alang sa usa nga kinahanglan nga mag-scale sa usa ka transactional database? Ingon og wala'y usa ka solusyon sa merkado nga mohaum sa tanan nga mga kaso sa paggamit. Adunay daghang mga sirado ug bukas nga tinubdan nga mga solusyon (ang pipila niini gihisgutan niini nga artikulo), ang matag usa adunay ilang kaugalingong mga kalig-on ug mga kahuyang, apan walay usa kanila ang nagtanyag sa SaaS nga adunay 99,999% SLA ug taas nga lebel sa pagkamakanunayon. Kung ang usa ka taas nga SLA mao ang imong panguna nga katuyoan ug dili nimo gusto nga maghimo sa imong kaugalingon nga solusyon alang sa daghang mga panganod, ang Cloud Spanner mahimo’g mao ang solusyon nga imong gipangita. Apan kinahanglan nimong mahibal-an ang tanan nga mga limitasyon niini.

Aron mahimong patas, ang Cloud Spanner gibuhian lamang sa publiko sa tingpamulak sa 2017, mao nga makatarunganon nga magdahum nga ang pipila sa mga kasamtangan nga mga sayup niini mahimong sa kadugayan mawala (hinaut nga), ug kung kini mahitabo, kini mahimo nga usa ka game-changer. Human sa tanan, ang Cloud Spanner dili lang usa ka side project alang sa Google. Gigamit kini sa Google isip basihan sa ubang mga produkto sa Google. Ug sa dihang gipulihan sa Google bag-o lang ang Megastore sa Google Cloud Storage gamit ang Cloud Spanner, gitugotan niini ang Google Cloud Storage nga mahimong makanunayon kaayo alang sa mga lista sa butang sa usa ka global scale (nga dili gihapon ang kaso sa Amazon's S3).

So, naa pay paglaom... we hope.

Mao ra. Sama sa tagsulat sa artikulo, nagpadayon usab kami sa paglaum, apan unsa ang imong hunahuna bahin niini? Isulat sa mga komento

Among gidapit ang tanan sa pagbisita sa among libre nga webinar diin kami mosulti kanimo sa detalye bahin sa kurso "AWS alang sa mga Developer" gikan sa OTUS.

Source: www.habr.com

Idugang sa usa ka comment