Google Cloud Spanner: bonum, malum, turpis

Salve, Khabrovsk habitant. Ut solet, opportuna materia ante initium novorum cursuum communicare pergimus. Hodie, praesertim pro vobis, articulum de Google Cloud Spanner edidimus, intempestivum cum launcho cursui congruere. "AWS for Developers".

Google Cloud Spanner: bonum, malum, turpis

Primum in editis Lightspeed HQ blog.

Cum societas quae varias solutiones nubium substructarum POS praebet venditores, restauratores, et venditores online circa mundum, Lightspeed pluribus diversis generibus suggestorum datorum utitur pro variis transactionibus, analyticis, et usuum casuum quaerendi. Uterque horum suggestuum database suas vires et infirmitates habet, quapropter cum Google Cloud Spanner ad forum introduxit - lineamenta promittens in mundo databases relationum invisibilis, sicut fere illimitata scalabilitatis horizontalis et consensus gradus 99,999% servitii (SLA); β€” occasionem non potuimus ad manus nostras comparandas!

Ad investigationem comprehensivam experientiae nostrae cum Cloud Spanner, necnon normas aestimationis quas adhibuimus, sequentia argumenta operiemus.

  1. Criteria nostra iudicium
  2. Cloud Spanner in a breviter intimatum
  3. Nostra aestimatione
  4. nostra inventa

Google Cloud Spanner: bonum, malum, turpis

1. nostrum iudicium criteriis

Priusquam in speciei Cloud Spanner tribuo, eius similitudines et differentias cum aliis in mercatu solutionibus, primum primum loqui de casuum principalium usu in animo habuimus cum considerando ubi Cloud Spanner in infrastructura nostra explicaturus est:

  • Ut substitutio (praedominantis) traditionalis SQL database solutionem
  • Quomodo solutionem OLTP cum OLAP auxilio

Note: Pro simplicitate et facilitate comparationis, hic articulus Cloud Spanner comparat cum MySQL variantibus GCP Cloud SQL et Amazonum AWS RDS familiae solutionis.

Using Cloud Spanner ut tortor pro traditional SQL database solution

In elit traditum databases, cum responsionis interrogationis datorum tempus appropinquat vel etiam excedit liminum applicationis praefinitam (maxime ob augmentum in numero utentium et/vel petitionum), plures modi sunt reducere responsionis tempus ad gradus acceptabiles. Maxime autem harum solutionum interventus manualis involvunt.

Exempli gratia, primus gradus sumendi est videre varias parametris datorum relatas perficientes et eas ad optimas applicationes usus casus exemplaria modulare. Si hoc parum est, eligere potes perpendiculariter vel horizontaliter scandere datorum.

Vertice scandens applicatio ad instar ministrantis infert, typice addito processors/cores, more ram, ocius repositione, etc. Addens plus copiarum ferramentorum proventus in augendis faciendis database, praesertim in transactionibus in secundo, et transactionis latency pro systematibus OLTP. Systemata relativa datorum (quae multi- lina utuntur) qualia sunt MySQL perpendiculariter scandere.

Ad hunc accessum plura sunt incommoda, sed maxime conspicuum est maximum servo magnitudinem in foro. Cum ad terminum maximae instantiae servientis ventum est, una tantum optionis superest: scandit horizontalem.

Scala horizontalis accessus est ubi plures servi ad botrum accedunt, specimen perficiendi linearly augendi sicut numerus ministrantium additur. Maioritas traditum Systemata Database non scandunt aeque vel omnino scandere non possunt. Exempli gratia, MySQL scandere potest transversaliter ad operationes legere, addendo servum legentium, sed non potest scandere transversaliter pro scribit.

Contra, ob naturam suam, Cloud Spanner facile cum minimis interventu horizontaliter scandere potest.

plene featured DBMS in ministerium ex diversis angulis aestimari debet. Fundamento, in nube populares DBMS cepimus - pro Google, GCP Cloud SQL et pro Amazonibus, AWS RDS. In aestimatione nostra sequenti genera notavimus:

  • Pluma mapping: extent SQL, DDL, DML; connexiones bibliothecarum / connexionum, subsidii transactionis, et sic porro.
  • Development firmamentum: Facilis progressio et probatio.
  • Administratio adminiculum: instantia procuratio, exempli gratia, instantiae ascendentis et ascendentis; SLA, tergum et recuperatio; securitatem / imperium accessum.

Per Cloud Spanner sicut in OLAP-enabled OLTP solution

Dum Google diserte affirmat Cloud Spanner processui analytici designatum esse, attributa quaedam cum aliis machinis communicat ut Apache Impala & Kudu et IugaByte, quae in laboribus OLAP designantur.

