{"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\/sq\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","title":{"rendered":"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>P\u00ebrsh\u00ebndetje, an\u00ebtar\u00eb t\u00eb Habr. Tradicionalisht, vazhdojm\u00eb t\u00eb ndajm\u00eb materiale interesante para fillimit t\u00eb kurseve t\u00eb reja. Sot, ve\u00e7an\u00ebrisht p\u00ebr ju, kemi p\u00ebrkthyer nj\u00eb artikull mbi Google Cloud Spanner, duke e lidhur at\u00eb me lansimin e kursit. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">\u00abAWS p\u00ebr zhvilluesit\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/b27b8a09543d10b078480c317553ca46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Fillimisht e publikuar n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lightspeedhq.com\/blog\/\">blogun e Lightspeed HQ<\/a><\/noindex>.<\/i><\/p>\n<p>Si nj\u00eb kompani q\u00eb ofron nj\u00eb gam\u00eb t\u00eb gjer\u00eb zgjidhjesh POS n\u00eb re p\u00ebr tregtar\u00ebt me pakic\u00eb, restorantet dhe shit\u00ebsit online nga e gjith\u00eb bota, Lightspeed p\u00ebrdor disa lloje t\u00eb ndryshme platformash bazash t\u00eb dh\u00ebnash p\u00ebr shum\u00eb raste transaksionesh, analitik\u00eb dhe k\u00ebrkime. \u00c7do nj\u00ebra nga k\u00ebto platforma t\u00eb bazave t\u00eb dh\u00ebnash ka forcat dhe dob\u00ebsit\u00eb e saj. Prandaj, kur Google prezantoi n\u00eb treg Cloud Spanner \u2014 funksione premtuese, t\u00eb paindikative n\u00eb bot\u00ebn e bazave t\u00eb t\u00eb dh\u00ebnave relacionale, si shkall\u00ebzimi horizontal praktikisht t\u00eb pa kufizuar dhe nj\u00eb marr\u00ebveshje p\u00ebr nivelin e sh\u00ebrbimit (SLA) prej 99.999% \u2014 ne nuk mund\u00ebm t\u00eb humbnim mund\u00ebsin\u00eb ta kishim at\u00eb n\u00eb duar!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nP\u00ebr t'i dh\u00ebn\u00eb nj\u00eb pasqyr\u00eb t\u00eb plot\u00eb t\u00eb p\u00ebrvoj\u00ebs son\u00eb me Cloud Spanner, si dhe kriteret e vler\u00ebsimit q\u00eb ne p\u00ebrdor\u00ebm, do t\u00eb shqyrtojm\u00eb temat n\u00eb vazhdim:<\/p>\n<ol>\n<li>Kriteret tona t\u00eb vler\u00ebsimit<\/li>\n<li>Cloud Spanner me dy fjal\u00eb<\/li>\n<li>Vler\u00ebsimi yn\u00eb<\/li>\n<li>Konkluzionet tona<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/29ed599362fb189283faa9215c18297a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>1. Kritet tona p\u00ebr vler\u00ebsimin<\/h2>\n<p>\nPara se t\u00eb thellohemi n\u00eb tiparet e Cloud Spanner, ngjashm\u00ebrit\u00eb dhe dallimet e saj me zgjidhjet e tjera n\u00eb treg, le t\u00eb flasim fillimisht p\u00ebr rastet kryesore t\u00eb p\u00ebrdorimit q\u00eb keqp\u00ebrdor\u00ebm kur shqyrtuam ku ta vendosnim Cloud Spanner n\u00eb infrastruktur\u00ebn ton\u00eb:<\/p>\n<ul>\n<li>Si nj\u00eb z\u00ebvend\u00ebsim (dominues) p\u00ebr zgjidhjet tradicionale t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave SQL<\/li>\n<li>Si nj\u00eb zgjidhje OLTP me mb\u00ebshtetje p\u00ebr OLAP<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i><b>Sh\u00ebnim:<\/b> P\u00ebr thjesht\u00ebsi dhe leht\u00ebsi krahasimi, ky artikull e krahason Cloud Spanner me variantet MySQL t\u00eb familjeve t\u00eb zgjidhjeve GCP Cloud SQL dhe Amazon AWS RDS.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h4>P\u00ebrdorimi i Cloud Spanner si nj\u00eb z\u00ebvend\u00ebsim p\u00ebr zgjidhjet tradicionale t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave SQL<\/h4>\n<p>\nN\u00eb mjedisin <i>tradicional <\/i>t\u00eb bazave t\u00eb t\u00eb dh\u00ebnave, kur koha e p\u00ebrgjigjes p\u00ebr k\u00ebrkesat ndaj baz\u00ebs s\u00eb t\u00eb dh\u00ebnave afrohet ose madje tejkalon vlerat e njohura t\u00eb pragut t\u00eb aplikacionit (kryesisht p\u00ebr shkak t\u00eb rritjes s\u00eb numrit t\u00eb p\u00ebrdoruesve dhe\/ose k\u00ebrkesave), ekzistojn\u00eb disa m\u00ebnyra p\u00ebr t\u00eb ulur koh\u00ebn e p\u00ebrgjigjes n\u00eb nivele t\u00eb pranueshme. Megjithat\u00eb, shumica e k\u00ebtyre zgjidhjeve k\u00ebrkojn\u00eb nd\u00ebrhyrje manuale.<\/p>\n<p>P\u00ebr shembull, hapin e par\u00eb q\u00eb duhet t\u00eb nd\u00ebrmerrni \u00ebsht\u00eb t\u00eb shikoni parametrat e ndrysh\u00ebm t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave q\u00eb lidhen me performanc\u00ebn dhe t'i konfiguroni ato n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb p\u00ebrputhen m\u00eb mir\u00eb me modelet e skenar\u00ebve t\u00eb p\u00ebrdorimit t\u00eb aplikacioneve. N\u00ebse kjo d\u00ebshton, mund t\u00eb zgjidhni t\u00eb shkalloni baz\u00ebn e t\u00eb dh\u00ebnave verticalisht ose horizontalisht.<\/p>\n<p>Shkall\u00ebzimi vertical i aplikacionit p\u00ebrfshin p\u00ebrmir\u00ebsimin e instanc\u00ebs s\u00eb serverit, zakonisht duke shtuar m\u00eb shum\u00eb procesor\u00eb\/b\u00ebrthama, m\u00eb shum\u00eb memorie t\u00eb p\u00ebrhershme, ruajtje m\u00eb t\u00eb shpejt\u00eb etj. Shtimi i burimeve t\u00eb tjera harduerike \u00e7on n\u00eb rritjen e performanc\u00ebs s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, e cila matet kryesisht n\u00eb transaksione p\u00ebr sekond\u00eb dhe vones\u00eb transaksionesh p\u00ebr sistemet OLTP. Sistemet e bazave t\u00eb t\u00eb dh\u00ebnave relacionale (t\u00eb cilat p\u00ebrdorin nj\u00eb qasje me shum\u00eb prova), si MySQL, shkall\u00ebzohen mir\u00eb verticalisht.<\/p>\n<p>Ky qasje ka disa disavantazhe, por ajo m\u00eb e dukshme \u00ebsht\u00eb madh\u00ebsia maksimale e serverit n\u00eb treg. Pasi t\u00eb arrihet kufiri i instanc\u00ebs m\u00eb t\u00eb madhe t\u00eb serverit, ka vet\u00ebm nj\u00eb rrug\u00eb: shkall\u00ebzim horizontal.<\/p>\n<p>Shkall\u00ebzimi horizontal \u00ebsht\u00eb nj\u00eb qasje ku m\u00eb shum\u00eb server\u00eb shtohen n\u00eb klaster, p\u00ebr t\u00eb rritur idealisht performanc\u00ebn linearisht me shtimin e numrit t\u00eb server\u00ebve. Shumica e sistemeve t\u00eb bazave t\u00eb t\u00eb dh\u00ebnave <i>tradicional <\/i>kan\u00eb probleme me shkall\u00ebzimin horizontal ose nuk mund t\u00eb shkall\u00ebzohen fare. P\u00ebr shembull, MySQL mund t\u00eb shkall\u00ebzohet horizontalisht p\u00ebr operacionet e leximit, duke shtuar slave-lexues, por nuk mund t\u00eb shkall\u00ebzohet horizontalisht p\u00ebr operacionet e shkrimit.<\/p>\n<p>Nga ana tjet\u00ebr, p\u00ebr shkak t\u00eb natyr\u00ebs s\u00eb tij, Cloud Spanner mund t\u00eb shkall\u00ebzohet leht\u00ebsisht horizontalisht me nd\u00ebrhyrje minimale.<\/p>\n<p>Nj\u00eb<i> Baze t\u00eb dh\u00ebnash si sh\u00ebrbim<\/i> duhet t\u00eb vler\u00ebsohet nga k\u00ebndv\u00ebshtrime t\u00eb ndryshme. Si baz\u00eb, mor\u00ebm baz\u00ebn m\u00eb t\u00eb njohur t\u00eb t\u00eb dh\u00ebnave n\u00eb re \u2014 p\u00ebr Google, GCP Cloud SQL dhe p\u00ebr Amazon, AWS RDS. N\u00eb vler\u00ebsimin ton\u00eb, u fokusuam n\u00eb kategorit\u00eb e m\u00ebposhtme:<\/p>\n<ul>\n<li>P\u00ebrputhja e karakteristikave: shkalla SQL, DDL, DML; bibliotekat e lidhjeve\/konektor\u00ebt, mb\u00ebshtetje p\u00ebr transaksionet dhe t\u00eb tjera.<\/li>\n<li>Mb\u00ebshtetje p\u00ebr zhvillimin: thjesht\u00ebsia e zhvillimit dhe testimit.<\/li>\n<li>Mb\u00ebshtetje p\u00ebr administrimin: menaxhimi i instanceve \u2014 p\u00ebr shembull, shkall\u00ebzimi lart\/posht\u00eb dhe p\u00ebrmir\u00ebsimi i instanceve; SLA, kopje rezerv\u00eb dhe rikuperim; siguria\/kontrolli i aksesit.<\/li>\n<\/ul>\n<p><\/p>\n<h4>P\u00ebrdorimi i Cloud Spanner si zgjidhje OLTP me mb\u00ebshtetje OLAP<\/h4>\n<p>\nMegjith\u00ebse Google nuk deklaron qart\u00eb se Cloud Spanner \u00ebsht\u00eb i destinuar p\u00ebr p\u00ebrpunimin analitik, ai ndan disa atributet me mekanizma t\u00eb tjer\u00eb si Apache Impala &amp; Kudu dhe YugaByte, t\u00eb cilat jan\u00eb t\u00eb destinuara p\u00ebr ngarkesa pune OLAP.<\/p>\n<p>Edhe n\u00ebse do t\u00eb kishte vet\u00ebm nj\u00eb mund\u00ebsi t\u00eb vog\u00ebl q\u00eb Cloud Spanner p\u00ebrfshinte nj\u00eb motor t\u00eb p\u00ebrputhsh\u00ebm horizontalisht t\u00eb shkall\u00ebzuar HTAP (p\u00ebrpunimi hibrid t\u00eb transaksioneve\/analitik\u00ebs) me nj\u00eb grup funksionesh OLAP (m\u00eb shum\u00eb ose m\u00eb pak) t\u00eb p\u00ebrdorsh\u00ebm, ne mendojm\u00eb se kjo do t\u00eb meritonte v\u00ebmendjen ton\u00eb.<\/p>\n<p>Duke e mbajtur k\u00ebt\u00eb n\u00eb mend, ne shqyrtuam kategorit\u00eb e m\u00ebposhtme:<\/p>\n<ul>\n<li>Ngarkimi i t\u00eb dh\u00ebnave, indekset dhe mb\u00ebshtetje p\u00ebr ndarjen p\u00ebrve\u00e7<\/li>\n<li>Performanca e k\u00ebrkimeve dhe DML<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Cloud Spanner n\u00eb dy fjal\u00eb<\/h2>\n<p>\nGoogle Spanner \u00ebsht\u00eb nj\u00eb sistem i menaxhimit t\u00eb bazave t\u00eb dh\u00ebnash relacional (RDBMS) n\u00eb klaster, q\u00eb Google e p\u00ebrdor p\u00ebr disa nga sh\u00ebrbimet e saj. Google e b\u00ebri at\u00eb t\u00eb disponueshme p\u00ebr p\u00ebrdoruesit e Google Cloud Platform n\u00eb fillim t\u00eb vitit 2017.<\/p>\n<p>Ja disa nga atributet e Cloud Spanner:<\/p>\n<ul>\n<li>Klaster RDBMS i shkall\u00ebzuar me sakt\u00ebsi t\u00eb lart\u00eb: p\u00ebrdor sinkronizimin e hardware-it p\u00ebr t\u00eb siguruar koherenc\u00ebn e t\u00eb dh\u00ebnave.<\/li>\n<li>Mb\u00ebshtetje p\u00ebr transaksionet nd\u00ebrmjet tabelave: transaksionet mund t\u00eb p\u00ebrfshijn\u00eb disa tabela \u2014 nuk kufizohen domosdoshm\u00ebrisht n\u00eb nj\u00eb tabel\u00eb (ndryshe nga Apache HBase ose Apache Kudu).<\/li>\n<li>Tabelat bazuar n\u00eb \u00e7el\u00ebsin primar: t\u00eb gjitha tabelat duhet t\u00eb ken\u00eb nj\u00eb \u00e7el\u00ebs primar t\u00eb shpallur (PK), i cili mund t\u00eb p\u00ebrb\u00ebhet nga disa kolona t\u00eb tabel\u00ebs. T\u00eb dh\u00ebnat e tabel\u00ebs ruhen n\u00eb rendin e PK, duke e b\u00ebr\u00eb at\u00eb shum\u00eb t\u00eb efektshme dhe t\u00eb shpejt\u00eb p\u00ebr k\u00ebrkimin sipas PK. Si\u00e7 ndodh me sistemet e tjera t\u00eb bazuara n\u00eb PK, realizimi duhet t\u00eb modeloj\u00eb me kujdes rastet e p\u00ebrdorimit p\u00ebr t\u00eb arritur <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/schema-and-data-model\">performanc\u00ebn m\u00eb t\u00eb mir\u00eb<\/a><\/noindex>.<\/li>\n<li>T\u00eb dh\u00ebnat e nd\u00ebrlikuara: tabelat mund t\u00eb ken\u00eb lidhje fizike me nj\u00ebra-tjetr\u00ebn. Rreshtat e tabelave t\u00eb f\u00ebmij\u00ebve mund t\u00eb lidhen me rreshtat e tabel\u00ebs prind. Ky qasje e b\u00ebn m\u00eb t\u00eb shpejt\u00eb k\u00ebrkimin p\u00ebr marr\u00ebdh\u00ebnie q\u00eb mund t\u00eb p\u00ebrcaktohen gjat\u00eb faz\u00ebs s\u00eb modelimit t\u00eb t\u00eb dh\u00ebnave, p\u00ebr shembull, kur lihen bashk\u00eb klient\u00ebt dhe faturat e tyre.<\/li>\n<li>Indeksi: Cloud Spanner mb\u00ebshtet indekse sekondar\u00eb. Indeksi p\u00ebrb\u00ebhet nga kolonat e indeksuara dhe t\u00eb gjitha kolonat e PK. N\u00ebse d\u00ebshirohet, indeksi gjithashtu mund t\u00eb p\u00ebrmbaj\u00eb kolona t\u00eb tjera q\u00eb nuk jan\u00eb indeksuar. Indeksi mund t\u00eb nd\u00ebrthuret me tabel\u00ebn prind p\u00ebr t\u00eb p\u00ebrshpejtuar k\u00ebrkesat. Ka disa kufizime q\u00eb i zbatohen indekseve, p\u00ebr shembull, numri maksimal i kolonave shtes\u00eb q\u00eb ruhet n\u00eb indeks. Gjithashtu, k\u00ebrkesat p\u00ebrmes indekseve mund t\u00eb mos jen\u00eb aq t\u00eb drejtp\u00ebrdrejta si n\u00eb DBMS-t\u00eb e tjera.<\/li>\n<\/ul>\n<p>\n<i>\u00abCloud Spanner zgjedh indeksin automatikisht vet\u00ebm n\u00eb raste t\u00eb rralla. Ve\u00e7an\u00ebrisht, Cloud Spanner nuk zgjedh indeksin sekondar automatikisht n\u00ebse k\u00ebrkesa k\u00ebrkon ndonj\u00eb kolon\u00eb q\u00eb nuk \u00ebsht\u00eb ruajtur n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/docs\/secondary-indexes\">indeks <\/a><\/noindex>\u00bb.<\/i><\/p>\n<ul>\n<li>Marr\u00ebveshja e Nivelit t\u00eb Sh\u00ebrbimit (SLA): implementim n\u00eb nj\u00eb rajon me SLA prej 99.99%; implementime multiregjionale me SLA prej 99.999%. Megjith\u00ebse vet\u00eb marr\u00ebveshja e nivelit t\u00eb sh\u00ebrbimit \u00ebsht\u00eb vet\u00ebm nj\u00eb marr\u00ebveshje dhe jo nj\u00eb garanci, besoj se punonj\u00ebsit e Google kan\u00eb disa t\u00eb dh\u00ebna t\u00eb sakta p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb deklarat\u00eb t\u00eb till\u00eb serioze. (P\u00ebr referenc\u00eb, 99.999% do t\u00eb thot\u00eb 26.3 sekonda mosfunksionimi n\u00eb muaj.)<\/li>\n<li>M\u00eb shum\u00eb: <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>Sh\u00ebnim:<\/b> Projekti Apache Tephra shton mb\u00ebshtetje t\u00eb zgjeruar p\u00ebr transaksionet n\u00eb Apache HBase (tani gjithashtu i implementuar n\u00eb Apache Phoenix si nj\u00eb version beta).<\/i><\/p><\/blockquote>\n<p><\/p>\n<h2>3. Vler\u00ebsimi yn\u00eb<\/h2>\n<p>\nPra, t\u00eb gjith\u00eb kemi lexuar deklaratat e Google rreth avantazheve t\u00eb Cloud Spanner \u2014 pothuajse shkall\u00ebzim horizontal t\u00eb pakufizuar me ruajtjen e nj\u00eb konsistenc\u00eb t\u00eb lart\u00eb dhe nj\u00eb SLA shum\u00eb t\u00eb lart\u00eb. Megjith\u00ebse k\u00ebto k\u00ebrkesa, n\u00eb \u00e7do rast, jan\u00eb jasht\u00ebzakonisht t\u00eb v\u00ebshtira p\u00ebr t'u arritur, q\u00ebllimi yn\u00eb nuk ishte t'i mohonim ato. N\u00eb vend t\u00eb k\u00ebsaj, le t\u00eb p\u00ebrqendrohemi n\u00eb gj\u00ebra t\u00eb tjera q\u00eb shqet\u00ebsojn\u00eb shumic\u00ebn e p\u00ebrdoruesve t\u00eb databaz\u00ebs: sakt\u00ebsia dhe leht\u00ebsia e p\u00ebrdorimit.<\/p>\n<h4>Ne e vler\u00ebsuam Cloud Spanner si nj\u00eb z\u00ebvend\u00ebsim p\u00ebr Sharded MySQL<\/h4>\n<p>\nGoogle Cloud SQL dhe Amazon AWS RDS, dy nga sistemet m\u00eb t\u00eb njohura OLTP n\u00eb tregun e cloud, ofrojn\u00eb nj\u00eb gam\u00eb t\u00eb gjer\u00eb funksionesh. Megjithat\u00eb, p\u00ebr t\u00eb shkall\u00ebzuar k\u00ebto databaza p\u00ebrtej madh\u00ebsis\u00eb s\u00eb nj\u00eb nj\u00ebsi, do t'ju nevojitet t\u00eb realizoni ndarjen e aplikacioneve. Ky qasje krijon kompleksitet shtes\u00eb si p\u00ebr aplikacionet ashtu edhe p\u00ebr administrimin. Ne shqyrtuam se si Spanner p\u00ebrshtatet n\u00eb skenarin e kombinuar t\u00eb disa segmenteve n\u00eb nj\u00eb instanc\u00eb dhe cilat funksione (n\u00ebse ka) mund t\u00eb duhet t\u00eb sakrifikoni.<\/p>\n<h4>P\u00ebrkrahja p\u00ebr SQL, DML dhe DDL, si dhe konektor\u00ebt dhe bibliotekat?<\/h4>\n<p>\nS\u00eb pari, kur filloni me ndonj\u00eb databaz\u00eb, duhet t\u00eb krijoni nj\u00eb model t\u00eb t\u00eb dh\u00ebnave. N\u00ebse mendoni se mund t\u00eb lidheni me JDBC Spanner me mjetin tuaj t\u00eb preferuar SQL, do t\u00eb zbuloni se mund t\u00eb k\u00ebrkoni t\u00eb dh\u00ebnat tuaja me t\u00eb, por nuk mund ta p\u00ebrdorni p\u00ebr t\u00eb krijuar tabela ose p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime (DDL) apo operacione t\u00eb \u00e7do lloji p\u00ebr futje\/ri-aktualizim\/zhbllokim (DML). JDBC zyrtar nga Google nuk mb\u00ebshtet asnj\u00ebrin prej tyre.<\/p>\n<blockquote><p><i>\u00abAktualisht, drejtuesit nuk mb\u00ebshtesin operator\u00ebt DML ose DDL\u00bb.<\/i><br \/>\nDokumentacioni i Spanner<\/p><\/blockquote>\n<p>\nMe konsol\u00ebn GCP, situata nuk \u00ebsht\u00eb m\u00eb e mir\u00eb \u2014 mund t\u00eb d\u00ebrgoni vet\u00ebm k\u00ebrkesa SELECT. Fatmir\u00ebsisht, ekziston nj\u00eb drejtues JDBC me mb\u00ebshtetje p\u00ebr DML dhe DDL nga komuniteti, duke p\u00ebrfshir\u00eb transaksionet. <noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/olavloite\/spanner-jdbc\">github.com\/olavloite\/spanner-jdbc<\/a><\/noindex>. Nd\u00ebrsa ky drejtues \u00ebsht\u00eb jasht\u00ebzakonisht i dobish\u00ebm, mungesa e nj\u00eb drejtuesi JDBC t\u00eb vetin nga Google \u00ebsht\u00eb e \u00e7uditshme. Fatmir\u00ebsisht, Google ofron nj\u00eb mb\u00ebshtetje t\u00eb gjer\u00eb p\u00ebr bibliotekat klienti (t\u00eb bazuara n\u00eb gRPC): C#, Go, Java, node.js, PHP, Python dhe Ruby.<\/p>\n<p>P\u00ebrdorimi pothuajse i detyruesh\u00ebm i API-ve t\u00eb personalizuara t\u00eb Cloud Spanner (p\u00ebr shkak t\u00eb munges\u00ebs s\u00eb DDL dhe DML n\u00eb JDBC) \u00e7on n\u00eb disa kufizime p\u00ebr zonat e lidhura t\u00eb kodit, si\u00e7 jan\u00eb grupet e lidhjes ose kornizat e lidhjes s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave (p.sh., Spring MVC). Si zakonisht, kur p\u00ebrdoret JDBC, mund t\u00eb zgjidhni lirisht grupin e preferuar t\u00eb lidhjes (p.sh., HikariCP, DBCP, C3PO etj.) q\u00eb \u00ebsht\u00eb testuar dhe funksionon mir\u00eb. N\u00eb rastin e API-ve t\u00eb personalizuara t\u00eb Spanner, ne duhet t\u00eb mb\u00ebshtetemi n\u00eb kornizat\/grupet e lidhjes\/sesionet q\u00eb kemi krijuar vet\u00eb.<\/p>\n<p>Struktura e orientuar mbi \u00e7el\u00ebsin primar (PK) i lejon Cloud Spanner t\u00eb ket\u00eb nj\u00eb akses shum\u00eb t\u00eb shpejt\u00eb n\u00eb t\u00eb dh\u00ebna p\u00ebrmes PK-s\u00eb, por gjithashtu shkakton disa probleme me k\u00ebrkesat.<\/p>\n<ul>\n<li>Nuk mund ta p\u00ebrdit\u00ebsoni vler\u00ebn e \u00e7el\u00ebsit primar; s\u00eb pari duhet t\u00eb fshini regjistrimin me PK-n\u00eb origjinale dhe ta ri-insertoni at\u00eb me vler\u00ebn e re. (Kjo \u00ebsht\u00eb e ngjashme me databazat e tjera t\u00eb orientuara mbi PK\/ mekanizmat e ruajtjes.)<\/li>\n<li>Cdo operator UPDATE dhe DELETE duhet t\u00eb specifikoj\u00eb PK-n\u00eb n\u00eb WHERE, p\u00ebr rrjedhoj\u00eb, nuk mund t\u00eb ket\u00eb operator\u00eb DELETE t\u00eb zbraz\u00ebt \u2014 gjithmon\u00eb duhet t\u00eb ket\u00eb nj\u00eb n\u00ebnk\u00ebrkes\u00eb, p\u00ebr shembull: UPDATE xxx WHERE id IN (SELECT id FROM table1)<\/li>\n<li>Mungon opsioni p\u00ebr auto-increment ose di\u00e7ka t\u00eb ngjashme q\u00eb vendos nj\u00eb sekuenc\u00eb p\u00ebr fush\u00ebn PK. P\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb t\u00eb funksionoj\u00eb, vlera p\u00ebrkat\u00ebse duhet t\u00eb krijohet n\u00eb an\u00ebn e aplikacionit.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Indekset sekondare?<\/h4>\n<p>\nGoogle Cloud Spanner ka mb\u00ebshtetje t\u00eb integruar p\u00ebr indekset sekondare. Kjo \u00ebsht\u00eb nj\u00eb ve\u00e7ori shum\u00eb e k\u00ebndshme, e cila nuk \u00ebsht\u00eb gjithmon\u00eb e pranishme n\u00eb teknologjit\u00eb e tjera. Apache Kudu aktualisht nuk mb\u00ebshtet fare indekset sekondare, nd\u00ebrsa Apache HBase nuk i mb\u00ebshtet indekset drejtp\u00ebrdrejt, por mund t\u00eb shtoj\u00eb ato p\u00ebrmes Apache Phoenix.<\/p>\n<p>Indeksit n\u00eb Kudu dhe HBase mund t\u00eb modelohen si nj\u00eb tabel\u00eb t\u00eb ve\u00e7ant\u00eb me p\u00ebrb\u00ebrje t\u00eb ndryshme t\u00eb \u00e7el\u00ebsave primar\u00eb, por atomizmi i operacioneve q\u00eb kryhen me tabel\u00ebn prind dhe tabelat indeks lidhura, duhet t\u00eb zbatohet n\u00eb nivel aplikacioni dhe nuk \u00ebsht\u00eb triviale n\u00eb nj\u00eb implementim t\u00eb sakt\u00eb.<\/p>\n<p>Si\u00e7 u p\u00ebrmend n\u00eb shqyrtimin e Cloud Spanner, indeksat e tij mund t\u00eb ndryshojn\u00eb nga ata t\u00eb MySQL. Prandaj, duhet t\u00eb tregohet kujdes i ve\u00e7ant\u00eb gjat\u00eb nd\u00ebrtimit t\u00eb pyetjeve dhe profilizimit p\u00ebr t\u00eb siguruar q\u00eb p\u00ebrdoret indeksi i duhur atje ku nevojitet.<\/p>\n<h4>Pamjet?<\/h4>\n<p>\nNj\u00eb objekt shum\u00eb i njohur dhe i dobish\u00ebm n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave jan\u00eb pamjet. Ato mund t\u00eb jen\u00eb t\u00eb dobishme p\u00ebr nj\u00eb s\u00ebr\u00eb rastesh p\u00ebrdorimi; dy t\u00eb preferuarat e mia jan\u00eb niveli i abstraksionit logjik dhe niveli i siguris\u00eb. Fatkeq\u00ebsisht, Cloud Spanner nuk mb\u00ebshtet pamjet. Megjithat\u00eb, kjo vet\u00ebm pjes\u00ebrisht na kufizon, pasi p\u00ebr lejet e aksesit nuk ka detaje n\u00eb nivelin e kolonave, ku pamjet mund t\u00eb jen\u00eb nj\u00eb zgjidhje e pranueshme.<\/p>\n<p>N\u00eb dokumentacionin e Cloud Spanner n\u00eb seksionin q\u00eb p\u00ebrshkruan detallisht kuotat dhe kufizimet (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/spanner\/quotas\">spanner\/quotas<\/a><\/noindex>), ka, n\u00eb ve\u00e7anti, ka nj\u00eb, q\u00eb mund t\u00eb jet\u00eb problematike p\u00ebr disa aplikacione: Cloud Spanner nga kutia ka nj\u00eb kufizim maksimal prej 100 bazash t\u00eb dh\u00ebnash p\u00ebr instanc\u00eb. Duke qen\u00eb se kjo mund t\u00eb b\u00ebhet nj\u00eb penges\u00eb serioze p\u00ebr nj\u00eb baz\u00eb t\u00eb dh\u00ebnash q\u00eb \u00ebsht\u00eb menduar t\u00eb shkall\u00ebzohet mbi 100 baza t\u00eb dh\u00ebnash. Fatmir\u00ebsisht, pas bised\u00ebs me p\u00ebrfaq\u00ebsuesin ton\u00eb teknik n\u00eb Google, zbuluam se ky limit mund t\u00eb rritet praktikisht n\u00eb \u00e7do vler\u00eb p\u00ebrmes sh\u00ebrbimit t\u00eb mb\u00ebshtetjes s\u00eb Google.<\/p>\n<h4>Mb\u00ebshtetje p\u00ebr zhvillimin?<\/h4>\n<p>\nCloud Spanner ofron nj\u00eb mb\u00ebshtetje relativisht t\u00eb mir\u00eb p\u00ebr gjuh\u00ebt e programimit p\u00ebr t\u00eb punuar me API-n\u00eb e tij. Bibliotekat zyrtare t\u00eb mb\u00ebshtetura jan\u00eb n\u00eb fush\u00ebn e C#, Go, Java, node.js, PHP, Python dhe Ruby. Dokumentacioni \u00ebsht\u00eb mjaft i detajuar, por, si n\u00eb rastin e teknologjive t\u00eb tjera t\u00eb p\u00ebrparuara, komuniteti \u00ebsht\u00eb mjaft i vog\u00ebl n\u00eb krahasim me teknologjit\u00eb m\u00eb t\u00eb njohura t\u00eb bazave t\u00eb dh\u00ebnash, gj\u00eb q\u00eb mund t\u00eb \u00e7oj\u00eb n\u00eb rritjen e koh\u00ebs s\u00eb kaluar p\u00ebr zgjidhjen e rasteve m\u00eb pak t\u00eb zakonshme t\u00eb p\u00ebrdorimit ose problemeve.<\/p>\n<h4>Pra, \u00e7far\u00eb thoni p\u00ebr mb\u00ebshtetjen p\u00ebr zhvillimin lokal?<\/h4>\n<p>\nNuk gjet\u00ebm nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb krijuar nj\u00eb instanc\u00eb Cloud Spanner n\u00eb ambientin lokal. Ajo q\u00eb kemi arritur m\u00eb af\u00ebr \u00ebsht\u00eb imazhi Docker <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/cockroachdb\/cockroach\">CockroachDB<\/a><\/noindex>, i cili n\u00eb parim ngjason, por n\u00eb praktik\u00eb ndikon ndjesh\u00ebm. P\u00ebr shembull, CockroachDB mund t\u00eb p\u00ebrdor\u00eb PostgreSQL JDBC. Duke qen\u00eb se ambienti i zhvillimit duhet t\u00eb jet\u00eb sa m\u00eb af\u00ebr ambientit t\u00eb prodhimit, Cloud Spanner nuk \u00ebsht\u00eb ideal, pasi duhet t\u00eb mb\u00ebshteteni n\u00eb nj\u00eb instanc\u00eb t\u00eb plot\u00eb Spanner. P\u00ebr t\u00eb kursyer kosto, mund t\u00eb zgjidhni nj\u00eb instanc\u00eb p\u00ebr nj\u00eb rajon.<\/p>\n<h4>P\u00ebrkrahja e administrat\u00ebs?<\/h4>\n<p>\nKrijimi i nj\u00eb instanc\u00eb Cloud Spanner \u00ebsht\u00eb shum\u00eb i thjesht\u00eb. Thjesht duhet t\u00eb zgjidhni midis krijimit t\u00eb nj\u00eb instanc\u00eb multirajonale ose p\u00ebr nj\u00eb rajon t\u00eb vet\u00ebm, t\u00eb specifikoni rajonin(e) dhe numrin e nyjeve. M\u00eb pak se brenda nj\u00eb minute, instanca do t\u00eb nis\u00eb dhe do t\u00eb jet\u00eb gati p\u00ebr funksionim.<\/p>\n<p>Disa metrika elementare jan\u00eb direkt t\u00eb disponueshme n\u00eb faqen Spanner n\u00eb konsol\u00ebn Google. Pamje m\u00eb t\u00eb detajuara jan\u00eb t\u00eb disponueshme p\u00ebrmes Stackdriver, ku gjithashtu mund t\u00eb vendosni kufij metrikash dhe politika njoftimi.<\/p>\n<h4>Qasje n\u00eb burime?<\/h4>\n<p>\nMySQL ofron konfigurime shum\u00eb t\u00eb gjera dhe shum\u00eb t\u00eb detajuara p\u00ebr lejet\/rolet e p\u00ebrdoruesve. Mund t\u00eb konfigurohet leht\u00ebsisht qasja n\u00eb nj\u00eb tabel\u00eb t\u00eb caktuar ose madje edhe n\u00eb nj\u00eb n\u00ebngrup t\u00eb thjesht\u00eb t\u00eb kolonave t\u00eb saj. Cloud Spanner p\u00ebrdor mjetin Google Identity &amp; Access Management (IAM), i cili lejon vendosjen e politikave dhe lejeve vet\u00ebm n\u00eb nj\u00eb nivel shum\u00eb t\u00eb lart\u00eb. Opcioni m\u00eb i detajuar \u00ebsht\u00eb leja n\u00eb nivelin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, e cila nuk p\u00ebrshtatet n\u00eb shumic\u00ebn e rasteve prodhuese. Kjo kufizim ju detyron t\u00eb shtoni masa t\u00eb m\u00ebtejshme sigurie n\u00eb kodin tuaj, infrastruktur\u00ebn ose t\u00eb dyja p\u00ebr t\u00eb parandaluar p\u00ebrdorimin e paautorizuar t\u00eb burimeve Spanner.<\/p>\n<h4>Kopje rezerv\u00eb?<\/h4>\n<p>\nThjesht duke folur, nuk ka kopje rezerv\u00eb n\u00eb Cloud Spanner. Nd\u00ebrsa k\u00ebrkesat e larta t\u00eb SLA t\u00eb Google mund t\u00eb garantojn\u00eb q\u00eb nuk do t\u00eb humbas\u00eb asnj\u00eb t\u00eb dh\u00ebn\u00eb p\u00ebr shkak t\u00eb d\u00ebshtimeve t\u00eb pajisjeve apo baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, gabimeve njer\u00ebzore, defekteve t\u00eb aplikacioneve, etj., t\u00eb gjith\u00eb e dim\u00eb rregullin: disponueshm\u00ebria e lart\u00eb nuk z\u00ebvend\u00ebson nj\u00eb strategji t\u00eb arsyeshme p\u00ebr kopjimin e t\u00eb dh\u00ebnave. Aktualisht, m\u00ebnyra e vetme p\u00ebr t\u00eb b\u00ebr\u00eb backup t\u00eb t\u00eb dh\u00ebnave \u00ebsht\u00eb transmetimi i tyre programatik nga baza e t\u00eb dh\u00ebnave n\u00eb nj\u00eb ambient t\u00eb ve\u00e7ant\u00eb ruajtjeje.<\/p>\n<h4>Cila \u00ebsht\u00eb performanca e k\u00ebrkesave?<\/h4>\n<p>\nP\u00ebr ngarkimin e t\u00eb dh\u00ebnave dhe testimin e k\u00ebrkesave, kemi p\u00ebrdorur Yahoo! Cloud Serving Benchmark. N\u00eb tabel\u00ebn m\u00eb posht\u00eb \u00ebsht\u00eb paraqitur ngarkesa e pun\u00ebs B YCSB me nj\u00eb raport leximi 95% dhe shkruani 5%.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/8fca14875af33c8ed3cd04b602c52b78.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Testi i ngarkes\u00ebs u zhvillua n\u00eb motorin e llogaritjes (CE) n1-standard-32 (32 vCPU, 120 GB RAM), dhe instanca testuese kurr\u00eb nuk ishte ngushtesa n\u00eb testime.<\/i><br \/>\n<i>** Numri maksimal i fijeve n\u00eb nj\u00eb instanc\u00eb YCSB \u00ebsht\u00eb 400. Kishte nevoj\u00eb p\u00ebr t\u00eb ekzekutuar gjasht\u00eb instanca paralele t\u00eb testeve YCSB, p\u00ebr t\u00eb arritur nj\u00eb total prej 2400 fijeve.<\/i><\/p>\n<p>Duke rezultatet e testeve, ve\u00e7an\u00ebrisht kombinimi i ngarkes\u00ebs s\u00eb procesorit dhe TPS, e shohim qart\u00eb se Cloud Spanner shkall\u00ebzohet mjaft mir\u00eb. Ngarkesa e madhe, e krijuar nga numri i madh i thread-eve, kompensohet nga numri i madh i nyjeve n\u00eb klasterin Cloud Spanner. Nd\u00ebrsa vonesa duket mjaft e lart\u00eb, ve\u00e7an\u00ebrisht kur punojm\u00eb me 2400 thread-e, mund t\u00eb k\u00ebrkohet rip\u00ebrs\u00ebritje e testeve me 6 instanca m\u00eb t\u00eb vogla t\u00eb motorit kompjuterik p\u00ebr t\u00eb marr\u00eb numra m\u00eb t\u00eb sakt\u00eb. \u00c7do instanc\u00eb do t\u00eb ekzekutoj\u00eb nj\u00eb test YCSB n\u00eb vend t\u00eb nj\u00eb instance t\u00eb madhe CE me 6 teste paralele. K\u00ebshtu, do t\u00eb jet\u00eb m\u00eb e leht\u00eb t\u00eb dallosh vonesat e k\u00ebrkesave t\u00eb Cloud Spanner nga vonesat e shtuara nga lidhja rrjetore midis Cloud Spanner dhe instanc\u00ebs CE, ku ekzekutohet testi.<\/p>\n<h3>Si performon Cloud Spanner si OLAP?<\/h3>\n<p><\/p>\n<h4>Particionimi?<\/h4>\n<p>\nNdarja e t\u00eb dh\u00ebnave n\u00eb segmente fizikisht dhe\/ose logjikisht t\u00eb pavarura, t\u00eb quajtura particione, \u00ebsht\u00eb nj\u00eb koncept shum\u00eb i popullarizuar q\u00eb i p\u00ebrket shumic\u00ebs s\u00eb mekanizmave OLAP. Particionet mund t\u00eb p\u00ebrmir\u00ebsojn\u00eb ndjesh\u00ebm performanc\u00ebn e pyetjeve dhe mb\u00ebshtetje t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave. Nj\u00eb shqyrtim m\u00eb i thell\u00eb i particioneve do t\u00eb merrej n\u00eb nj\u00eb artikull t\u00eb ve\u00e7ant\u00eb, prandaj le t\u00eb p\u00ebrmendim thjesht r\u00ebnd\u00ebsin\u00eb e nj\u00eb skeme ndarjeje dhe n\u00ebnndarjeje. Mund\u00ebsia p\u00ebr t\u00eb ndar\u00eb t\u00eb dh\u00ebnat n\u00eb particione dhe madje m\u00eb tej n\u00eb n\u00ebnparticione \u00ebsht\u00eb \u00e7el\u00ebsi p\u00ebr performanc\u00ebn e pyetjeve analitike.<\/p>\n<p>Cloud Spanner nuk mb\u00ebshtet particionet si t\u00eb tilla. Ai ndan t\u00eb dh\u00ebnat brenda n\u00eb at\u00eb q\u00eb quhet <i>ndarje<\/i>-e bazuar n\u00eb intervalet e \u00e7el\u00ebsit primar. Ndarja kryhet automatikisht p\u00ebr t\u00eb balancuar ngarkes\u00ebn n\u00eb klasterin e Cloud Spanner. Nj\u00eb funksion shum\u00eb i dobish\u00ebm i Cloud Spanner \u00ebsht\u00eb ndarja e ngarkes\u00ebs baz\u00eb t\u00eb tabel\u00ebs prind (tabel\u00ebs q\u00eb nuk alternohet me nj\u00eb tjet\u00ebr). Spanner p\u00ebrcakton automatikisht n\u00ebse <i>ndarje <\/i>t\u00eb dh\u00ebnat q\u00eb lexohen m\u00eb shpesh jan\u00eb m\u00eb shum\u00eb se t\u00eb dh\u00ebnat n\u00eb t\u00eb tjera <i>ndarje<\/i>-at, dhe mund t\u00eb marr\u00eb vendimin p\u00ebr ndarjen e m\u00ebtejshme. K\u00ebshtu, mund t\u00eb angazhohen m\u00eb shum\u00eb nyje n\u00eb k\u00ebrkes\u00eb, duke rritur gjithashtu efektivitetin e kapacitetit t\u00eb transmetimit.<\/p>\n<h4>Duke ngarkuar t\u00eb dh\u00ebnat?<\/h4>\n<p>\nM\u00ebnyra Cloud Spanner p\u00ebr ngarkimin e t\u00eb dh\u00ebnave \u00ebsht\u00eb e nj\u00ebjt\u00eb si me ngarkimin normal. P\u00ebr t\u00eb arritur performanc\u00ebn maksimale, ju nevojitet t\u00eb ndiqni disa rekomandime, duke p\u00ebrfshir\u00eb:<\/p>\n<ul>\n<li>Shkruani t\u00eb dh\u00ebnat tuaja sipas \u00e7el\u00ebsit kryesor.<\/li>\n<li>Ndarini ato n\u00eb 10*<i>numri i nyjeve<\/i> seksione t\u00eb ve\u00e7anta.<\/li>\n<li>Krijoni nj\u00eb grup detyrash pune q\u00eb ngarkojn\u00eb t\u00eb dh\u00ebnat paralelisht.<\/li>\n<\/ul>\n<p>\nMe nj\u00eb ngarkes\u00eb t\u00eb till\u00eb t\u00eb dh\u00ebnash, t\u00eb gjitha nyjet e Cloud Spanner p\u00ebrdoren.<\/p>\n<p>Ne p\u00ebrdor\u00ebm ngarkes\u00ebn A YCSB p\u00ebr t\u00eb gjeneruar nj\u00eb grup t\u00eb dh\u00ebnash prej 10M rreshtash.<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/89b9c0353716be2d389b3e8da82781ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Testi i ngarkes\u00ebs u krye n\u00eb motorin llogaritor n1-standard-32 (32 vCPU, 120 GB memorie), dhe instanca testuese nuk ishte asnj\u00ebher\u00eb ngushtic\u00eb n\u00eb testime.<br \/>\n** Konfigurimi me 1 nyj\u00eb nuk rekomandohet p\u00ebr ngarkesa prodhimi t\u00eb \u00e7do lloji.<\/i><\/p>\n<p>Si p\u00ebrmend\u00ebm m\u00eb lart, Cloud Spanner p\u00ebrpunon automatikisht ndarjet n\u00eb var\u00ebsi t\u00eb ngarkes\u00ebs s\u00eb tyre, k\u00ebshtu q\u00eb rezultatet p\u00ebrmir\u00ebsohen pas disa p\u00ebrs\u00ebritjeve t\u00eb nj\u00ebpasnj\u00ebshme t\u00eb testit. Rezultatet e paraqitura k\u00ebtu jan\u00eb rezultatet m\u00eb t\u00eb mira q\u00eb kemi marr\u00eb. Duke shikuar numrat m\u00eb sip\u00ebr, ne mund t\u00eb shohim se si Cloud Spanner (mir\u00eb) shkall\u00ebzohet me rritjen e numrit t\u00eb nyjeve n\u00eb klaster. Numrat q\u00eb jan\u00eb theksuar paraqesin vonesa mesatare jasht\u00ebzakonisht t\u00eb ul\u00ebta, t\u00eb cilat kontrastojn\u00eb me rezultatet e ngarkesave t\u00eb p\u00ebrziera (95% p\u00ebr lexim dhe 5% p\u00ebr shkrim), si\u00e7 p\u00ebrshkruhet n\u00eb seksionin m\u00eb lart.<\/p>\n<h4>Shkall\u00ebzim?<\/h4>\n<p>\nRritja dhe ulja e numrit t\u00eb nyjeve n\u00eb Cloud Spanner \u00ebsht\u00eb nj\u00eb detyr\u00eb q\u00eb realizohet me nj\u00eb klik. N\u00ebse d\u00ebshironi t\u00eb ngarkoni shpejt t\u00eb dh\u00ebnat, mund t\u00eb merrni parasysh rritjen e instanc\u00ebs deri n\u00eb maksimum (n\u00eb rastin ton\u00eb, kjo ishte 25 nyje n\u00eb rajonin SHBA-LINDJE), dhe pastaj t\u00eb ulni numrin e nyjeve q\u00eb p\u00ebrshtaten me ngarkes\u00ebn tuaj t\u00eb zakonshme, pas q\u00eb t\u00eb gjitha t\u00eb dh\u00ebnat jan\u00eb n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave, duke pasur parasysh kufizimin 2 TB\/nj\u00eb nyje.<\/p>\n<p>Na u kujdes\u00ebm p\u00ebr k\u00ebt\u00eb kufi edhe me nj\u00eb baz\u00eb t\u00eb dh\u00ebnash shum\u00eb m\u00eb t\u00eb vog\u00ebl. Pas disa testimeve t\u00eb ngarkes\u00ebs, baza jon\u00eb e t\u00eb dh\u00ebnave kishte nj\u00eb madh\u00ebsi prej rreth 155 GB, dhe kur e reduktuam n\u00eb nj\u00eb instanc\u00eb me 1 nyje, mor\u00ebm gabimin e m\u00ebposht\u00ebm:<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/4a46c97e7943b5105bf178316dc67433.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa arriti t\u00eb zvog\u00eblojm\u00eb shkall\u00ebn nga 25 n\u00eb 2 instanca, por u bllokuam n\u00eb dy nyje.<\/p>\n<p>Rritja dhe zvog\u00eblimi i numrit t\u00eb nyjeve n\u00eb klasterin Cloud Spanner mund t\u00eb automatizohet p\u00ebrmes REST API. Kjo mund t\u00eb jet\u00eb ve\u00e7an\u00ebrisht e dobishme p\u00ebr t\u00eb reduktuar ngarkesat e rritura mbi sistem n\u00eb or\u00ebt e ngarkes\u00ebs.<\/p>\n<h4>Cila \u00ebsht\u00eb performanca e pyetjeve OLAP?<\/h4>\n<p>\nFillimisht planifikonim t\u00eb dedikonim nj\u00eb koh\u00eb t\u00eb konsiderueshme p\u00ebr t\u00eb vler\u00ebsuar k\u00ebt\u00eb pjes\u00eb t\u00eb Spanner. Pas disa SELECT COUNT, menj\u00ebher\u00eb kuptuam se testimi do t\u00eb ishte i shkurt\u00ebr dhe se Spanner NUK do t\u00eb ishte i p\u00ebrshtatsh\u00ebm si nj\u00eb motor OLAP. Pavar\u00ebsisht nga numri i nyjeve n\u00eb klaster, nj\u00eb thjesht\u00ebsi p\u00ebr t\u00eb num\u00ebruar radh\u00ebt n\u00eb nj\u00eb tabel\u00eb prej 10M radh\u00ebsh zgjati nga 55 n\u00eb 60 sekonda. P\u00ebr m\u00eb tep\u00ebr, \u00e7do pyetje q\u00eb k\u00ebrkonte nj\u00eb volum m\u00eb t\u00eb madh memorie p\u00ebr ruajtjen e rezultateve nd\u00ebrmjet\u00ebsore p\u00ebrfundoi me gabimin OOM.<\/p>\n<p><code>SELECT COUNT(DISTINCT(field0)) FROM usertable; \u2014 (10M vlera t\u00eb ve\u00e7anta) -&gt; SpoolingHashAggregateIterator shkoi jasht\u00eb memories gjat\u00eb rreshtit t\u00eb ri.<\/code><\/p>\n<p>Disa numra p\u00ebr k\u00ebrkesat TPC-H mund t\u00eb gjenden n\u00eb artikullin e Todd Lipkonit <noindex><a rel=\"nofollow\" href=\"https:\/\/kudu.apache.org\/2017\/10\/23\/nosql-kudu-spanner-slides.html\">Nosql-kudu-spanner-slides.html<\/a><\/noindex>, prezantimet 42 dhe 43. K\u00ebto numra p\u00ebrputhen me rezultatet tona t\u00eb veta (p\u00ebr fat t\u00eb keq).<\/p>\n<p><img decoding=\"async\" alt=\"Google Cloud Spanner: i mir\u00eb, i keq, i sh\u00ebmtuar\" src=\"\/wp-content\/uploads\/2020\/02\/d070c839bbc62b1ba1bebbaf64127e93.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>4. Konkluzionet tona<\/h4>\n<p>\nDuke marr\u00eb parasysh gjendjen aktuale t\u00eb karakteristikave t\u00eb Cloud Spanner, \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb imagjinohet si nj\u00eb z\u00ebvend\u00ebsim i thjesht\u00eb p\u00ebr nj\u00eb zgjidhje ekzistuese OLTP, ve\u00e7an\u00ebrisht kur nevojat tuaja do t\u00eb tejkalojn\u00eb at\u00eb. Do t\u00eb duhej t\u00eb investohej nj\u00eb koh\u00eb e konsiderueshme p\u00ebr t\u00eb nd\u00ebrtuar nj\u00eb zgjidhje q\u00eb merr parasysh disavantazhet e Cloud Spanner.<\/p>\n<p>Kur filluam vler\u00ebsimin e Cloud Spanner, prisnim q\u00eb funksionalitetet e tij t\u00eb menaxhimit t\u00eb ishin n\u00eb nivelin e nj\u00ebjt\u00eb ose, t\u00eb pakt\u00ebn, jo shum\u00eb larg zgjidhjeve t\u00eb tjera t\u00eb Google SQL. Por u befasuam nga mungesa e plot\u00eb e kopjeve rezerv\u00eb dhe kontrolli shum\u00eb i kufizuar i qasjes n\u00eb burime. Pa p\u00ebrmendur munges\u00ebn e pamjeve, munges\u00ebn e nj\u00eb ambienti lokal zhvillimi, sekuenca t\u00eb pamb\u00ebshtetura, JDBC pa mb\u00ebshtetje p\u00ebr DML dhe DDL dhe aq m\u00eb tep\u00ebr.<\/p>\n<p>Pra, ku dhe t\u00eb shkoj\u00eb ai q\u00eb ka nevoj\u00eb t\u00eb shkall\u00ebzoj\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash transaksionesh? Duket se n\u00eb treg ende nuk ka nj\u00eb zgjidhje t\u00eb vetme q\u00eb t\u00eb p\u00ebrshtatet p\u00ebr t\u00eb gjitha rastet e p\u00ebrdorimit. Ekzistojn\u00eb shum\u00eb zgjidhje me kod t\u00eb mbyllur dhe t\u00eb hapur (disa prej t\u00eb cilave p\u00ebrmenden n\u00eb k\u00ebt\u00eb artikull), \u00e7do nj\u00ebra prej t\u00eb cilave ka pikat e saj t\u00eb forta dhe t\u00eb dob\u00ebta, por asnj\u00ebra nuk ofron SaaS me SLA 99,999% dhe nj\u00eb nivel t\u00eb lart\u00eb koherencash. N\u00ebse nj\u00eb nivel i lart\u00eb SLA \u00ebsht\u00eb q\u00ebllimi juaj kryesor, dhe nuk keni prirje t\u00eb krijoni nj\u00eb zgjidhje tuaj\u00ebn p\u00ebr disa mjedise t\u00eb reve, Cloud Spanner mund t\u00eb jet\u00eb zgjidhja q\u00eb po k\u00ebrkoni. Por duhet t\u00eb jeni n\u00eb dijeni p\u00ebr t\u00eb gjitha kufizimet e tij.<\/p>\n<p>P\u00ebr t\u00eb qen\u00eb t\u00eb drejt\u00eb, duhet theksuar se Cloud Spanner u l\u00ebshua p\u00ebr p\u00ebrdorim t\u00eb p\u00ebrgjithsh\u00ebm vet\u00ebm n\u00eb pranver\u00ebn e vitit 2017, prandaj \u00ebsht\u00eb e arsyeshme t\u00eb pritet q\u00eb disa nga disavantazhet e tij aktuale mund t\u00eb zhduken n\u00eb t\u00eb ardhmen (shpresoj), dhe kur t\u00eb ndodh\u00eb kjo, mund t\u00eb sjell\u00eb ndryshime t\u00eb m\u00ebdha. N\u00eb fund t\u00eb fundit, Cloud Spanner nuk \u00ebsht\u00eb thjesht nj\u00eb projekt an\u00ebsor p\u00ebr Google. Google e p\u00ebrdor at\u00eb si baz\u00eb p\u00ebr produkte t\u00eb tjera. Dhe kur Google s\u00eb fundmi z\u00ebvend\u00ebsoi Megastore n\u00eb Google Cloud Storage me Cloud Spanner, kjo e dha mund\u00ebsin\u00eb q\u00eb Google Cloud Storage t\u00eb b\u00ebhet plot\u00ebsisht i sinkronizuar p\u00ebr listat e objekteve n\u00eb shkall\u00eb globale (e cila ende nuk i referohet) <noindex><a rel=\"nofollow\" href=\"https:\/\/cloudplatform.googleblog.com\/2018\/02\/how-Google-Cloud-Storage-offers-strongly-consistent-object-listing-thanks-to-Spanner.html\">Amazon\u2019s<\/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>Pra, shpres\u00eb ende ka\u2026 ne shpresojm\u00eb.<\/p>\n<p>K\u00ebtu p\u00ebrfundojm\u00eb. Si\u00e7 tha autori i artikullit, ne gjithashtu vazhdojm\u00eb t\u00eb shpresojm\u00eb, \u00e7far\u00eb mendoni ju p\u00ebr k\u00ebt\u00eb? Shkruani n\u00eb komentet<\/p>\n<p><b>T\u00eb gjith\u00eb \u00ebsht\u00eb t\u00eb mir\u00ebpritur t\u00eb vizitojn\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\">webinarin falas<\/a><\/noindex> ku do t\u00eb flasim n\u00eb detaje p\u00ebr kursin<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/eoP2\/\"> \u00abAWS p\u00ebr zhvilluesit\u00bb<\/a><\/noindex> nga OTUS.<\/b><br \/>\n<br \/>Burimi: <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 4.9.10 - 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. \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\" \/>\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\/sq\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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: i mir\u00eb, i keq, i sh\u00ebmtuar | ProHoster","description":"P\u00ebrsh\u00ebndetje, an\u00ebtar\u00eb t\u00eb Habr\u00ebs. Tradita vazhdon, duke ndar\u00eb material interesante p\u00ebrpara fillimit t\u00eb kurseve t\u00eb reja. Sot, ve\u00e7an\u00ebrisht p\u00ebr ju, kemi p\u00ebrkthej artikullin mbi Google Cloud Spanner, duke e lidhur k\u00ebt\u00eb me lansimin e kursit \"AWS p\u00ebr zhvilluesit\". Publikuar fillimisht n\u00eb blogun Lightspeed HQ. Si nj\u00eb kompani q\u00eb ofron shum\u00eb zgjidhje POS n\u00eb re p\u00ebr shit\u00ebsit me pakic\u00eb, restorantet dhe shit\u00ebsit online n\u00eb t\u00eb gjith\u00eb bot\u00ebn, Lightspeed p\u00ebrdor","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/google-cloud-spanner-horoshij-plohoj-zloj","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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. \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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=69568"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/69569"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=69568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=69568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=69568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}