{"id":69568,"date":"2020-02-20T15:24:23","date_gmt":"2020-02-20T12:24:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/google-cloud-spanner-horoshij-plohoj-zloj"},"modified":"2020-03-03T16:14:50","modified_gmt":"2020-03-03T13:14:50","slug":"google-cloud-spanner-horoshij-plohoj-zloj","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","title":{"rendered":"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>\u00dcdv\u00f6zl\u00f6m, Habr-blogger! Hagyom\u00e1nyos m\u00f3don folytatjuk az \u00e9rdekes anyagok megoszt\u00e1s\u00e1t az \u00faj kurzusok kezdete el\u0151tt. Ma kifejezetten nektek ford\u00edtottuk le a Google Cloud Spanner-r\u0151l sz\u00f3l\u00f3 cikket, amelyet a tanfolyam elindul\u00e1s\u00e1hoz id\u0151z\u00edtett\u00fcnk. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">\u201eAWS fejleszt\u0151knek\u201d<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/b27b8a09543d10b078480c317553ca46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Eredetileg k\u00f6zz\u00e9t\u00e9ve itt: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lightspeedhq.com\/blog\/\">a Lightspeed HQ blogj\u00e1n<\/a><\/noindex>.<\/i><\/p>\n<p>Mint olyan v\u00e1llalat, amely sz\u00e1mos felh\u0151alap\u00fa POS megold\u00e1st k\u00edn\u00e1l a kiskeresked\u0151knek, vend\u00e9gl\u00e1t\u00f3knak \u00e9s online keresked\u0151knek vil\u00e1gszerte, a Lightspeed k\u00fcl\u00f6nf\u00e9le adatb\u00e1zis-platformokat haszn\u00e1l sokf\u00e9le tranzakci\u00f3s, analitikai \u00e9s keres\u00e9si esetre. Minden adatb\u00e1zis-platformnak megvannak a maga er\u0151ss\u00e9gei \u00e9s gyenges\u00e9gei. K\u00f6vetkez\u00e9sk\u00e9ppen, amikor a Google bemutatta a Cloud Spanner-t a piacon - \u00edg\u00e9retes funkci\u00f3kkal, amelyek eddig ismeretlenek voltak a rel\u00e1ci\u00f3s adatb\u00e1zisok vil\u00e1g\u00e1ban, mint p\u00e9ld\u00e1ul a gyakorlatilag korl\u00e1tlan horizont\u00e1lis sk\u00e1l\u00e1zhat\u00f3s\u00e1g \u00e9s a 99,999% -os szolg\u00e1ltat\u00e1si szint szerz\u0151d\u00e9s (SLA) - nem tudtuk kihagyni a lehet\u0151s\u00e9get, hogy a kez\u00fcnkbe ker\u00fclj\u00f6n!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAnnak \u00e9rdek\u00e9ben, hogy \u00e1tfog\u00f3 k\u00e9pet adjunk tapasztalatainkr\u00f3l a Cloud Spanner-rel kapcsolatban, valamint az \u00e9rt\u00e9kel\u00e9si krit\u00e9riumokr\u00f3l, amelyeket haszn\u00e1ltunk, a k\u00f6vetkez\u0151 t\u00e9m\u00e1kat fogjuk \u00e1ttekinteni:<\/p>\n<ol>\n<li>\u00c9rt\u00e9kel\u00e9si krit\u00e9riumaink<\/li>\n<li>Cloud Spanner di\u00f3h\u00e9jban<\/li>\n<li>\u00c9rt\u00e9kel\u00e9s\u00fcnk<\/li>\n<li>K\u00f6vetkeztet\u00e9seink<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/29ed599362fb189283faa9215c18297a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>1. \u00c9rt\u00e9kel\u00e9si krit\u00e9riumaink<\/h2>\n<p>\nMiel\u0151tt m\u00e9lyebben belemer\u00fcln\u00e9nk a Cloud Spanner jellemz\u0151ibe, azzal foglalkozva, hogy miben hasonl\u00edt \u00e9s miben k\u00fcl\u00f6nb\u00f6zik m\u00e1s piaci megold\u00e1sokt\u00f3l, el\u0151sz\u00f6r besz\u00e9lj\u00fcnk az alapvet\u0151 felhaszn\u00e1l\u00e1si esett\u00edpusokr\u00f3l, amelyeket figyelembe vett\u00fcnk, amikor azt a k\u00e9rd\u00e9st vizsg\u00e1ltuk, hogy hol telep\u00edts\u00fck a Cloud Spanner-t az infrastrukt\u00far\u00e1nkban:<\/p>\n<ul>\n<li>A hagyom\u00e1nyos SQL adatb\u00e1zis megold\u00e1s (domin\u00e1l\u00f3) helyettes\u00edt\u00e9s\u00e9re<\/li>\n<li>OLTP megold\u00e1sk\u00e9nt, t\u00e1mogatva az OLAP-ot<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Megjegyz\u00e9s:<\/b> A cikk a Cloud Spanner-t a GCP Cloud SQL \u00e9s az Amazon AWS RDS megold\u00e1scsal\u00e1d MySQL v\u00e1ltozataival hasonl\u00edtja \u00f6ssze az egyszer\u0171s\u00e9g \u00e9s a k\u00e9nyelmes \u00f6sszehasonl\u00edthat\u00f3s\u00e1g \u00e9rdek\u00e9ben.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h4>A Cloud Spanner hagyom\u00e1nyos SQL adatb\u00e1zis megold\u00e1sk\u00e9nt val\u00f3 alkalmaz\u00e1sa<\/h4>\n<p>\nA <i>hagyom\u00e1nyos <\/i>adatb\u00e1zisokban, amikor az adatb\u00e1zis-k\u00e9r\u00e9s v\u00e1laszideje megk\u00f6zel\u00edti vagy ak\u00e1r meghaladja az el\u0151re meghat\u00e1rozott alkalmaz\u00e1si k\u00fcsz\u00f6b\u00e9rt\u00e9keket (t\u00f6bbnyire a felhaszn\u00e1l\u00f3k \u00e9s\/vagy k\u00e9relmek n\u00f6veked\u00e9se miatt), sz\u00e1mos m\u00f3d \u00e1ll rendelkez\u00e9sre a v\u00e1laszid\u0151 cs\u00f6kkent\u00e9s\u00e9re egy elfogadhat\u00f3 szintre. Azonban a legt\u00f6bb megold\u00e1s k\u00e9zi beavatkoz\u00e1st ig\u00e9nyel.<\/p>\n<p>P\u00e9ld\u00e1ul az els\u0151 l\u00e9p\u00e9s, amit meg kell tenni, hogy megn\u00e9zz\u00fck a teljes\u00edtm\u00e9nnyel kapcsolatos k\u00fcl\u00f6nb\u00f6z\u0151 adatb\u00e1zis-param\u00e9tereket, \u00e9s be\u00e1ll\u00edtsuk \u0151ket, hogy a legjobban illeszkedjenek az alkalmaz\u00e1sok haszn\u00e1lati mint\u00e1ihoz. Ha ez nem bizonyul elegend\u0151nek, v\u00e1laszthatjuk az adatb\u00e1zis vertik\u00e1lis vagy horizont\u00e1lis sk\u00e1l\u00e1z\u00e1s\u00e1t.<\/p>\n<p>Az alkalmaz\u00e1s vertik\u00e1lis sk\u00e1l\u00e1z\u00e1sa azt jelenti, hogy a szerver p\u00e9ld\u00e1ny\u00e1t friss\u00edtj\u00fck, \u00e1ltal\u00e1ban t\u00f6bb processzor\/mag, nagyobb mem\u00f3riak\u00e1br\u00e1zol\u00f3kapacit\u00e1s vagy gyorsabb t\u00e1rol\u00f3 hozz\u00e1ad\u00e1s\u00e1val. Tov\u00e1bbi hardverforr\u00e1sok hozz\u00e1ad\u00e1sa a teljes\u00edtm\u00e9ny n\u00f6veked\u00e9s\u00e9hez vezet, amelyet alapvet\u0151en tranzakci\u00f3k m\u00e1sodpercenk\u00e9nti sz\u00e1m\u00e1ban \u00e9s az OLTP rendszerek tranzakci\u00f3s k\u00e9sleltet\u00e9s\u00e9ben m\u00e9rnek. A rel\u00e1ci\u00f3s adatb\u00e1zis-rendszerek (amelyek t\u00f6bb sz\u00e1las megk\u00f6zel\u00edt\u00e9st haszn\u00e1lnak), mint p\u00e9ld\u00e1ul a MySQL, j\u00f3l sk\u00e1l\u00e1zhat\u00f3k vertik\u00e1lisan.<\/p>\n<p>Ennek a megk\u00f6zel\u00edt\u00e9snek t\u00f6bb h\u00e1tr\u00e1nya van, de a legnyilv\u00e1nval\u00f3bb a piacon el\u00e9rhet\u0151 legnagyobb szerver m\u00e9rete. Amint el\u00e9rj\u00fck a legnagyobb szerver p\u00e9ld\u00e1ny hat\u00e1r\u00e1t, m\u00e1r csak egy \u00fat marad: a horizont\u00e1lis sk\u00e1l\u00e1z\u00e1s.<\/p>\n<p>A horizont\u00e1lis sk\u00e1l\u00e1z\u00e1s olyan megk\u00f6zel\u00edt\u00e9st jelent, amelyben a klaszterhez t\u00f6bb szervert adunk hozz\u00e1, hogy ide\u00e1lisan line\u00e1risan n\u00f6velj\u00fck a teljes\u00edtm\u00e9nyt a szerverek sz\u00e1m\u00e1nak n\u00f6vel\u00e9s\u00e9vel. A legt\u00f6bb <i>hagyom\u00e1nyos <\/i>adatb\u00e1zis-rendszer rosszul sk\u00e1l\u00e1zhat\u00f3 v\u00edzszintesen vagy egy\u00e1ltal\u00e1n nem sk\u00e1l\u00e1zhat\u00f3. P\u00e9ld\u00e1ul a MySQL v\u00edzszintesen sk\u00e1l\u00e1zhat\u00f3 az olvas\u00e1si m\u0171veletekhez, ha slave olvas\u00f3kat adunk hozz\u00e1, de a \u00edr\u00e1si m\u0171veletekhez nem k\u00e9pes v\u00edzszintesen sk\u00e1l\u00e1z\u00f3dni.<\/p>\n<p>M\u00e1sr\u00e9szt a Cloud Spanner term\u00e9szet\u00e9n\u00e9l fogva k\u00f6nnyen v\u00edzszintesen sk\u00e1l\u00e1zhat\u00f3, minim\u00e1lis beavatkoz\u00e1ssal.<\/p>\n<p>Teljes k\u00f6r\u0171<i> adatb\u00e1zis mint szolg\u00e1ltat\u00e1s<\/i> t\u00f6bb szempontb\u00f3l kell \u00e9rt\u00e9kelni. Alapul vett\u00fck a felh\u0151 legn\u00e9pszer\u0171bb adatb\u00e1zis\u00e1t \u2013 a Google sz\u00e1m\u00e1ra a GCP Cloud SQL-t \u00e9s az Amazon sz\u00e1m\u00e1ra az AWS RDS-t. \u00c9rt\u00e9kel\u00e9s\u00fcnk sor\u00e1n a k\u00f6vetkez\u0151 kateg\u00f3ri\u00e1kra \u00f6sszpontos\u00edtottunk:<\/p>\n<ul>\n<li>A funkci\u00f3k \u00f6sszehasonl\u00edt\u00e1sa: SQL kiterjed\u00e9s, DDL, DML; csatlakoz\u00e1si k\u00f6nyvt\u00e1rak\/konektorok, tranzakci\u00f3k t\u00e1mogat\u00e1sa stb.<\/li>\n<li>Fejleszt\u00e9st t\u00e1mogat\u00f3: a fejleszt\u00e9s \u00e9s tesztel\u00e9s egyszer\u0171s\u00e9ge.<\/li>\n<li>Adminisztr\u00e1ci\u00f3s t\u00e1mogat\u00e1s: p\u00e9ld\u00e1ul az instance-k kezel\u00e9se - felfel\u00e9\/h\u00e1trafel\u00e9 sk\u00e1l\u00e1z\u00e1s \u00e9s az instance-k friss\u00edt\u00e9se; SLA, biztons\u00e1gi ment\u00e9s \u00e9s vissza\u00e1ll\u00edt\u00e1s; biztons\u00e1g\/hozz\u00e1f\u00e9r\u00e9s-ellen\u0151rz\u00e9s.<\/li>\n<\/ul>\n<p><\/p>\n<h4>A Cloud Spanner haszn\u00e1lata OLTP megold\u00e1sk\u00e9nt, amely t\u00e1mogatja az OLAP-ot.<\/h4>\n<p>\nB\u00e1r a Google egy\u00e9rtelm\u0171en nem \u00e1ll\u00edtja, hogy a Cloud Spanner az analitikai feldolgoz\u00e1sra lett tervezve, bizonyos attrib\u00fatumokat oszt meg m\u00e1s motorokkal, mint p\u00e9ld\u00e1ul az Apache Impala &amp; Kudu \u00e9s a YugaByte, amelyek OLAP munkaterhel\u00e9sekre vannak optimaliz\u00e1lva.<\/p>\n<p>M\u00e9g ha csak csek\u00e9ly es\u00e9ly is lenne arra, hogy a Cloud Spanner egy konzisztens, v\u00edzszintesen sk\u00e1l\u00e1zhat\u00f3 HTAP (hibrid tranzakci\u00f3s\/analitikai feldolgoz\u00e1s) motort tartalmaz, egy (t\u00f6bb\u00e9-kev\u00e9sb\u00e9) haszn\u00e1lhat\u00f3 OLAP funkci\u00f3k\u00e9szlettel, azt gondoljuk, hogy \u00e9rdemes volna a figyelm\u00fcnkre.<\/p>\n<p>Ezt szem el\u0151tt tartva megvizsg\u00e1ltuk a k\u00f6vetkez\u0151 kateg\u00f3ri\u00e1kat:<\/p>\n<ul>\n<li>Adatok bet\u00f6lt\u00e9se, indexek \u00e9s part\u00edcion\u00e1l\u00e1s t\u00e1mogat\u00e1sa<\/li>\n<li>Lek\u00e9rdez\u00e9si teljes\u00edtm\u00e9ny \u00e9s DML<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Cloud Spanner di\u00f3h\u00e9jban<\/h2>\n<p>\nA Google Spanner egy klaszter alap\u00fa rel\u00e1ci\u00f3s adatb\u00e1zis-kezel\u0151 rendszer (RDBMS), amelyet a Google t\u00f6bb saj\u00e1t szolg\u00e1ltat\u00e1s\u00e1hoz haszn\u00e1l. A Google 2017 elej\u00e9n tette el\u00e9rhet\u0151v\u00e9 a Google Cloud Platform felhaszn\u00e1l\u00f3i sz\u00e1m\u00e1ra.<\/p>\n<p>\u00cdme n\u00e9h\u00e1ny a Cloud Spanner attrib\u00fatumai k\u00f6z\u00fcl:<\/p>\n<ul>\n<li>Er\u0151sen konzisztens sk\u00e1l\u00e1zhat\u00f3 RDBMS klaszter: hardveres id\u0151szinkroniz\u00e1ci\u00f3t haszn\u00e1l az adatok konzisztenci\u00e1j\u00e1nak biztos\u00edt\u00e1sa \u00e9rdek\u00e9ben.<\/li>\n<li>T\u00e1mogatja a kereszt-t\u00e1bl\u00e1s tranzakci\u00f3kat: a tranzakci\u00f3k t\u00f6bb t\u00e1bl\u00e1t is magukban foglalhatnak - nem korl\u00e1toz\u00f3dnak egyetlen t\u00e1bl\u00e1ra (ellent\u00e9tben az Apache HBase-szel vagy az Apache Kudu-val).<\/li>\n<li>Els\u0151dleges kulcs alap\u00fa t\u00e1bl\u00e1k: minden t\u00e1bl\u00e1nak rendelkeznie kell egy nyilatkozott els\u0151dleges kulccsal (PK), amely t\u00f6bb oszlopb\u00f3l is \u00e1llhat. A t\u00e1bl\u00e1zati adatok a PK szerinti sorrendben ker\u00fclnek t\u00e1rol\u00e1sra, ami \u0151ket rendk\u00edv\u00fcl hat\u00e9konny\u00e1 \u00e9s gyorsan kereshet\u0151v\u00e9 teszi a PK szerint. Mint m\u00e1s PK-alap\u00fa rendszerek, a megval\u00f3s\u00edt\u00e1st el\u0151re megtervezett felhaszn\u00e1l\u00e1si esetek figyelembev\u00e9tel\u00e9vel kell modellezni a legjobb teljes\u00edtm\u00e9ny el\u00e9r\u00e9se \u00e9rdek\u00e9ben. <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/schema-and-data-model\">legjobb teljes\u00edtm\u00e9ny<\/a><\/noindex>.<\/li>\n<li>Felv\u00e1ltva l\u00e9v\u0151 t\u00e1bl\u00e1k: a t\u00e1bl\u00e1k fizikai kapcsolatban \u00e1llhatnak egym\u00e1ssal. A gyermek t\u00e1bla sorai a sz\u00fcl\u0151 t\u00e1bla soraihoz rendelhet\u0151k. Ez a megk\u00f6zel\u00edt\u00e9s felgyors\u00edtja a kapcsolatok keres\u00e9s\u00e9t, amelyeket az adatmodellez\u00e9s sor\u00e1n meg lehet hat\u00e1rozni, p\u00e9ld\u00e1ul az \u00fcgyfelek \u00e9s sz\u00e1ml\u00e1ik k\u00f6z\u00f6tti k\u00f6z\u00f6s elhelyez\u00e9skor.<\/li>\n<li>Indexek: a Cloud Spanner t\u00e1mogatja a m\u00e1sodlagos indexeket. Az index a kijel\u00f6lt oszlopokb\u00f3l \u00e9s az \u00f6sszes prim\u00e9r kulcs oszlopb\u00f3l \u00e1ll. Sz\u00fcks\u00e9g szerint az index tartalmazhat m\u00e1s, nem indexelt oszlopokat is. Az index felcser\u00e9lheti a sz\u00fcl\u0151 t\u00e1bl\u00e1t a lek\u00e9rdez\u00e9sek felgyors\u00edt\u00e1sa \u00e9rdek\u00e9ben. Az indexekre sz\u00e1mos korl\u00e1toz\u00e1s vonatkozik, p\u00e9ld\u00e1ul a maxim\u00e1lis sz\u00e1m\u00fa kieg\u00e9sz\u00edt\u0151 oszlop, amely az indexben t\u00e1rolhat\u00f3. Tov\u00e1bb\u00e1 az indexeken kereszt\u00fcli lek\u00e9rdez\u00e9sek nem mindig annyira egy\u00e9rtelm\u0171ek, mint m\u00e1s RDBMS-ek eset\u00e9ben.<\/li>\n<\/ul>\n<p>\n<i>A Cloud Spanner ritk\u00e1n automatikusan v\u00e1laszt indexet. K\u00fcl\u00f6n\u00f6sen, ha a lek\u00e9rdez\u00e9s olyan oszlopokat k\u00e9r, amelyek nincsenek meg\u0151rizve a <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/secondary-indexes\">indexben. <\/a><\/noindex>\u00bb.<\/i><\/p>\n<ul>\n<li>Szolg\u00e1ltat\u00e1si szint meg\u00e1llapod\u00e1s (SLA): egy r\u00e9gi\u00f3ban t\u00f6rt\u00e9n\u0151 telep\u00edt\u00e9s 99,99%-os SLA-val; t\u00f6bb r\u00e9gi\u00f3ra kiterjed\u0151 telep\u00edt\u00e9sek 99,999%-os SLA-val. B\u00e1r a szolg\u00e1ltat\u00e1si szint meg\u00e1llapod\u00e1s csup\u00e1n meg\u00e1llapod\u00e1s, nem pedig garancia, \u00fagy v\u00e9lem, a Google munkat\u00e1rsainak val\u00f3ban vannak pontos adataik, hogy ilyen komoly \u00e1ll\u00edt\u00e1st tegyenek. (\u00d6sszehasonl\u00edt\u00e1sul, a 99,999% azt jelenti, hogy a szolg\u00e1ltat\u00e1s 26,3 m\u00e1sodpercig nem el\u00e9rhet\u0151 havonta.)<\/li>\n<li>Tov\u00e1bbiak: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/\">https:\/\/cloud.google.com\/spanner\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Megjegyz\u00e9s:<\/b> Az Apache Tephra projekt b\u0151v\u00edtett tranzakci\u00f3s t\u00e1mogat\u00e1st ad az Apache HBase-hez (most m\u00e1r az Apache Phoenix-ben is megval\u00f3s\u00edtva b\u00e9taverzi\u00f3k\u00e9nt).<\/i><\/p><\/blockquote>\n<p><\/p>\n<h2>3. \u00c9rt\u00e9kel\u00e9s\u00fcnk<\/h2>\n<p>\nTeh\u00e1t mindannyian olvastuk a Google \u00e1ll\u00edt\u00e1sait a Cloud Spanner el\u0151nyeir\u0151l \u2013 gyakorlatilag korl\u00e1tlan v\u00edzszintes sk\u00e1l\u00e1z\u00e1s magas konzisztenci\u00e1val \u00e9s nagyon magas SLA-val. B\u00e1r ezek a k\u00f6vetelm\u00e9nyek rendk\u00edv\u00fcl nehezen el\u00e9rhet\u0151k, c\u00e9lunk nem az volt, hogy megc\u00e1foljuk \u0151ket. Ehelyett f\u00f3kusz\u00e1ljunk m\u00e1s dolgokra, amelyek a legt\u00f6bb adatb\u00e1zis-haszn\u00e1l\u00f3t foglalkoztatj\u00e1k: a tisztas\u00e1gra \u00e9s a haszn\u00e1lhat\u00f3s\u00e1gra.<\/p>\n<h4>A Cloud Spanner-t a Sharded MySQL alternat\u00edv\u00e1jak\u00e9nt \u00e9rt\u00e9kelt\u00fck.<\/h4>\n<p>\nA Google Cloud SQL \u00e9s az Amazon AWS RDS, a legn\u00e9pszer\u0171bb OLTP adatb\u00e1zisok a felh\u0151piacon, rendk\u00edv\u00fcl sz\u00e9les funkcionalit\u00e1ssal rendelkeznek. Azonban, ha az adatb\u00e1zisokat egyetlen csom\u00f3pont m\u00e9ret\u00e9n t\u00fali sk\u00e1l\u00e1z\u00e1sra akarjuk haszn\u00e1lni, alkalmaz\u00e1soszt\u00e1sra van sz\u00fcks\u00e9g. Ez a megk\u00f6zel\u00edt\u00e9s tov\u00e1bbi bonyolults\u00e1got jelent mind az alkalmaz\u00e1sok, mind az adminisztr\u00e1ci\u00f3 szempontj\u00e1b\u00f3l. Megvizsg\u00e1ltuk, hogyan illeszkedik a Spanner a t\u00f6bb szegmens egy p\u00e9ld\u00e1nyba t\u00f6rt\u00e9n\u0151 egyes\u00edt\u00e9s\u00e9nek forgat\u00f3k\u00f6nyv\u00e9be, \u00e9s milyen funkci\u00f3kkal (ha vannak) lehet, hogy le kell mondanunk.<\/p>\n<h4>SQL, DML \u00e9s DDL t\u00e1mogat\u00e1s, valamint csatlakoz\u00f3 \u00e9s k\u00f6nyvt\u00e1rak?<\/h4>\n<p>\nEl\u0151sz\u00f6r is, b\u00e1rmilyen adatb\u00e1zissal val\u00f3 ind\u00edt\u00e1skor adatmodell l\u00e9trehoz\u00e1s\u00e1ra van sz\u00fcks\u00e9g. Ha \u00fagy gondolja, hogy a JDBC Spanner csatlakoztat\u00e1sa a kedvenc SQL eszk\u00f6z\u00e9hez lehets\u00e9ges, azt tapasztalja, hogy tudja lek\u00e9rdezni az adatokat, de nem tud t\u00e1bl\u00e1zatot l\u00e9trehozni vagy m\u00f3dos\u00edt\u00e1sokat (DDL) v\u00e9gezni, vagy b\u00e1rmilyen besz\u00far\u00e1si \/ friss\u00edt\u00e9si \/ t\u00f6rl\u00e9si m\u0171veletet (DML) v\u00e9grehajtani. A Google hivatalos JDBC-je nem t\u00e1mogatja sem az egyiket, sem a m\u00e1sikat.<\/p>\n<blockquote><p><i>\u201eJelenleg a driverek nem t\u00e1mogatj\u00e1k a DML vagy DDL utas\u00edt\u00e1sokat.\u201d<\/i><br \/>\nSpanner dokument\u00e1ci\u00f3<\/p><\/blockquote>\n<p>\nA GCP konzolj\u00e1val a helyzet nem jobb \u2014 csak SELECT lek\u00e9rdez\u00e9seket k\u00fcldhet. Szerencs\u00e9re van egy k\u00f6z\u00f6ss\u00e9gi DML \u00e9s DDL t\u00e1mogat\u00e1ssal rendelkez\u0151 JDBC driver, amely tranzakci\u00f3kat is kezel. <noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/olavloite\/spanner-jdbc\">github.com\/olavloite\/spanner-jdbc<\/a><\/noindex>. B\u00e1r ez a driver rendk\u00edv\u00fcl hasznos, a Google saj\u00e1t JDBC driver\u00e9nek hi\u00e1nya meglep\u0151. Szerencs\u00e9re a Google meglehet\u0151sen sz\u00e9lesk\u00f6r\u0171 t\u00e1mogat\u00e1st ny\u00fajt kliens k\u00f6nyvt\u00e1rak sz\u00e1m\u00e1ra (gRPC alap\u00fa): C#, Go, Java, node.js, PHP, Python, Ruby.<\/p>\n<p>A Cloud Spanner egyedi API-jainak k\u00f6telez\u0151 haszn\u00e1lata (a JDBC DDL \u00e9s DML hi\u00e1nya miatt) n\u00e9h\u00e1ny korl\u00e1toz\u00e1st jelent a kapcsol\u00f3d\u00f3 k\u00f3dtartom\u00e1nyokra, p\u00e9ld\u00e1ul a kapcsolat medenc\u00e9k vagy az adatb\u00e1zisk\u00f6t\u0151 keretrendszerek (p\u00e9ld\u00e1ul Spring MVC) eset\u00e9n. \u00c1ltal\u00e1noss\u00e1gban, ha JDBC-t haszn\u00e1l, szabadon v\u00e1laszthat kedvenc kapcsolat medenc\u00e9j\u00e9t (p\u00e9ld\u00e1ul HikariCP, DBCP, C3PO, stb.), amely tesztelt \u00e9s j\u00f3l m\u0171k\u00f6dik. Az egyedi API Spanner eset\u00e9ben azonban az \u00e1ltalunk l\u00e9trehozott keretrendszerekre \/ medenc\u00e9kre \/ \u00fcl\u00e9sekre kell t\u00e1maszkodnunk.<\/p>\n<p>A f\u0151 kulcsra orient\u00e1lt strukt\u00fara lehet\u0151v\u00e9 teszi, hogy a Cloud Spanner rendk\u00edv\u00fcl gyorsan hozz\u00e1f\u00e9rjen az adatokhoz a f\u0151 kulcsokon kereszt\u00fcl, de n\u00e9h\u00e1ny probl\u00e9m\u00e1t is okoz a lek\u00e9rdez\u00e9sekben.<\/p>\n<ul>\n<li>Nem friss\u00edtheti az els\u0151dleges kulcs \u00e9rt\u00e9k\u00e9t; el\u0151sz\u00f6r el kell t\u00e1vol\u00edtania a nyilv\u00e1ntart\u00e1st az eredeti PK-val, majd \u00fajra be kell illesztenie az \u00faj \u00e9rt\u00e9kkel. (Ez hasonl\u00edt m\u00e1s, PK-ori\u00e9nt\u00e1lt adatb\u00e1zisokra\/t\u00e1rol\u00e1si mechanizmusokra.)<\/li>\n<li>B\u00e1rmely UPDATE \u00e9s DELETE oper\u00e1tornak meg kell adnia a PK-t a WHERE klauzul\u00e1ban, ez\u00e9rt nem lehet \u00fcres DELETE all oper\u00e1tor \u2014 mindig sz\u00fcks\u00e9ges egy al-lek\u00e9rdez\u00e9s, p\u00e9ld\u00e1ul: UPDATE xxx WHERE id IN (SELECT id FROM table1)<\/li>\n<li>Az automatikus n\u00f6vel\u00e9s vagy hasonl\u00f3 lehet\u0151s\u00e9g hi\u00e1nya, amely a PK mez\u0151 szekvenci\u00e1j\u00e1t hat\u00e1rozza meg. Ehhez a megfelel\u0151 \u00e9rt\u00e9ket az alkalmaz\u00e1s oldal\u00e1n kell l\u00e9trehozni.<\/li>\n<\/ul>\n<p><\/p>\n<h4>M\u00e1sodlagos indexek?<\/h4>\n<p>\nA Google Cloud Spanner be\u00e9p\u00edtett t\u00e1mogat\u00e1st ny\u00fajt a m\u00e1sodlagos indexekhez. Ez egy nagyon kellemes funkci\u00f3, amely nem mindig \u00e1ll rendelkez\u00e9sre m\u00e1s technol\u00f3gi\u00e1kban. Az Apache Kudu jelenleg egy\u00e1ltal\u00e1n nem t\u00e1mogatja a m\u00e1sodlagos indexeket, m\u00edg az Apache HBase nem t\u00e1mogatja k\u00f6zvetlen\u00fcl az indexeket, de az Apache Phoenix-en kereszt\u00fcl hozz\u00e1adhat\u00f3k.<\/p>\n<p>A Kudu \u00e9s HBase indexek k\u00fcl\u00f6n t\u00e1bl\u00e1zatk\u00e9nt modellezhet\u0151k elt\u00e9r\u0151 els\u0151dleges kulcs \u00f6sszet\u00e9tellel, de a sz\u00fcl\u0151 t\u00e1bl\u00e1zattal \u00e9s a kapcsol\u00f3d\u00f3 index t\u00e1bl\u00e1zatokkal v\u00e9gzett m\u0171veletek atomoss\u00e1g\u00e1t az alkalmaz\u00e1s szintj\u00e9n kell biztos\u00edtani, ami nem trivi\u00e1lis a megfelel\u0151 v\u00e9grehajt\u00e1sban.<\/p>\n<p>Ahogy a Cloud Spanner \u00e1ttekint\u00e9s\u00e9ben eml\u00edt\u00e9st nyert, az indexei elt\u00e9rhetnek a MySQL indexeit\u0151l. Ez\u00e9rt k\u00fcl\u00f6n\u00f6s \u00f3vatoss\u00e1gra van sz\u00fcks\u00e9g a lek\u00e9rdez\u00e9sek fel\u00e9p\u00edt\u00e9s\u00e9n\u00e9l \u00e9s profiloz\u00e1s\u00e1n\u00e1l, hogy biztos\u00edtsuk a megfelel\u0151 index haszn\u00e1lat\u00e1t, ahol sz\u00fcks\u00e9ges.<\/p>\n<h4>N\u00e9zetek?<\/h4>\n<p>\nA n\u00e9zetek nagyon n\u00e9pszer\u0171 \u00e9s hasznos objektumok az adatb\u00e1zisban. Sz\u00e1mos felhaszn\u00e1l\u00e1si esethez hasznosak lehetnek; a k\u00e9t kedvencem a logikai absztrakci\u00f3 szintje \u00e9s a biztons\u00e1gi szint. Sajnos a Cloud Spanner NEM t\u00e1mogatja a n\u00e9zeteket. Azonban ez csak r\u00e9szben korl\u00e1toz minket, mivel a hozz\u00e1f\u00e9r\u00e9s enged\u00e9lyez\u00e9se nem r\u00e9szletezett oszlop szinten, ahol a n\u00e9zetek elfogadhat\u00f3 megold\u00e1snak bizonyulhatnak.<\/p>\n<p>A Cloud Spanner dokument\u00e1ci\u00f3j\u00e1ban, ahol a kv\u00f3t\u00e1k \u00e9s korl\u00e1toz\u00e1sok r\u00e9szletezve vannak (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/quotas\">spanner\/quotas<\/a><\/noindex>), van, t\u00f6bbek k\u00f6z\u00f6tt, van egy, amely probl\u00e9m\u00e1s lehet egyes alkalmaz\u00e1sok sz\u00e1m\u00e1ra: a Cloud Spanner alap\u00e9rtelmez\u00e9s szerint maximum 100 adatb\u00e1zisra korl\u00e1toz\u00f3dik p\u00e9ld\u00e1nyonk\u00e9nt. Nyilv\u00e1nval\u00f3, hogy ez komoly akad\u00e1lyt jelenthet olyan adatb\u00e1zis sz\u00e1m\u00e1ra, amelyet t\u00f6bb mint 100 adatb\u00e1zis sk\u00e1l\u00e1z\u00e1s\u00e1ra terveztek. Szerencs\u00e9re, miut\u00e1n besz\u00e9lt\u00fcnk a Google technikai k\u00e9pvisel\u0151j\u00e9vel, megtudtuk, hogy ezt a korl\u00e1tot szinte b\u00e1rmilyen \u00e9rt\u00e9kre meg lehet emelni a Google \u00fcgyf\u00e9lszolg\u00e1lat\u00e1n kereszt\u00fcl.<\/p>\n<h4>Fejleszt\u00e9si t\u00e1mogat\u00e1s?<\/h4>\n<p>\nA Cloud Spanner meglehet\u0151sen tiszteletrem\u00e9lt\u00f3 programoz\u00e1si nyelvek t\u00e1mogat\u00e1s\u00e1t k\u00edn\u00e1l az API-j\u00e1val val\u00f3 munk\u00e1hoz. A hivatalosan t\u00e1mogatott k\u00f6nyvt\u00e1rak a C#, Go, Java, node.js, PHP, Python \u00e9s Ruby ter\u00fcletein tal\u00e1lhat\u00f3k. A dokument\u00e1ci\u00f3 kell\u0151en r\u00e9szletes, de hasonl\u00f3an m\u00e1s fejlett technol\u00f3gi\u00e1khoz, a k\u00f6z\u00f6ss\u00e9g viszonylag kicsi a legn\u00e9pszer\u0171bb adatb\u00e1zistechnol\u00f3gi\u00e1khoz k\u00e9pest, ami megn\u00f6velheti a ritk\u00e1bb haszn\u00e1lati esetek vagy probl\u00e9m\u00e1k megold\u00e1s\u00e1ra ford\u00edtott id\u0151t.<\/p>\n<h4>Akkor mi a helyzet a helyi fejleszt\u00e9si t\u00e1mogat\u00e1ssal?<\/h4>\n<p>\nNem tal\u00e1ltunk m\u00f3dot arra, hogy Cloud Spanner p\u00e9ld\u00e1nyt hozzunk l\u00e9tre helyi k\u00f6rnyezetben. A legk\u00f6zelebbi, amit kaptunk, egy Docker-k\u00e9p <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/cockroachdb\/cockroach\">CockroachDB<\/a><\/noindex>, ami elvileg hasonl\u00f3, de a gyakorlatban nagyon elt\u00e9r\u0151. P\u00e9ld\u00e1ul a CockroachDB haszn\u00e1lhat PostgreSQL JDBC-t. Mivel a fejleszt\u00e9si k\u00f6rnyezetnek a lehet\u0151 legk\u00f6zelebb kell \u00e1llnia a m\u0171k\u00f6d\u00e9si k\u00f6rnyezethez, a Cloud Spanner nem ide\u00e1lis, mivel teljes Spanner p\u00e9ld\u00e1nyra kell t\u00e1maszkodni. K\u00f6lts\u00e9gek cs\u00f6kkent\u00e9se \u00e9rdek\u00e9ben egyetlen r\u00e9gi\u00f3ra v\u00e1laszthat p\u00e9ld\u00e1nyt.<\/p>\n<h4>Adminisztr\u00e1ci\u00f3s t\u00e1mogat\u00e1s?<\/h4>\n<p>\nA Cloud Spanner p\u00e9ld\u00e1ny l\u00e9trehoz\u00e1sa rendk\u00edv\u00fcl egyszer\u0171. Csak annyit kell tennie, hogy v\u00e1lasszon multir\u00e9gi\u00f3s vagy egy r\u00e9gi\u00f3s p\u00e9ld\u00e1ny l\u00e9trehoz\u00e1sa k\u00f6z\u00f6tt, megadja a r\u00e9gi\u00f3(k)et \u00e9s a csom\u00f3pontok sz\u00e1m\u00e1t. Kevesebb mint egy perc m\u00falva a p\u00e9ld\u00e1ny m\u00e1r m\u0171k\u00f6d\u0151k\u00e9pes lesz.<\/p>\n<p>N\u00e9h\u00e1ny alapvet\u0151 metrika k\u00f6zvetlen\u00fcl el\u00e9rhet\u0151 a Spanner oldal\u00e1n a Google konzolon. R\u00e9szletesebb n\u00e9zetek \u00e9rhet\u0151k el a Stackdriver seg\u00edts\u00e9g\u00e9vel, ahol k\u00fcsz\u00f6b\u00e9rt\u00e9keket \u00e9s \u00e9rtes\u00edt\u00e9si ir\u00e1nyelveket is be\u00e1ll\u00edthat.<\/p>\n<h4>Hozz\u00e1f\u00e9r\u00e9s az er\u0151forr\u00e1sokhoz?<\/h4>\n<p>\nA MySQL sz\u00e9lesk\u00f6r\u0171 \u00e9s rendk\u00edv\u00fcl r\u00e9szletes felhaszn\u00e1l\u00f3i jogosults\u00e1gok\/szerepk\u00f6r\u00f6k be\u00e1ll\u00edt\u00e1sait k\u00edn\u00e1lja. K\u00f6nnyen be\u00e1ll\u00edthat\u00f3 egy adott t\u00e1bl\u00e1hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9s, vagy ak\u00e1r annak csak n\u00e9h\u00e1ny oszlop\u00e1hoz. A Cloud Spanner a Google Identity &amp; Access Management (IAM) eszk\u00f6z\u00e9t haszn\u00e1lja, amely lehet\u0151v\u00e9 teszi, hogy politik\u00e1kat \u00e9s jogosults\u00e1gokat csak nagyon magas szinten \u00e1ll\u00edtsunk be. A legnagyobb r\u00e9szletess\u00e9g\u0171 opci\u00f3 az adatb\u00e1zis szint\u0171 jogosults\u00e1g, ami nem illeszkedik a legt\u00f6bb termel\u00e9si esethez. Ez a korl\u00e1toz\u00e1s arra k\u00e9nyszer\u00edt, hogy kieg\u00e9sz\u00edt\u0151 biztons\u00e1gi int\u00e9zked\u00e9seket adjunk a k\u00f3dunkhoz, az infrastrukt\u00far\u00e1nkhoz, vagy mindkett\u0151h\u00f6z, hogy megakad\u00e1lyozzuk a Spanner er\u0151forr\u00e1sainak jogosulatlan felhaszn\u00e1l\u00e1s\u00e1t.<\/p>\n<h4>Biztons\u00e1gi ment\u00e9sek?<\/h4>\n<p>\nEgyszer\u0171en fogalmazva, a Cloud Spannerben nincsenek biztons\u00e1gi ment\u00e9sek. B\u00e1r a Google magas SLA k\u00f6vetelm\u00e9nyei biztos\u00edtani tudj\u00e1k, hogy ne vesz\u00edts\u00fcnk el adatokat hardver- vagy adatb\u00e1zis-meg\u00e1ll\u00e1sok miatt, az emberi hib\u00e1k, alkalmaz\u00e1si hib\u00e1k stb. ellen v\u00e9dekezni kell. Mindannyian tudjuk a szab\u00e1lyt: a magas rendelkez\u00e9sre \u00e1ll\u00e1s nem helyettes\u00edti a racion\u00e1lis biztons\u00e1gi ment\u00e9si strat\u00e9gi\u00e1t. Jelenleg az adatok biztons\u00e1gi ment\u00e9s\u00e9nek egyetlen m\u00f3dja, hogy a programmal folyamatosan \u00e1tvitess\u00fck \u0151ket az adatb\u00e1zisb\u00f3l egy k\u00fcl\u00f6n t\u00e1rol\u00e1si k\u00f6rnyezetbe.<\/p>\n<h4>Lek\u00e9rdez\u00e9si teljes\u00edtm\u00e9ny?<\/h4>\n<p>\nAdatok bet\u00f6lt\u00e9s\u00e9re \u00e9s lek\u00e9rdez\u00e9sek tesztel\u00e9s\u00e9re a Yahoo! Cloud Serving Benchmarkot haszn\u00e1ltuk. Az al\u00e1bbi t\u00e1bl\u00e1zat a B YCSB munkaterhel\u00e9st mutatja 95%-os olvas\u00e1si ar\u00e1ny mellett \u00e9s 5%-os \u00edr\u00e1si ar\u00e1ny mellett.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/8fca14875af33c8ed3cd04b602c52b78.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* A terhel\u00e9ses teszt a n1-standard-32 (32 vCPU, 120 GB mem\u00f3ria) sz\u00e1m\u00edt\u00e1si motort haszn\u00e1lva k\u00e9sz\u00fclt, \u00e9s a teszt p\u00e9ld\u00e1ny sosem volt sz\u0171k keresztmetszet a tesztek sor\u00e1n.<\/i><br \/>\n<i>** Egy YCSB p\u00e9ld\u00e1ny maxim\u00e1lis sz\u00e1lainak sz\u00e1ma 400. \u00d6sszesen hat p\u00e1rhuzamos YCSB tesztp\u00e9ld\u00e1nyt kellett futtatni, hogy \u00f6sszesen 2400 sz\u00e1lat kapjunk.<\/i><\/p>\n<p>A teszteredm\u00e9nyek alapj\u00e1n, k\u00fcl\u00f6n\u00f6sen a processzor terhel\u00e9s\u00e9nek \u00e9s TPS-nek a kombin\u00e1ci\u00f3j\u00e1t figyelembe v\u00e9ve, vil\u00e1gosan l\u00e1tjuk, hogy a Cloud Spanner j\u00f3l sk\u00e1l\u00e1zhat\u00f3. A nagy terhel\u00e9s, amelyet sok sz\u00e1l okoz, kompenz\u00e1l\u00f3dik a Cloud Spanner klaszter\u00e9ben l\u00e9v\u0151 csom\u00f3pontok magas sz\u00e1m\u00e1val. B\u00e1r a k\u00e9sleltet\u00e9s viszonylag magasnak t\u0171nik, k\u00fcl\u00f6n\u00f6sen 2400 sz\u00e1l haszn\u00e1lata eset\u00e9n, a pontosabb adatok megszerz\u00e9s\u00e9hez sz\u00fcks\u00e9ges lehet a sz\u00e1m\u00edt\u00e1si motor 6 kisebb p\u00e9ld\u00e1ny\u00e1n t\u00f6rt\u00e9n\u0151 \u00fajb\u00f3li tesztel\u00e9s. Minden p\u00e9ld\u00e1ny egy YCSB tesztet futtat ahelyett, hogy egy nagy CE p\u00e9ld\u00e1nyt haszn\u00e1lna 6 p\u00e1rhuzamos teszttel. Ez\u00e1ltal k\u00f6nnyebb megk\u00fcl\u00f6nb\u00f6ztetni a Cloud Spanner lek\u00e9rdez\u00e9si k\u00e9sleltet\u00e9seit \u00e9s a h\u00e1l\u00f3zati kapcsolatb\u00f3l ered\u0151 k\u00e9sleltet\u00e9seket a Cloud Spanner \u00e9s a teszteket v\u00e9gz\u0151 CE p\u00e9ld\u00e1ny k\u00f6z\u00f6tt.<\/p>\n<h3>Hogyan teljes\u00edt a Cloud Spanner OLAP-k\u00e9nt?<\/h3>\n<p><\/p>\n<h4>Particion\u00e1l\u00e1s?<\/h4>\n<p>\nAz adatok fizikai \u00e9s\/vagy logikai f\u00fcggetlen szegmensekre, \u00fagynevezett part\u00edci\u00f3kra val\u00f3 feloszt\u00e1sa egy rendk\u00edv\u00fcl n\u00e9pszer\u0171 fogalom, amely a legt\u00f6bb OLAP-rendszerre jellemz\u0151. A part\u00edci\u00f3k jelent\u0151sen jav\u00edthatj\u00e1k a lek\u00e9rdez\u00e9sek teljes\u00edtm\u00e9ny\u00e9t \u00e9s az adatb\u00e1zis karbantarthat\u00f3s\u00e1g\u00e1t. A part\u00edci\u00f3k r\u00e9szletesebb t\u00e1rgyal\u00e1sa \u00f6n\u00e1ll\u00f3 cikket ig\u00e9nyelne, ez\u00e9rt csak eml\u00edt\u00e9st nyer a part\u00edci\u00f3s s\u00e9ma \u00e9s a tov\u00e1bbi al-part\u00edci\u00f3k fontoss\u00e1ga. Az adatok part\u00edci\u00f3kra \u00e9s ak\u00e1r al-part\u00edci\u00f3kra t\u00f6rt\u00e9n\u0151 bont\u00e1s\u00e1nak lehet\u0151s\u00e9ge kulcsfontoss\u00e1g\u00fa az analitikai lek\u00e9rdez\u00e9sek teljes\u00edtm\u00e9nye szempontj\u00e1b\u00f3l.<\/p>\n<p>A Cloud Spanner nem t\u00e1mogatja a part\u00edci\u00f3kat mint olyanokat. Az adatokat a bels\u0151 strukt\u00far\u00e1kon a \u00fagynevezett <i>met\u00f3dus seg\u00edts\u00e9g\u00e9vel. \u00cdgy egy t\u00f6mb\u00f6t kapunk, ahol az egyes t\u00f6mbelemek, az 0-\u00e1s indexet kezdve, a d\u00e1tum egy-egy elem\u00e9vel felelnek meg a sz\u00f3k\u00f6z el\u0151tt \u00e9s ut\u00e1n.<\/i>-k alapj\u00e1n a prim\u00e9r kulcs intervallumok szerint osztja fel. A feloszt\u00e1s automatikusan t\u00f6rt\u00e9nik, hogy kiegyenl\u00edtse a terhel\u00e9st a Cloud Spanner klaszter\u00e9ben. A Cloud Spanner egyik hasznos funkci\u00f3ja a sz\u00fcl\u0151t\u00e1bla (olyan t\u00e1bla, amely nem keveredik m\u00e1sokkal) alapvet\u0151 terhel\u00e9s\u00e9nek part\u00edcion\u00e1l\u00e1sa. A Spanner automatikusan meghat\u00e1rozza, hogy <i>met\u00f3dus seg\u00edts\u00e9g\u00e9vel. \u00cdgy egy t\u00f6mb\u00f6t kapunk, ahol az egyes t\u00f6mbelemek, az 0-\u00e1s indexet kezdve, a d\u00e1tum egy-egy elem\u00e9vel felelnek meg a sz\u00f3k\u00f6z el\u0151tt \u00e9s ut\u00e1n. <\/i>azok az adatok, amelyeket gyakrabban olvasnak, mint m\u00e1sok a <i>met\u00f3dus seg\u00edts\u00e9g\u00e9vel. \u00cdgy egy t\u00f6mb\u00f6t kapunk, ahol az egyes t\u00f6mbelemek, az 0-\u00e1s indexet kezdve, a d\u00e1tum egy-egy elem\u00e9vel felelnek meg a sz\u00f3k\u00f6z el\u0151tt \u00e9s ut\u00e1n.<\/i>-kban, \u00e9s d\u00f6nt\u00e9st hozhat a tov\u00e1bbi feloszt\u00e1sr\u00f3l. \u00cdgy a lek\u00e9rdez\u00e9shez t\u00f6bb csom\u00f3pont is bevonhat\u00f3, ami szint\u00e9n hat\u00e9konyan n\u00f6veli a teljes\u00edtm\u00e9nyt.<\/p>\n<h4>Adatok bet\u00f6lt\u00e9se?<\/h4>\n<p>\nA Cloud Spanner t\u00f6meges adatokhoz hasonl\u00f3 a hagyom\u00e1nyos bet\u00f6lt\u00e9shez. A maxim\u00e1lis teljes\u00edtm\u00e9ny el\u00e9r\u00e9s\u00e9hez n\u00e9h\u00e1ny aj\u00e1nl\u00e1st be kell tartania, bele\u00e9rtve a k\u00f6vetkez\u0151ket:<\/p>\n<ul>\n<li>Rendezze adatokat els\u0151dleges kulcs szerint.<\/li>\n<li>Ossza \u0151ket 10*-re.<i>csom\u00f3pontok sz\u00e1m\u00e1nak.<\/i> k\u00fcl\u00f6n szekci\u00f3kra.<\/li>\n<li>Hozzon l\u00e9tre egy feladatcsomagot, amely p\u00e1rhuzamosan t\u00f6lti be az adatokat.<\/li>\n<\/ul>\n<p>\nEzzel az adatbet\u00f6lt\u00e9ssel minden Cloud Spanner csom\u00f3pont haszn\u00e1latban van.<\/p>\n<p>Az A YCSB munkaterhel\u00e9st haszn\u00e1ltuk egy 10M soros adathalmoz l\u00e9trehoz\u00e1s\u00e1hoz.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/89b9c0353716be2d389b3e8da82781ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* A terhel\u00e9ses tesztet az n1-standard-32 sz\u00e1m\u00edt\u00e1si motorn\u00e1l (32 vCPU, 120 GB mem\u00f3ria) hajtott\u00e1k v\u00e9gre, \u00e9s a tesztp\u00e9ld\u00e1ny soha nem volt sz\u0171k keresztmetszet a tesztek sor\u00e1n.<br \/>\n** Egy csom\u00f3pontos be\u00e1ll\u00edt\u00e1s nem aj\u00e1nlott b\u00e1rmilyen termel\u00e9si terhel\u00e9sre.<\/i><\/p>\n<p>Ahogy kor\u00e1bban eml\u00edtettem, a Cloud Spanner automatikusan kezeli a split-eket a terhel\u00e9s\u00fck alapj\u00e1n, ez\u00e9rt az eredm\u00e9nyek javulnak a tesztek sorozatos megism\u00e9tl\u00e9se ut\u00e1n. A itt bemutatott eredm\u00e9nyek a legjobbak, amelyeket el\u00e9rt\u00fcnk. A fenti sz\u00e1mok alapj\u00e1n l\u00e1thatjuk, hogy a Cloud Spanner (j\u00f3l) m\u00e9retezhet\u0151 a klaszter csom\u00f3pontjainak sz\u00e1m\u00e1nak n\u00f6veked\u00e9s\u00e9vel. Azok a sz\u00e1mok, amelyek kiemelkednek, rendk\u00edv\u00fcl alacsony \u00e1tlagos k\u00e9sleltet\u00e9st jelentenek, amelyek ellent\u00e9tben \u00e1llnak a vegyes munkaterhel\u00e9sek (95% olvas\u00e1s \u00e9s 5% \u00edr\u00e1s) eredm\u00e9nyeivel, ahogy a fenti r\u00e9szben le\u00edrtuk.<\/p>\n<h4>M\u00e9retez\u00e9s?<\/h4>\n<p>\nA Cloud Spanner csom\u00f3pontok sz\u00e1m\u00e1nak n\u00f6vel\u00e9se \u00e9s cs\u00f6kkent\u00e9se egy kattint\u00e1ssal v\u00e9grehajthat\u00f3 feladat. Ha gyorsan szeretne adatokat bet\u00f6lteni, fontolja meg, hogy a maxim\u00e1lisra (eset\u00fcnkben 25 csom\u00f3pont az US-EAST r\u00e9gi\u00f3ban) gyors\u00edtja az p\u00e9ld\u00e1nyt, majd cs\u00f6kkentse a csom\u00f3pontok sz\u00e1m\u00e1t, amelyek megfelelnek a szok\u00e1sos terhel\u00e9s\u00e9nek, miut\u00e1n az \u00f6sszes adat beker\u00fclt az adatb\u00e1zisba, figyelembe v\u00e9ve a 2 TB\/csom\u00f3pont korl\u00e1tj\u00e1t.<\/p>\n<p>Ezt a korl\u00e1tot eml\u00e9keztettek r\u00e1nk egy sokkal kisebb adatb\u00e1zissal is. N\u00e9h\u00e1ny terhel\u00e9ses tesztfuttat\u00e1s ut\u00e1n az adatb\u00e1zisunk k\u00f6r\u00fclbel\u00fcl 155 GB m\u00e9ret\u0171 volt, \u00e9s amikor cs\u00f6kkentett\u00fck az egy csom\u00f3pontos p\u00e9ld\u00e1nyra, a k\u00f6vetkez\u0151 hib\u00e1t kaptuk:<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/4a46c97e7943b5105bf178316dc67433.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiker\u00fclt cs\u00f6kkenten\u00fcnk a m\u00e9retet 25-r\u0151l 2 p\u00e9ld\u00e1nyra, de megakadtunk a k\u00e9t csom\u00f3pontn\u00e1l.<\/p>\n<p>A Cloud Spanner klaszter csom\u00f3pontjainak sz\u00e1m\u00e1nak n\u00f6vel\u00e9s\u00e9t vagy cs\u00f6kkent\u00e9s\u00e9t REST API seg\u00edts\u00e9g\u00e9vel lehet automatiz\u00e1lni. Ez k\u00fcl\u00f6n\u00f6sen hasznos lehet a rendszer megn\u00f6vekedett terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9s\u00e9re a cs\u00facsid\u0151szakokban.<\/p>\n<h4>OLAP lek\u00e9rdez\u00e9sek teljes\u00edtm\u00e9nye?<\/h4>\n<p>\nKezdetben jelent\u0151s id\u0151t szerett\u00fcnk volna szentelni a Spanner \u00e9rt\u00e9kel\u00e9s\u00e9nek ezen r\u00e9sz\u00e9nek. N\u00e9h\u00e1ny SELECT COUNT ut\u00e1n azonnal r\u00e1j\u00f6tt\u00fcnk, hogy a tesztel\u00e9s r\u00f6vid lesz, \u00e9s a Spanner NEM lesz alkalmas OLAP motornak. F\u00fcggetlen\u00fcl att\u00f3l, hogy h\u00e1ny csom\u00f3pont van a klaszterben, a 10M soros t\u00e1bl\u00e1zatban az egyszer\u0171 sorok sz\u00e1m\u00e1nak kiv\u00e1laszt\u00e1sa 55-60 m\u00e1sodpercet vett ig\u00e9nybe. Ezenk\u00edv\u00fcl b\u00e1rmely lek\u00e9rdez\u00e9s, amely nagyobb mennyis\u00e9g\u0171 mem\u00f3ri\u00e1t ig\u00e9nyelt az \u00e1tmeneti eredm\u00e9nyek t\u00e1rol\u00e1s\u00e1hoz, OOM hib\u00e1val v\u00e9gz\u0151d\u00f6tt.<\/p>\n<p><code>SELECT COUNT(DISTINCT(field0)) FROM usertable; \u2014 (10M k\u00fcl\u00f6nb\u00f6z\u0151 \u00e9rt\u00e9k) -&gt; SpoolingHashAggregateIterator elfogyott a mem\u00f3ri\u00e1b\u00f3l az \u00faj sor sor\u00e1n.<\/code><\/p>\n<p>N\u00e9h\u00e1ny sz\u00e1madat a TPC-H lek\u00e9rdez\u00e9sekhez Todd Lipkon cikk\u00e9ben tal\u00e1lhat\u00f3. <noindex><a rel=\"nofollow\" href=\"https:\/\/kudu.apache.org\/2017\/10\/23\/nosql-kudu-spanner-slides.html\">Nosql-kudu-spanner-slides.html<\/a><\/noindex>, 42. \u00e9s 43. di\u00e1k. Ezek a sz\u00e1mok \u00f6sszhangban vannak a saj\u00e1t eredm\u00e9nyeinkkel (sajnos).<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: j\u00f3, rossz, cs\u00fanya\" src=\"\/wp-content\/uploads\/2020\/02\/d070c839bbc62b1ba1bebbaf64127e93.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>4. K\u00f6vetkeztet\u00e9seink<\/h4>\n<p>\nA Cloud Spanner aktu\u00e1lis funkci\u00f3inak figyelembev\u00e9tel\u00e9vel neh\u00e9z elk\u00e9pzelni, hogy ez egyszer\u0171 helyettes\u00edt\u00e9se legyen a megl\u00e9v\u0151 OLTP megold\u00e1soknak, k\u00fcl\u00f6n\u00f6sen ha az ig\u00e9nyeid meghaladj\u00e1k azt. Jelent\u0151s id\u0151t kellene elt\u00f6lteni egy olyan megold\u00e1s ki\u00e9p\u00edt\u00e9s\u00e9vel, amely figyelembe veszi a Cloud Spanner h\u00e1tr\u00e1nyait.<\/p>\n<p>Amikor elkezdt\u00fck \u00e9rt\u00e9kelni a Cloud Spanner-t, azt v\u00e1rtuk, hogy a kezel\u00e9si funkci\u00f3i legal\u00e1bb hasonl\u00f3 szint\u0171ek lesznek, mint m\u00e1s Google SQL megold\u00e1sok\u00e9. De meglep\u0151dt\u00fcnk a teljes biztons\u00e1gi m\u00e1solatok hi\u00e1ny\u00e1n \u00e9s a nagyon korl\u00e1tozott er\u0151forr\u00e1s-hozz\u00e1f\u00e9r\u00e9si kontrollon. Arr\u00f3l nem is besz\u00e9lve, hogy hi\u00e1nyoznak a n\u00e9zetek, a helyi fejleszt\u0151i k\u00f6rnyezet, a nem t\u00e1mogatott szekvenci\u00e1k, a JDBC, amely nem t\u00e1mogatja a DML-t \u00e9s DDL-t, \u00e9s \u00edgy tov\u00e1bb.<\/p>\n<p>Teh\u00e1t hov\u00e1 mehet az, akinek sk\u00e1l\u00e1zhat\u00f3 tranzakci\u00f3s adatb\u00e1zisra van sz\u00fcks\u00e9ge? \u00dagy t\u0171nik, hogy egyel\u0151re a piacon nincs egys\u00e9ges megold\u00e1s, amely minden felhaszn\u00e1l\u00e1si lehet\u0151s\u00e9ghez illeszkedne. Sz\u00e1mos z\u00e1rt \u00e9s ny\u00edlt forr\u00e1sk\u00f3d\u00fa megold\u00e1s l\u00e9tezik (n\u00e9melyiket eml\u00edti ez a cikk), mindegyiknek megvannak a maga el\u0151nyei \u00e9s h\u00e1tr\u00e1nyai, de egyik sem k\u00edn\u00e1l SaaS-t 99,999%-os SLA-val \u00e9s magas fok\u00fa konzisztenci\u00e1val. Ha a magas SLA szint a legf\u0151bb c\u00e9lja, \u00e9s nem hajland\u00f3 saj\u00e1t megold\u00e1st l\u00e9trehozni t\u00f6bb felh\u0151 k\u00f6rnyezethez, a Cloud Spanner lehet az a megold\u00e1s, amire sz\u00fcks\u00e9ge van. De tudnia kell az \u00f6sszes korl\u00e1toz\u00e1s\u00e1r\u00f3l.<\/p>\n<p>A tisztess\u00e9g kedv\u00e9\u00e9rt meg kell jegyezni, hogy a Cloud Spanner 2017 tavasz\u00e1n v\u00e1lt \u00e1ltal\u00e1nosan el\u00e9rhet\u0151v\u00e9, \u00edgy \u00e9sszer\u0171 elv\u00e1rni, hogy a jelenlegi hi\u00e1nyoss\u00e1gai v\u00e9g\u00fcl elt\u0171njenek (rem\u00e9lhet\u0151leg), \u00e9s ha ez megt\u00f6rt\u00e9nik, az v\u00e1ltoz\u00e1st hozhat. V\u00e9gs\u0151 soron a Cloud Spanner nem csup\u00e1n egy k\u00fcls\u0151 projekt a Google sz\u00e1m\u00e1ra. A Google ezt haszn\u00e1lja m\u00e1s Google term\u00e9kek alapjak\u00e9nt. \u00c9s amikor a Google nemr\u00e9giben a Megastore-t a Google Cloud Storage-ban a Cloud Spanner-re cser\u00e9lte, ez lehet\u0151v\u00e9 tette, hogy a Google Cloud Storage szigor\u00faan konzisztens legyen az objektumlist\u00e1kra vonatkoz\u00f3an vil\u00e1gszerte (ami azonban tov\u00e1bbra sem vonatkozik a <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">Amazonra<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">S3<\/a><\/noindex>).<\/p>\n<p>Teh\u00e1t van rem\u00e9ny... rem\u00e9lj\u00fck.<\/p>\n<p>Ezzel v\u00e9gezt\u00fcnk. Ahogyan a cikk szerz\u0151je is, mi is folytatjuk a rem\u00e9nyked\u00e9st, \u00f6n mit gondol err\u0151l? \u00cdrja meg kommentben!<\/p>\n<p><b>Mindenkit szeretettel v\u00e1runk a <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">ingyenes webin\u00e1riumra<\/a><\/noindex> keretein bel\u00fcl, ahol r\u00e9szletesen bemutatjuk a tanfolyamot.<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\"> \u201eAWS fejleszt\u0151knek\u201d<\/a><\/noindex> az OTUS-t\u00f3l.<\/b><br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/489012\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u044b \u043f\u0440\u0435\u0432\u0435\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043e Google Cloud Spanner, \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0432 \u0435\u0435 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abAWS \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Lightspeed HQ. \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 POS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0440\u0433\u043e\u0432\u0446\u0435\u0432, \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0434\u0430\u0432\u0446\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443, Lightspeed \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":69569,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-69568","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-20T12:24:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Google Cloud Spanner: j\u00f3, rossz, cs\u00faf | ProHoster","description":"Hell\u00f3, Habr olvas\u00f3i. Hagyom\u00e1nyosan tov\u00e1bbra is \u00e9rdekes anyagokat osztunk meg az \u00faj kurzusok kezdete el\u0151tt.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Google Cloud Spanner: \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043f\u043b\u043e\u0445\u043e\u0439, \u0437\u043b\u043e\u0439 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-20T12:24:23+00:00","article:modified_time":"2020-03-03T13:14:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"69568","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:20:25","updated":"2022-09-30 15:10:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/69568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=69568"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/69568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/69569"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=69568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=69568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=69568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}