Etiamsi casu tantum exiguum erat quod Cloud Spanner scalam constantem-e HTAP (hybridorum processus transactionalis/analyticorum) machinam cum instrumento (plus minusve) OLAP apposito utendo (inclusam) fore putamus attentione nostra dignam esse.

Ita res sequentes categoriae inspeximus;

  • Data loading, indices et partitiones sustentationes
  • Query euismod et DML

2. Cloud Spanner in a breviter intimatum

Google Spanner fasciculata systematis datorum relationis (RDBMS) quod pro pluribus propriis officiis utitur Google. Google plerumque ad Google Cloud Platform usorum in primis MMXVII praesto fuit.

Hic nonnulla de Cloud Spanneri attributa sunt;

  • Magnopere Congruentes Scalable RDBMS Cluster: hardware temporis synchronisation utitur ad constanciam faciendam data.
  • Transactio crucis-tabula sustentatio: Transactiones plures tabulas complecti possunt - non necessario ad unam tabulam circumscriptam (dissimile Apache HBase vel Apache Kudu).
  • Primaria clavis tabulis fundata: Omnes tabulae praecipuam clavem habere debent (PC), quae ex multiplicibus columnis in tabula consistere potest. Tabulae notitiae in PC ordine repositae sunt, efficiens ut valde efficax et ieiunans pro PC inquisitione. Sicut alii systemata PC-substructio, exsecutio exemplar adhiberi debet cum prae-disposito casuum usu in mente obtinenda. optimus perficientur.
  • Tabulae striatae: Tabulae habere possunt clientelas corporis inter se. Ordines in mensa puerili contra ordines in tabula parentis aequari possunt. Hic aditus accelerat inquisitionem relationum quae invenire possunt in data periodo exemplaris, sicut in clientibus co-locatis eorumque mercium.
  • Indices: Cloud Spanner subsidia secundaria indices. Index constat columnis et omnibus PC columnis. Si placet, index etiam alias columnas non indexas continere potest. Index cum tabula parente interponi potest ad interrogationes accelerandas. Complures restrictiones ad indices valent, ut numerus maximus adiectis columnis in indice repositus. Item, queries per indices non possunt esse tam directe quam in aliis RDBMSs.

"Cloud Spanner indicem solum in raris causis automatice eligit. Praesertim Cloud Spanner non sponte eligit indicem secundarium si quaesitum petit quaslibet columnas quae in repositae non sunt index ".

  • Service Level Agreement (SLA): instruere in una regione cum SLA 99,99%; multi-instrumenta regionalia cum 99,999% SLA. Dum ipsa SLA iusta est pactio et nulla cautio cuiuslibet generis, credo folks apud Google aliquam duram datam habere ut tam validum clamorem faceret. (Pro reference, 99,999% significat 26,3 seconds servitii unavailability per mensem.)
  • More: https://cloud.google.com/spanner/

Note: Project Apache Tephra ad Apache HBase subsidia auctam rem addit (etiam nunc in Apache Phoenice sicut beta implementum).

3. nostrum taxationem

Ita omnia Google de beneficiis Cloud Spanner - scandendis horizontalibus paene illimitata legimus, servata alta constantia et altissima SLA. Etsi haec necessaria sunt, utique difficillimum est consequi, ea refellere propositum non fuit. Instead, focus in alia quae maxime curant de utentibus datorum: pari et usabilitate.

Nos aestimari Cloud Spanner ut a replacement pro MySQL Shared

Google Cloud SQL et Amazonum AWS RDS, duo ex popularibus OLTP DBMSs in foro nubili, amplissima lineamenta habent. Sed ut has databases ultra unius nodi magnitudinem scandas, applicationem partitionis praestare debes. Aditus hic addit multiplicitatem ad tam applicationes quam ad administrationem. Inspeximus quomodo Spanner convenit in missionem multiplices shards componendi in unam instantiam et quaenam lineamenta (si) immolari possint.

SQL, DML et DDL subsidium, necnon connector et bibliothecae?

Primum, cum ab aliquo database incipias, exemplar notitiarum creare debes. Si putas te JDBC Spanner coniungere ad instrumentum dilectionis SQL, invenies quod cum eo notitias tuas perscrutari potes, sed ea uti non potes ad mensam creare vel mutare (DDL) vel aliquam insertam/renovare/delere operationes (DML). Google officialis JDBC neutrum horum non adiuvat.

"Coegis DML vel DDL dictas non sustinent".
Spanner Documenta

Res melior non est cum GCP consolando - modo mittere potes SELECTA queries. Feliciter est auriga JDBC cum auxilio DML et DDL e communitate, transactionibus inclusis github.com/olavloite/spanner-jdbc. Dum haec agitator perquam utilis est, defectus aurigae JDBC propriae Google mirandus est. Google feliciter subsidia clientium librariorum satis ampla praebet (ex grRPC): C#, Vade, Java, node.js, PHP, Python, et Ruby.

Usus Consuetudinis APIs Cloud Spanner fere nuncius (ob defectum DDL et DML in JDBC) proventus in quibusdam limitationibus pro areis codicis relatis, ut nexus lacuum vel compagum ligaturae datorum (v.g. Spring MVC). Typice, cum JDBC utens, liberum tibi est eligere nexum gratissimum piscinae (ut HikariCP, DBCP, C3PO, etc.) quod probetur et bene operatur. In consuetudine Spanner APIs nitendum nobis est compagibus/ligandis lacunis/sessionibus quas nosmetipsos creavimus.

Primaria clavis (PC) Consilium centricum Cloud Spanner permittit celerrime esse cum notitia accessionis per PC, sed etiam quaestiones nonnullas interrogationis inducit.

  • Primarium valorem clavem renovare non potes; Primum ingressum ab PC originali delere debes et novo valore illum restituere. (Hoc est simile aliis PC ordinatis database/repono machinas).
  • Quaevis UPDATE et DELETA elocutiones PC designare debent in WHERE, ergo inanes omnes enuntiationes delere non possunt - semper subactio esse debet, exempli gratia: UPDATE xxx UBI id IN (SELECT id FROM table1)
  • Defectus optionis auto-incrementorum vel aliquid simile quod sequentia pro PC agro ponit. Ad hoc opus, valor respondentis in parte applicationis creari debet.

Secundae indices?

Google Cloud Spanner subsidia pro indicibus secundariis aedificavit. Hoc est valde nice quod in aliis technologiis non semper adest. Apache Kudu nunc secundarios indices omnino non sustinet, et Apache HBase indices directe non adiuvat, sed eas per Apache Phoenix addere potest.

Indices in Kudu et HBase exemplari possunt ut singulae tabulae cum diversa compositione primariarum clavium, sed atomicity operationum in tabula parente factarum et index tabularum adiunctorum in applicatione plano fieri debet et non levis est ad recte efficiendum.

Ut in recensio Cloud Spanner, eius indices a MySQL indice discrepare possunt. Specialis igitur cura adhibenda est in struendis quaestionibus et profilingibus curandis ut index proprius adhibeatur ubi opus est.

Repraesentatio?

Obiectum valde populare et utile in datorum opinione est. Multis casibus uti possunt; Duo favores mei sunt tabulata logica abstractio et accumsan securitatis. Infeliciter, Cloud Spanner views non sustinet. Sed hoc solum ex parte nos limitat quia granularitas nulla est pro accessu licentiarum in gradu columnae ubi sententiarum solutionem viabilem esse posset.

Documenta Nubis Spanner pro sectione quae singula quotas et restrictiones (spanner / quotas), una praesertim quae problematica pro aliquibus applicationibus esse potest: Cloud Spanner e archa terminum habet maximi 100 databases per instanciam. Patet, hoc potest esse maior bottleneck pro database quod est ad scandendum super 100 databases. Feliciter, postquam locutus est cum nostro Google technico repraesentativo, invenimus hunc modum augeri posse ad aliquem prope valorem per Google Support.

Progressus auxilio?

Cloud Spanner praebet subsidium programmandi linguam satis honestam ad operandum cum suis API. Bibliothecae publice sustentatae sunt in locis C#, Ite, Java, nodi.js, PHP, Python et Ruby. Documenta satis explicata sunt, sed sicut cum aliis technologiis provectis, communitas admodum parva comparatur cum technologiarum datorum popularibus, quae ad tempus plus temporis solvendis casibus vel problematibus minus communibus uti possunt.

Quid ergo de auxilio loci progressionem?

Viam ad creandum Nubem Spanner in praemissis non invenimus. Artissimum rem cepimus erat imago Docker. cockroachDBquod est in principio simile, sed opere multum dissimile. Pro exemplo, CockroachDB uti potest PostgreSQL JDBC. Cum ambitus evolutionis tam prope ad productionem rerum quam maxime esse debet, Cloud Spanner non est specimen cum exemplo plenae Spanner niti debet. Ad impensas liberandas, exempli gratia unicam regionem eligere potes.

Administrationis subsidium?

Instantia Cloud Spanner creando valde simplex est. Vos iustus postulo eligere inter instanciam multi-regionis vel unius regionis creantis, denota regionem (s) et numerum nodi. In minus quam minuto, exemplum tuum erit sursum et cursus.

Aliquot metrica elementa fundamentalia directe pervia ex pagina Spanner in Google Console sunt. Mores accuratiores opiniones per Stackdriver praesto sunt, ubi etiam limina metrica et consilia intenti.

Accessum ad opes?

MySQL amplas et valde granulosas praebet pro permissionibus / muneribus usorum. Accessum ad certam tabulam configurare facile potes, vel tantum columnarum subsessor. Cloud Spanner utitur instrumento Google Identity & Accesso (IAM), quod solum permittit ut rationes et permissiones in gradu maximo constituas. Optio granularis resolutio graduum datorum est, quae pluribus casibus usui productionis non convenit. Haec limitatio te cogit mensuras securitatis additas ad tuum codicem, infrastructuram addere, vel utrumque ad usum facultatum Spanneri non legitimi prohibendi.

Tergum?

Ut simpliciter, nulla sunt tergum Cloud Spanner. Quamvis summus SLA Google requisita efficere possit ut nulla notitia ex odio vel defectibus datorum perdas, errores humanos, defectus applicationis, etc. Nos omnes regulam novimus: summa dispositio non est pro sano tergum belli substitutum. In statu, unica via ad tergum sursum data est programmatice fluere a database ad separatum ambitum repositionis.

Query perficiendi?

Usi sumus Yahoo!, ut notitias onerare et queries experiri. Cloud serviens Benchmarkr. Mensa infra indicat YCSB quod inposuit B cum 95% lege ad 5% scribe rationem.

Google Cloud Spanner: bonum, malum, turpis

* Onus test in machina n1-32-32 Compute Engine (CE) (120 vCPU, XNUMX GB memoria currit), instantia numquam bottleneck in probat.
** Maximus numerus staminum in uno instantia YCSB est 400. In summa sex instantiarum parallelarum YCSB testium oportuit currere ad summam 2400 staminum.

Probatio eventus, praesertim iunctura CPU oneris et TPS, perspicue perspicere potest quod Cloud Spanner satis bene librat. Grave pondus a multitudine staminum creatum est a multitudine nodis in glomerulis Cloud Spanner. Dum latentia satis alte spectat, praesertim cum 2400 staminibus currentem, iterum tentans cum 6 minoribus instantiis machinae computatae necessarias esse potest ad numeros accuratiores. Utraque instantia curret unum YCSB examen loco unius magni CE exempli cum 6 probatis parallelis. Hoc modo facilior erit differentiam inter Cloud Spanner petitionem latency et latency additam per nexum retis inter Cloud Spanner et CE instantia currentem experimentum.

Quomodo Cloud Spannerus ut OLAP?

Partitio?

Notitia dividens in segmenta physice et/vel logice independentia, partitiones appellatas, est conceptus popularis in plurimis machinationibus OLAP. Partes signanter emendare interrogationem perficiendam et conservationem datorum possunt. Altius in partitionem pergens esset articulus separatus (s), ut modo commemoraremus momentum partitionis ac sub-partitionis rationem habere. Facultas datas dissolvendi in partitiones descendendi et etiam amplius in subpartitiones clavis est ad interrogationem analyticam perficiendam.

Cloud Spanner partitiones ut tales non adiuvat. Notitia dividit interne in sic dictum split-s iugis clavis primaria fundatur. Partitio sponte conficitur ut onus in Cloud Spanner botrum portatur. Perutilis notam Cloud Spanner est fossio oneris turpissimi parentis mensae (mensa cum alio non intermissa). Spanner sponte detegit an contineat split notitia quae frequentius quam in aliis notitia legitur split-ah et separatio ulterius decernere potest. Hoc modo plures nodi in petitione implicari possunt, quae etiam per putem efficaciter augetur.

Data Loading?

Cloud Spanner methodus ad molem datae eadem est ac onerationum normalium. Ad maximam observantiam consequendam, debes sequi aliquas vias, quae possidet:

  • Data per primariam clavem Sort tua.
  • * X per eos dividenumerus lymphaticorum disiunctis.
  • Facere operas certas operis quae in parallela data onerant.

Haec notitia loading nodis omnibus utitur Cloud Spanner.

YCSB inposuit in A ad usum dataset ex 10M ordinibus generandis.

Google Cloud Spanner: bonum, malum, turpis

* Onus test in machina n1-32-32 computatorium computatorium currit (vCPU, 120 GB memoria), et instantiae probatio numquam bottleneck in probat.
**Singulus nodi setup non commendatur pro aliqua productione quod inposuit.

Ut supra, Cloud Spanner sponte processit scindit innixus onere, sic proventus meliores post aliquot repetitiones testium continuatorum. Eventus hic praesentati sunt optimi eventus consecuti. Numeros suprascriptos intuentes, videre possumus quomodo squamae nubis Spanner (bene) sicut numerus nodis in botro augetur. Numeri qui exstant, latentiae mediocris valde humiles sunt, quae discrepantiae cum eventibus in laboribus mixtis (95% legere et 5% scribere) sunt, ut in sectione supra descripsimus.

Scandenda?

Numerus nodis Cloud Spanner crescens et decrescens opus unum cliccum est. Si celeriter notitias onerare vis, exemplum tuum maximum (in nostro casu 25 nodis in regione US-orientalis) considerare poteris et numerum nodis eligi pro tuo normali onere semel in omnibus indiciis reducere. datorum, referens ad 2TB/nodi terminum.

Nos etiam cum multo minore datorum hunc modum admoniti sumus. Post plures currentium oneris probationes, database nostrum circiter 155 GB magnitudine erat, et cum ad nodi instantiam descenderant, hunc errorem accepimus:

Google Cloud Spanner: bonum, malum, turpis

Nos ab instantiis 25 ad 2 exempla descendimus, sed duobus nodis haesi sumus.

Crescens et decrescens numerus nodi in botro Nube Spanner automari potest utendo CETERA API. Hoc praesertim utile esse potest ad onus systematis auctum reducendo in horas laboris occupatas.

Olap queries euismod?

Nonnullum temporis spatium in nostra aestimatione Spanneri hac in parte consumere instituimus. Post aliquot comitia selecta statim intelleximus experimentum brevem esse et Spanner machinam OLAP idoneam non fore. Neglegens numerus nodi in botro, simpliciter eligens numerum versuum in tabula 10M versu inter 55 et 60 secundis sumit. Accedit, quaevis quaestio quae plus memoriae requirebat ut eventus reponendi medios eventus errore OOM defecerit.

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

Numeri nonnulli pro TPC-H queries possunt in Todd Lipconis articulo Nosql-kudu-spanner-slides.html42 et 43. Hi numeri cum nostris eventibus constant (proh dolor).

Google Cloud Spanner: bonum, malum, turpis

4. conclusiones

Praesenti notarum statu Cloud Spanner, difficile est putare simplicem substitutionem solutionis tuae exsistentis OLTP, praesertim cum necessitates tuas exstinguant. Multum temporis spatium solutionis circa Claudii Spanneri defectibus impendenda erat.

Cum Cloud Spanner aestimare coepimus, rationes administrationis eius par esse vel saltem non longius ab aliis solutionibus Google SQL exspectavimus. Sed mirati sumus propter inopiam tergum et perexiguam potestatem accessum ad facultates. Ut omittam nullas opiniones, nullas evolutionis locales ambitus, sequentia destituta, JDBC sine auxilio DML et DDL, et sic porro.

Unde ergo aliquis qui eget datorum transactional scandere ibit? Solutio unica non videtur esse in mercatu quae omnibus casibus usui aptat. Multae solutiones fontium clausae et apertae (quarum nonnullae in hoc articulo memorantur), singulae suis viribus et infirmitatibus, nullae tamen offerunt Saas cum 99,999% SLA et summa constantia. Si alta SLA propositum tuum principale est, et consuetudo multi- nubis solutionis non inclinatur ad aedificandum, Cloud Spanner solutionem quam quaeris esse potest. Sed scire debes omnes limitationes eius.

Pulchrum esse, Cloud Spanner solum publico in fonte 2017 dimissum est, ut aequum est sperare aliquos defectus currentis eius aliquando abire (spero), quod cum agunt, lusus commutator esse posset. Post omnes, Cloud Spanner pro Google parte project non est. Google eo utitur ut fundamentum ad alia Google producta. Et cum Google nuper Megastore in Google Cloud Storage cum Cloud Spanner substituit, Google Cloud Storage permisit ut in indice rerum in global scala (quod adhuc non est causa Amazon scriptor S3).

Ita est adhuc spes... speramus.

Id omne. Articuli auctor similis, etiam sperare debemus, sed de hoc quid cogitas? Scribere in comment

Invitamus omnes ad visitandum nostrum liberum webinar intra quod singillatim de cursu dicamus "AWS for Developers" ex OTUS.

Source: www.habr.com