{"id":91635,"date":"2020-08-15T19:42:23","date_gmt":"2020-08-15T17:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem"},"modified":"2020-08-15T19:42:23","modified_gmt":"2020-08-15T17:42:23","slug":"na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","title":{"rendered":"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! Quhem Nikolai Golov. M\u00eb par\u00eb kam punuar n\u00eb Avito dhe p\u00ebr gjasht\u00eb vjet kam drejtuar Data Platform, q\u00eb do t\u00eb thot\u00eb se kam punuar me t\u00eb gjitha bazat: analitike (Vertica, ClickHouse), rrjedh\u00ebse dhe OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). Gjat\u00eb k\u00ebsaj kohe kam m\u00ebsuar shum\u00eb p\u00ebr bazat e t\u00eb dh\u00ebnave - nga m\u00eb t\u00eb ndryshmet dhe t\u00eb \u00e7uditshmet, dhe p\u00ebr raste t\u00eb pazakonta t\u00eb p\u00ebrdorimit t\u00eb tyre.<\/p>\n<p>Tani punoj n\u00eb ManyChat. N\u00eb thelb, \u00ebsht\u00eb nj\u00eb start-up - i ri, ambicioz dhe n\u00eb rritje t\u00eb shpejt\u00eb. Dhe kur sapo fillova n\u00eb kompanin\u00eb, u shfaq pyetja klasike: \"Cfar\u00eb duhet t\u00eb zgjedh\u00eb nj\u00eb start-up t\u00eb ri nga tregu i DBMS dhe bazat e t\u00eb dh\u00ebnave?\". <\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull, i cili \u00ebsht\u00eb i bazuar n\u00eb fjalimin tim n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2020\/\">festivalin online RIT++2020<\/a><\/noindex>, do t\u00eb p\u00ebrgjigjem n\u00eb k\u00ebt\u00eb pyetje. Versioni n\u00eb video t\u00eb fjalimit \u00ebsht\u00eb i disponuesh\u00ebm n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/H23f_z13ro4\">YouTube<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/6a5df9b75ad435ebe88adf920ab9ea8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Baza t\u00eb njohura t\u00eb t\u00eb dh\u00ebnave t\u00eb vitit 2020<\/h2>\n<p>\nJemi n\u00eb vitin 2020, shqyrtova rreth meje dhe pash\u00eb tre tipe DB. <\/p>\n<p>Tipi i par\u00eb - <b>bazat OLTP klasike<\/b>: PostgreSQL, SQL Server, Oracle, MySQL. Ato jan\u00eb shkruar koh\u00eb p\u00ebrpara, por p\u00ebrmbajn\u00eb ende r\u00ebnd\u00ebsi, sepse jan\u00eb t\u00eb njohura mir\u00eb nga komuniteti i zhvilluesve.<\/p>\n<p>Tipi i dyt\u00eb - <b>bazat e 'viteve t\u00eb zero'<\/b>. Ato p\u00ebrpiqeshin t\u00eb iknin nga shabllonat klasike p\u00ebrmes heqjes dor\u00eb nga SQL, strukturat tradicionale dhe ACID, p\u00ebrmes shtimit t\u00eb ndarjes s\u00eb brendshme dhe karakteristika t\u00eb tjera t\u00ebrheq\u00ebse. P\u00ebr shembull, kjo \u00ebsht\u00eb Cassandra, MongoDB, Redis ose Tarantool. T\u00eb gjitha k\u00ebto zgjidhje donin t\u00eb ofronin di\u00e7ka krejt\u00ebsisht t\u00eb re p\u00ebr tregun dhe zuri pozita t\u00eb ve\u00e7anta, sepse u treguan jasht\u00ebzakonisht t\u00eb dobishme n\u00eb disa detyra. K\u00ebto bazat do t'i quaj me termin e p\u00ebrgjithsh\u00ebm NOSQL.<\/p>\n<p>'Vitet e zero' p\u00ebrfunduan, u m\u00ebsuam me bazat NOSQL, dhe bota, nga pik\u00ebpamja ime, b\u00ebri hapin e ardhsh\u00ebm - n\u00eb <b>bazat e menaxhuara<\/b>. K\u00ebto baza kan\u00eb thelbin e nj\u00ebjt\u00eb si bazat OLTP klasike ose NoSQL t\u00eb reja. Por ato nuk kan\u00eb nevoj\u00eb p\u00ebr DBA dhe DevOps dhe funksionojn\u00eb n\u00eb hardware t\u00eb menaxhuar n\u00eb cloud. P\u00ebr nj\u00eb zhvillues, kjo \u00ebsht\u00eb 'thjesht nj\u00eb baz\u00eb', q\u00eb punon diku, dhe si \u00ebsht\u00eb instaluar n\u00eb server, kush e ka konfiguruar serverin dhe kush e p\u00ebrdit\u00ebson at\u00eb, askujt nuk i intereson.<\/p>\n<p>Shembuj t\u00eb till\u00eb t\u00eb bazave jan\u00eb:<\/p>\n<ul>\n<li>AWS RDS - nj\u00eb mb\u00ebshtetje e menaxhuar mbi PostgreSQL\/MySQL.<\/li>\n<li>DynamoDB - analogja AWS e baz\u00ebs s\u00eb dh\u00ebnave t\u00eb tipit document, ngjan me Redis dhe MongoDB.<\/li>\n<li>Amazon Redshift - nj\u00eb baz\u00eb analitike e menaxhuar.<\/li>\n<\/ul>\n<p>\nN\u00eb thelb jan\u00eb bazat e vjetra, por t\u00eb ngritura n\u00eb nj\u00eb mjedis t\u00eb menaxhuar, pa nevoj\u00ebn p\u00ebr t\u00eb punuar me hardware. <\/p>\n<p><i>Sh\u00ebnim. Shembujt jan\u00eb t\u00eb marr\u00eb p\u00ebr mjedisin AWS, por analog\u00ebt e tyre ekzistojn\u00eb gjithashtu n\u00eb Microsoft Azure, Google Cloud, ose Yandex.Cloud.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/06e50904f795b3b5dc62ca45622b2dd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCil\u00ebt jan\u00eb t\u00eb rinjt\u00eb p\u00ebr k\u00ebt\u00eb? N\u00eb vitin 2020, asgj\u00eb nga kjo.<\/p>\n<h2>Koncepsioni Serverless<\/h2>\n<p>\nV\u00ebrtet nj\u00eb e re n\u00eb tregun e vitit 2020 \u2014 jan\u00eb zgjidhjet pa server\u00eb.<\/p>\n<p>Do t\u00eb p\u00ebrpiqem t\u00eb shpjegoj se \u00e7far\u00eb do t\u00eb thot\u00eb kjo me shembuj nga nj\u00eb sh\u00ebrbim i zakonsh\u00ebm ose aplikacion backend.<br \/>\nP\u00ebr t\u00eb implementuar nj\u00eb aplikacion backend t\u00eb zakonsh\u00ebm, blejm\u00eb ose marrim me qira nj\u00eb server, kopjojm\u00eb kodin aty, publikojm\u00eb nj\u00eb endpoint dhe paguajm\u00eb rregullisht p\u00ebr qiran\u00eb, elektricitetin dhe sh\u00ebrbimet e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave. Kjo \u00ebsht\u00eb skema standarde.<\/p>\n<p>A mund t\u00eb b\u00ebhet ndryshe? Me sh\u00ebrbimet pa server\u00eb, po.<\/p>\n<p>Cila \u00ebsht\u00eb magjia e k\u00ebtij qasja: nuk ka server, as edhe qira p\u00ebr nj\u00eb instance virtuale n\u00eb re. P\u00ebr t\u00eb implementuar nj\u00eb sh\u00ebrbim, kopjojm\u00eb kodin (funksionet) n\u00eb nj\u00eb depo dhe publikojm\u00eb nj\u00eb endpoint. M\u00eb pas, thjesht paguajm\u00eb p\u00ebr \u00e7do thirrje t\u00eb k\u00ebsaj funksioni, duke injoruar krejt\u00ebsisht harduerin ku ekzekutohet.<\/p>\n<p>Do t\u00eb p\u00ebrpiqem ta ilustroj k\u00ebt\u00eb qasje me pamje.<br \/>\n<img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/705cf89c51b8166da772b1d877262b44.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Implementimi klasik<\/b>. Ne kemi nj\u00eb sh\u00ebrbim me nj\u00eb ngarkes\u00eb t\u00eb caktuar. Aktivizojm\u00eb dy instance: server\u00eb fizik\u00eb ose instanca n\u00eb AWS. K\u00ebto instance drejtojn\u00eb k\u00ebrkesat e jashtme q\u00eb trajtohen aty. <\/p>\n<p>Si\u00e7 duket n\u00eb figur\u00eb, server\u00ebt jan\u00eb t\u00eb shfryt\u00ebzuar n\u00eb m\u00ebnyr\u00eb t\u00eb ndryshme. Nj\u00ebri \u00ebsht\u00eb shfryt\u00ebzuar n\u00eb 100%, aty ka dy k\u00ebrkesa, nd\u00ebrsa nj\u00eb tjet\u00ebr vet\u00ebm n\u00eb 50% \u2014 \u00ebsht\u00eb pjes\u00ebrisht n\u00eb pritje. N\u00ebse vijn\u00eb jo tre k\u00ebrkesa, por 30, at\u00ebher\u00eb e gjith\u00eb sistemi nuk do t\u00eb p\u00ebrballoj\u00eb ngarkes\u00ebn dhe do t\u00eb filloj\u00eb t\u00eb ngadal\u00ebsohet.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/005b1f91ced2f2b29363cf975ed085e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Implementimi pa server\u00eb<\/b>. N\u00eb nj\u00eb ambient pa server\u00eb, ky sh\u00ebrbim nuk ka as instanca dhe as server\u00eb. Ka nj\u00eb pool t\u00eb caktuar burimesh t\u00eb p\u00ebrgatitura \u2014 kontejner\u00eb t\u00eb vegj\u00ebl Docker t\u00eb p\u00ebrgatitur me kodin e funksionit. Sistemi merr k\u00ebrkesa t\u00eb jashtme dhe p\u00ebr secil\u00ebn prej tyre, framework-u pa server\u00eb aktivizon nj\u00eb kontejner t\u00eb vog\u00ebl me kodin: e trajton k\u00ebt\u00eb k\u00ebrkes\u00eb dhe shkat\u00ebrron kontejnerin.<\/p>\n<p>Nj\u00eb k\u00ebrkes\u00eb \u2014 nj\u00eb kontejner i aktivizuar, 1000 k\u00ebrkesa \u2014 1000 kontejner\u00eb. Dhe implementimi n\u00eb server\u00ebt fizik\u00eb \u00ebsht\u00eb pun\u00eb e ofruesit t\u00eb sh\u00ebrbimeve n\u00eb re. Kjo \u00ebsht\u00eb plot\u00ebsisht e fshehur nga framework-u pa server\u00eb. N\u00eb k\u00ebt\u00eb koncept, ne paguajm\u00eb p\u00ebr \u00e7do thirrje. P\u00ebr shembull, n\u00ebse vjen nj\u00eb thirrje n\u00eb dit\u00eb \u2014 ne paguajm\u00eb p\u00ebr nj\u00eb thirrje, n\u00ebse vijn\u00eb nj\u00eb milion n\u00eb minut\u00eb \u2014 paguajm\u00eb p\u00ebr nj\u00eb milion. Ose n\u00eb sekond\u00eb, kjo ndodh gjithashtu.<\/p>\n<p>Koncepcioni i publikimit t\u00eb funksioneve pa server p\u00ebrkon me nj\u00eb sh\u00ebrbim stateless. Por n\u00ebse keni nevoj\u00eb p\u00ebr nj\u00eb sh\u00ebrbim statefull, at\u00ebher\u00eb i shtojm\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash sh\u00ebrbimit. N\u00eb k\u00ebt\u00eb rast, kur arrihet puna me state, \u00e7do funksion statefull thjesht shkruan dhe lexon nga baza e t\u00eb dh\u00ebnave. Dhe mund t\u00eb jet\u00eb nga \u00e7do lloj base, nga ato tre lloje t\u00eb p\u00ebrmendura n\u00eb fillim t\u00eb artikullit.<\/p>\n<p>Cili \u00ebsht\u00eb kufizimi i p\u00ebrgjithsh\u00ebm p\u00ebr t\u00eb gjitha k\u00ebto baza? K\u00ebto jan\u00eb shpenzimet p\u00ebr nj\u00eb server t\u00eb p\u00ebrhersh\u00ebm n\u00eb cloud ose nj\u00eb server fizik (apo disa servera). Nuk ka r\u00ebnd\u00ebsi n\u00ebse p\u00ebrdorim nj\u00eb baz\u00eb klasike apo t\u00eb menaxhuar, n\u00ebse ka DevOps dhe administrator\u00eb apo jo, gjithsesi paguajm\u00eb 24 or\u00eb n\u00eb dit\u00eb p\u00ebr pajisjet, elektricitetin dhe qiran\u00eb e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave. N\u00ebse kemi nj\u00eb baz\u00eb klasike, paguajm\u00eb p\u00ebr master dhe slave. N\u00ebse \u00ebsht\u00eb nj\u00eb baz\u00eb e ngarkuar me sharding \u2014 paguajm\u00eb p\u00ebr 10, 20 ose 30 servera, dhe paguajm\u00eb vazhdimisht.<\/p>\n<p>Prania e serverave t\u00eb rezervuar p\u00ebrher\u00eb n\u00eb struktur\u00ebn e shpenzimeve p\u00ebrpara perceptohej si nj\u00eb e keqe e paevitueshme. Baza t\u00eb zakonshme kan\u00eb edhe v\u00ebshtir\u00ebsi t\u00eb tjera, t\u00eb tilla si kufizimet e numrit t\u00eb lidhjeve, kufizimi i shkall\u00ebzimit, konsensusi gjeo-distribuese \u2014 k\u00ebto mund t\u00eb zgjidhen n\u00eb disa baza, por jo t\u00eb gjitha nj\u00ebher\u00ebsh dhe jo n\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebrsosur.<\/p>\n<h2>Baza e t\u00eb dh\u00ebnave pa server \u2014 teori<\/h2>\n<p>\nPyetja e vitit 2020: a mund t\u00eb b\u00ebjm\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash gjithashtu pa server? T\u00eb gjith\u00eb kan\u00eb d\u00ebgjuar p\u00ebr backend pa server... le t\u00eb provojm\u00eb ta b\u00ebjm\u00eb gjithashtu baz\u00ebn e t\u00eb dh\u00ebnave pa server.<\/p>\n<p>Kjo duket e \u00e7uditshme, sepse nj\u00eb baz\u00eb e t\u00eb dh\u00ebnave \u00ebsht\u00eb nj\u00eb sh\u00ebrbim statefull, q\u00eb nuk \u00ebsht\u00eb shum\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr infrastruktur\u00ebn pa server. P\u00ebr m\u00eb tep\u00ebr, gjithashtu, state-i n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave \u00ebsht\u00eb shum\u00eb i madh: gigabajt\u00eb, terabajt\u00eb, dhe n\u00eb bazat analitike madje edhe petabajt\u00eb. Nuk \u00ebsht\u00eb aq e leht\u00eb ta ngritni at\u00eb n\u00eb kontejner\u00eb t\u00eb leht\u00eb Docker.<\/p>\n<p>Nga ana tjet\u00ebr, pothuajse t\u00eb gjitha bazat moderne \u2014 jan\u00eb nj\u00eb sasi e madhe logjike dhe komponent\u00ebsh: transaksionet, ruajtja e integritetit, procedurat, var\u00ebsit\u00eb rrelacionale dhe shum\u00eb logjik\u00eb. Nj\u00eb pjes\u00eb e madhe e logjik\u00ebs s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave k\u00ebrkon nj\u00eb state t\u00eb vog\u00ebl. Gigabajt\u00eb dhe terabajt\u00eb p\u00ebrdoren drejtp\u00ebrdrejt vet\u00ebm nga nj\u00eb pjes\u00eb e vog\u00ebl e logjik\u00ebs s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, e lidhur me ekzekutimin e menj\u00ebhersh\u00ebm t\u00eb pyetjeve.<\/p>\n<p>Prandaj, ideja \u00ebsht\u00eb: n\u00ebse nj\u00eb pjes\u00eb e logjik\u00ebs lejon ekzekutimin stateless, pse t\u00eb mos e ndajm\u00eb baz\u00ebn n\u00eb pjes\u00eb Stateful dhe Stateless.<\/p>\n<h2>Serverless p\u00ebr zgjidhjet OLAP<\/h2>\n<p>\nLe t\u00eb shikojm\u00eb se si mund t\u00eb duket ndarja e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb pjes\u00eb Stateful dhe Stateless n\u00eb shembuj praktik\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/51793a5649e68dafc9e7ce395da9e065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>P\u00ebr shembull, ne kemi nj\u00eb baz\u00eb t\u00eb dh\u00ebnash analitike<\/b>: t\u00eb dh\u00ebnat e jashtme (cilindri i kuq n\u00eb t\u00eb majt\u00eb), procesi ETL q\u00eb ngarkon t\u00eb dh\u00ebnat n\u00eb baz\u00eb dhe analisti q\u00eb d\u00ebrgon k\u00ebrkesat SQL n\u00eb baz\u00eb. Kjo \u00ebsht\u00eb nj\u00eb skem\u00eb klasike e funksionimit t\u00eb magazin\u00ebs s\u00eb t\u00eb dh\u00ebnave. <\/p>\n<p>N\u00eb k\u00ebt\u00eb skem\u00eb, n\u00eb nj\u00eb kuptim, ETL ekzekutohet nj\u00eb her\u00eb. M\u00eb pas duhet t\u00eb paguash vazhdimisht p\u00ebr server\u00ebt, mbi t\u00eb cil\u00ebt punon baza me t\u00eb dh\u00ebnat e ngarkuara nga ETL, q\u00eb t\u00eb ket\u00eb ku t\u00eb d\u00ebrgosh k\u00ebrkesat. <\/p>\n<p>T\u00eb marrim parasysh nj\u00eb qasje alternative, t\u00eb realizuar n\u00eb baz\u00ebn AWS Athena Serverless. K\u00ebtu nuk ka asnj\u00eb harduer t\u00eb caktuar vazhdimisht, mbi t\u00eb cilin ruhen t\u00eb dh\u00ebnat e ngarkuara. N\u00eb vend t\u00eb k\u00ebsaj:<\/p>\n<ul>\n<li>P\u00ebrdoruesi d\u00ebrgon nj\u00eb k\u00ebrkes\u00eb SQL n\u00eb Athena. Optimizuesi i Athena analizon k\u00ebrkes\u00ebn SQL dhe k\u00ebrkon n\u00eb depozitat e metadatos (Metadata) t\u00eb dh\u00ebnat specifike t\u00eb nevojshme p\u00ebr p\u00ebrmbushjen e k\u00ebrkes\u00ebs.<\/li>\n<li>Optimizuesi, mbi baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb grumbulluara, nxjerr t\u00eb dh\u00ebnat e nevojshme nga burimet e jashtme n\u00eb nj\u00eb depozit\u00eb t\u00eb p\u00ebrkohshme (baza e t\u00eb dh\u00ebnave temporale).<\/li>\n<li>N\u00eb depozit\u00ebn e p\u00ebrkohshme ekzekutohet k\u00ebrkesa SQL nga p\u00ebrdoruesi dhe rezultati i kthehet p\u00ebrdoruesit. <\/li>\n<li>Depozita e p\u00ebrkohshme pastron, burimet lirohen.<\/li>\n<\/ul>\n<p>N\u00eb k\u00ebt\u00eb arkitektur\u00eb, ne paguajm\u00eb vet\u00ebm p\u00ebr procesin e ekzekutimit t\u00eb k\u00ebrkes\u00ebs. Nuk ka k\u00ebrkesa \u2014 nuk ka shpenzime.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/0e21282b66e3120524c2324811cb04a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo \u00ebsht\u00eb nj\u00eb qasje funksionale dhe realizohet jo vet\u00ebm n\u00eb Athena Serverless, por edhe n\u00eb Redshift Spectrum (n\u00eb AWS).<\/p>\n<p>N\u00eb shembujt e Athena shihet se baza e t\u00eb dh\u00ebnave Serverless funksionon me k\u00ebrkesa reale me dhjet\u00ebra dhe qindra Terabajt t\u00eb dh\u00ebnash. P\u00ebr qindra Terabajt do t\u00eb nevojiteshin qindra server\u00eb, por ne nuk kemi nevoj\u00eb t\u00eb paguajm\u00eb p\u00ebr ta \u2014 ne paguajm\u00eb p\u00ebr k\u00ebrkesat. Shpejt\u00ebsia e \u00e7do k\u00ebrkese \u00ebsht\u00eb (shum\u00eb) e ul\u00ebt n\u00eb krahasim me bazat e dh\u00ebnash analitike t\u00eb specializuara si Vertica, por p\u00ebr k\u00ebt\u00eb arsye nuk paguajm\u00eb p\u00ebr periudhat e q\u00ebndrimit.<\/p>\n<p>Nj\u00eb baz\u00eb e till\u00eb e t\u00eb dh\u00ebnave \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr k\u00ebrkesa analitike ad-hoc t\u00eb ralla. P\u00ebr shembull, kur ne spontanisht vendosim t\u00eb verifikojm\u00eb nj\u00eb hipotez\u00eb mbi nj\u00eb volum t\u00eb madh t\u00eb t\u00eb dh\u00ebnash. P\u00ebr k\u00ebto raste Athena \u00ebsht\u00eb ideale. P\u00ebr k\u00ebrkesat e rregullta, nj\u00eb sistem i till\u00eb b\u00ebhet i shtrenjt\u00eb. N\u00eb k\u00ebt\u00eb rast ruani t\u00eb dh\u00ebnat n\u00eb ndonj\u00eb zgjidhje t\u00eb specializuar. <\/p>\n<h2>Serverless p\u00ebr zgjidhjet OLTP<\/h2>\n<p>\nN\u00eb shembullin e m\u00ebparsh\u00ebm u diskutuan detyrat OLAP (analitike). Tani do t\u00eb shqyrtojm\u00eb detyrat OLTP.<\/p>\n<p>T\u00eb imagjinoni nj\u00eb PostgreSQL ose MySQL n\u00eb shkall\u00ebzueshme. Le t\u00eb ngrem\u00eb nj\u00eb instanc\u00eb t\u00eb menaxhuar t\u00eb zakonshme PostgreSQL ose MySQL me burime minimale. Kur instanca t\u00eb p\u00ebrballet me nj\u00eb ngarkes\u00eb m\u00eb t\u00eb madhe, ne do t\u00eb lidhim replika t\u00eb tjera, mbi t\u00eb cilat do t\u00eb shp\u00ebrndajm\u00eb nj\u00eb pjes\u00eb t\u00eb ngarkes\u00ebs lexuese. N\u00ebse nuk ka k\u00ebrkesash dhe ngarkesash - \u00e7aktivizojm\u00eb replikat. Instanca e par\u00eb \u00ebsht\u00eb master, nd\u00ebrsa t\u00eb tjerat jan\u00eb replika.<\/p>\n<p>Kjo ide \u00ebsht\u00eb realizuar n\u00eb nj\u00eb baz\u00eb t\u00eb quajtur Aurora Serverless AWS. Parimi \u00ebsht\u00eb i thjesht\u00eb: k\u00ebrkesat nga aplikacionet e jashtme pranohen nga flota proxy. Duke par\u00eb rritjen e ngarkes\u00ebs, ai alokon burime llogarit\u00ebse nga instancat minimale t\u00eb ngrira paraprakisht - lidhja realizohet sa m\u00eb shpejt t\u00eb jet\u00eb e mundur. \u00c7aktivizimi i instancave ndodh po ashtu.<\/p>\n<p>Brenda Aurora-s ekziston koncepti i Nj\u00ebsis\u00eb s\u00eb Kapacitetit Aurora, ACU. Kjo \u00ebsht\u00eb (n\u00eb m\u00ebnyr\u00eb t\u00eb kushtezuar) - nj\u00eb instanc\u00eb (server). \u00c7do ACU konkret mund t\u00eb jet\u00eb master ose slave. \u00c7do Nj\u00ebsi Kapaciteti ka memorjen e saj t\u00eb p\u00ebrkohshme, procesorin dhe nj\u00eb disk minimal. Prandaj, nj\u00eb master, nd\u00ebrsa tjerat jan\u00eb replika vet\u00ebm p\u00ebr lexim.<\/p>\n<p>Numri i k\u00ebtyre Nj\u00ebsive t\u00eb Kapacitetit Aurora n\u00eb funksion \u00ebsht\u00eb nj\u00eb parameter i konfigurable. Numri minimal mund t\u00eb jet\u00eb nj\u00eb ose zero (n\u00eb k\u00ebt\u00eb rast, baza nuk funksionon n\u00ebse nuk ka k\u00ebrkesa).<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/ab034e66fbd8874f062a656afa7044c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKur baza merr k\u00ebrkesa, flota proxy ngre Nj\u00ebsit\u00eb e Kapacitetit Aurora, duke rritur burimet e sistemit. Mund\u00ebsia p\u00ebr t\u00eb rritur dhe ulur burimet lejon sistemit t\u00eb \"llogaris\u00eb\" burimet: automatikisht t\u00eb t\u00ebrheq\u00eb ACU t\u00eb ve\u00e7anta (n\u00eb vend t\u00eb tyre t\u00eb reja) dhe t\u00eb aplikoj\u00eb t\u00eb gjitha p\u00ebrdit\u00ebsimet aktuale mbi burimet e t\u00ebrhequra.<\/p>\n<p>Baza Aurora Serverless mund t\u00eb shkall\u00ebzoj\u00eb ngarkes\u00ebn lexuese. Por n\u00eb dokumentacion nuk thuhet drejtp\u00ebrdrejt p\u00ebr k\u00ebt\u00eb. Mund t\u00eb krijohet ndjenja se ata mund t\u00eb ngrejn\u00eb multi-master. Nuk ka ndonj\u00eb magji k\u00ebtu. <\/p>\n<p>Kjo baz\u00eb \u00ebsht\u00eb shum\u00eb e p\u00ebrshtatshme p\u00ebr t\u00eb shmangur shpenzimet e m\u00ebdha p\u00ebr sisteme me qasje t\u00eb paqart\u00eb. P\u00ebr shembull, kur krijojm\u00eb nj\u00eb MVP ose faqesh\u00ebngjyrash marketingu, zakonisht nuk presim nj\u00eb ngarkes\u00eb t\u00eb q\u00ebndrueshme. Prandaj, n\u00eb rast mos qasje, ne nuk paguajm\u00eb p\u00ebr instancat. Kur papritmas shfaqet ngarkesa, p\u00ebr shembull pas nj\u00eb konference ose fushate reklamimi, turmat e njer\u00ebzve hyjn\u00eb n\u00eb faqe dhe ngarkesa rritet ndjesh\u00ebm; Aurora Serverless automatikisht pranon k\u00ebt\u00eb ngarkes\u00eb dhe lidh shpejt burimet q\u00eb mungojn\u00eb (ACU). M\u00eb pas, konferenca kalon, t\u00eb gjith\u00eb e harrojn\u00eb prototipin, serverat (ACU) fik\u00ebn dhe shpenzimet bien n\u00eb zero - e p\u00ebrshtatshme.<\/p>\n<p>Ky zgjidhje nuk \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr ngarkes\u00eb t\u00eb lart\u00eb t\u00eb q\u00ebndrueshme, sepse ajo nuk di t\u00eb shkall\u00ebzoj\u00eb ngarkes\u00ebn e shkrimit. T\u00eb gjitha k\u00ebto lidhje dhe \u00e7lodhje burimesh ndodhin n\u00eb momentin e ashtuquajtur 'scale point' - momenti kur baza nuk mbahet nga transaksionet, as nga tabelat p\u00ebrkohshme. P\u00ebr shembull, gjat\u00eb nj\u00eb jave mund t\u00eb mos ndodh\u00eb scale point dhe baza punon me t\u00eb nj\u00ebjtat burime dhe thjesht nuk mund t\u00eb zgjer\u00eb apo t\u00eb ngushtohet. <\/p>\n<p>Nuk ka magji - ky \u00ebsht\u00eb PostgreSQL i zakonsh\u00ebm. Por procesi i shtimit dhe \u00e7lodhjes t\u00eb makinave \u00ebsht\u00eb pjes\u00ebrisht automatizuar.<\/p>\n<h2>Serverless by design<\/h2>\n<p>\nAurora Serverless \u00ebsht\u00eb nj\u00eb baz\u00eb e vjet\u00ebr, e shkruar p\u00ebr n\u00eb cloud, p\u00ebr t\u00eb p\u00ebrdorur avantazhet specifike t\u00eb Serverless. Tani do t\u00eb flas p\u00ebr nj\u00eb baz\u00eb q\u00eb \u00ebsht\u00eb projektuar q\u00eb nga fillimi p\u00ebr n\u00eb cloud, me qasjen serverless - Serverless-by-design. Ajo \u00ebsht\u00eb zhvilluar menj\u00ebher\u00eb pa supozuar se do t\u00eb funksiononte n\u00eb server\u00eb fizik\u00eb.<\/p>\n<p>Kjo baz\u00eb quhet Snowflake. Ajo ka tre blloqe kryesore.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/15f9f07ed0281686e509ca6ced387db3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI pari - \u00ebsht\u00eb blloku i metadatos. Ky \u00ebsht\u00eb nj\u00eb sh\u00ebrbim i shpejt\u00eb n\u00eb-memory, q\u00eb zgjidh \u00e7\u00ebshtje sigurie, metadatash, transaksionesh dhe optimizimit t\u00eb k\u00ebrkesave (n\u00eb ilustrimin nga e majta).<\/p>\n<p>Blloku i dyt\u00eb - \u00ebsht\u00eb nj\u00eb num\u00ebr i madh i klaster\u00ebve virtual\u00eb p\u00ebrllogarit\u00ebs p\u00ebr llogaritjet (n\u00eb ilustrimin - nj\u00eb grup topash blu).<\/p>\n<p>Blloku i tret\u00eb - \u00ebsht\u00eb sistemi i ruajtjes s\u00eb t\u00eb dh\u00ebnave mbi baz\u00ebn S3. S3 \u00ebsht\u00eb nj\u00eb ruajtje objektesh e pandar\u00eb n\u00eb AWS, di\u00e7ka si nj\u00eb Dropbox i pandar\u00eb p\u00ebr biznes.<\/p>\n<p>Le t\u00eb shohim se si funksionon Snowflake, duke supozuar nj\u00eb fillim t\u00eb ftoht\u00eb. K\u00ebshtu q\u00eb kemi baz\u00ebn, t\u00eb dh\u00ebnat jan\u00eb ngarkuar n\u00eb t\u00eb, por nuk ka k\u00ebrkesa t\u00eb ekzekutueshme. Prandaj, n\u00ebse nuk ka k\u00ebrkesa p\u00ebr baz\u00ebn, ne kemi ngritur nj\u00eb sh\u00ebrbim Metadata me shpejt\u00ebsi t\u00eb lart\u00eb n\u00eb memorie (bloku i par\u00eb). Dhe kemi nj\u00eb depo S3, ku ruhen t\u00eb dh\u00ebnat e tabelave, t\u00eb ndara n\u00eb at\u00eb q\u00eb quhet mikro-partita. Thjesht: n\u00ebse tabela p\u00ebrmban transaksione, mikro-partita jan\u00eb dit\u00ebt e transaksioneve. \u00c7do dit\u00eb \u00ebsht\u00eb nj\u00eb mikro-partit\u00eb e ve\u00e7ant\u00eb, nj\u00eb skedar i ve\u00e7ant\u00eb. Dhe kur baza punon n\u00eb k\u00ebt\u00eb mod, ju paguani vet\u00ebm p\u00ebr hap\u00ebsir\u00ebn e z\u00ebn\u00eb nga t\u00eb dh\u00ebnat. \u00c7mimi p\u00ebr hap\u00ebsir\u00ebn \u00ebsht\u00eb shum\u00eb i ul\u00ebt (ve\u00e7an\u00ebrisht n\u00eb marr\u00ebveshje me kompresimin e konsideruesh\u00ebm). Sh\u00ebrbimi i metadatave gjithashtu punon vazhdimisht, por p\u00ebr optimizimin e k\u00ebrkesave nuk k\u00ebrkon shum\u00eb burime dhe sh\u00ebrbimi mund t\u00eb konsiderohet kushtimisht falas. <\/p>\n<p>Tani imagjinoni se nj\u00eb p\u00ebrdorues i \u00ebsht\u00eb afruar baz\u00ebs son\u00eb dhe ka d\u00ebrguar nj\u00eb k\u00ebrkes\u00eb SQL. K\u00ebrkesa SQL menj\u00ebher\u00eb procedohet n\u00eb sh\u00ebrbimin Metadata. Pra, pasi merr k\u00ebrkes\u00ebn, ky sh\u00ebrbim analizon k\u00ebrkes\u00ebn, t\u00eb dh\u00ebnat e disponueshme, autorizimet e p\u00ebrdoruesit dhe, n\u00ebse gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull, p\u00ebrgatit nj\u00eb plan p\u00ebr p\u00ebrpunimin e k\u00ebrkes\u00ebs.<\/p>\n<p>M\u00eb pas, sh\u00ebrbimi iniciaton aktivizimin e grupit t\u00eb llogaritjes. Grupi i llogaritjes \u00ebsht\u00eb nj\u00eb grup server\u00ebsh q\u00eb kryejn\u00eb llogaritjet. K\u00ebshtu q\u00eb ky grup mund t\u00eb p\u00ebrmbaj\u00eb 1 server, 2 server\u00eb, 4, 8, 16, 32 \u2014 sa t\u00eb d\u00ebshironi. Ju d\u00ebrgoni k\u00ebrkes\u00ebn dhe menj\u00ebher\u00eb fillon aktivizimi i k\u00ebtij grupi. Kjo v\u00ebrtet merr disa sekonda.<\/p>\n<p><img decoding=\"async\" alt=\"Drejt bazave t\u00eb t\u00eb dh\u00ebnave serverless \u2014 si dhe pse\" src=\"\/wp-content\/uploads\/2020\/08\/51b11aee0b0868681c4978f5becd1f1d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00eb pas, pasi klasteri \u00ebsht\u00eb nisur, mikro-particionet e nevojshme p\u00ebr trajtimin e k\u00ebrkes\u00ebs suaj fillojn\u00eb t\u00eb kopjohen nga S3 n\u00eb klaster. Kjo do t\u00eb thot\u00eb q\u00eb, le t\u00eb supozojm\u00eb, p\u00ebr t\u00eb ekzekutuar nj\u00eb k\u00ebrkes\u00eb SQL, nevojiten dy parti\u00e7ione nga nj\u00eb tabel\u00eb dhe nj\u00eb nga tjetra. N\u00eb k\u00ebt\u00eb rast, n\u00eb klaster do t\u00eb kopjohen vet\u00ebm tre parti\u00e7ione t\u00eb nevojshme, dhe jo t\u00eb gjitha tabelat. Pikerisht p\u00ebr k\u00ebt\u00eb arsye dhe p\u00ebr shkak se gjith\u00e7ka ndodhet brenda nj\u00eb qendre t\u00eb dh\u00ebnash dhe \u00ebsht\u00eb e lidhur me kanale shum\u00eb t\u00eb shpejta, t\u00ebr\u00eb procesi i transferimit ndodh shum\u00eb shpejt: brenda sekondash, shum\u00eb rrall\u00eb \u2014 brenda minutash, n\u00ebse nuk b\u00ebhet fjal\u00eb p\u00ebr ndonj\u00eb k\u00ebrkes\u00eb monstruoze. P\u00ebr rrjedhoj\u00eb, mikro-particionet kopjohen n\u00eb klasterin llogarit\u00ebs dhe, pas p\u00ebrfundimit, n\u00eb k\u00ebt\u00eb klaster ekzekutohet k\u00ebrkesa SQL. Rezultati i k\u00ebsaj k\u00ebrkese mund t\u00eb jet\u00eb nj\u00eb rresht, disa rreshta ose nj\u00eb tabel\u00eb \u2014 ato d\u00ebrgohen jasht\u00eb p\u00ebr p\u00ebrdoruesin, n\u00eb m\u00ebnyr\u00eb q\u00eb ai t\u00eb mund t'i nxjerr\u00eb, t'i shfaq\u00eb n\u00eb mjetin e BI, ose t\u00eb p\u00ebrdor\u00eb ndonj\u00eb m\u00ebnyr\u00eb tjet\u00ebr.<\/p>\n<p>\u00c7do k\u00ebrkes\u00eb SQL nuk mund vet\u00ebm t\u00eb llogaris\u00eb agregat nga t\u00eb dh\u00ebnat e ngarkuara m\u00eb par\u00eb, por gjithashtu t\u00eb ngarkoj\u00eb\/krijoj\u00eb t\u00eb dh\u00ebna t\u00eb reja n\u00eb baz\u00eb. Kjo do t\u00eb thot\u00eb q\u00eb mund t\u00eb jet\u00eb nj\u00eb k\u00ebrkes\u00eb q\u00eb, p\u00ebr shembull, realizon nj\u00eb insertim n\u00eb nj\u00eb tabel\u00eb tjet\u00ebr t\u00eb sh\u00ebnimeve t\u00eb reja, e cila \u00e7on n\u00eb shfaqjen e nj\u00eb partie t\u00eb re n\u00eb klasterin llogarit\u00ebs, e cila, nga ana e saj, automatikisht ruhet n\u00eb depozit\u00ebn unike S3.<\/p>\n<p>Skenari i p\u00ebrshkruar m\u00eb sip\u00ebr, nga ardhja e p\u00ebrdoruesit deri n\u00eb ngritjes e klasterit, ngarkimi i t\u00eb dh\u00ebnave, ekzekutimi i k\u00ebrkesave, marrja e rezultateve, paguhet sipas tarif\u00ebs p\u00ebr minutat e p\u00ebrdorimit t\u00eb klasterit t\u00eb ngritur virtual, warehouse virtual. Tarifa varion n\u00eb var\u00ebsi t\u00eb zon\u00ebs AWS dhe madh\u00ebsis\u00eb s\u00eb klasterit, por, mesatarisht, \u00ebsht\u00eb disa dollar\u00eb n\u00eb or\u00eb. Klasteri me kat\u00ebr makina \u00ebsht\u00eb dy her\u00eb m\u00eb i shtrenjt\u00eb se ai me dy makina, dhe ai me tet\u00eb makina \u00ebsht\u00eb edhe dy her\u00eb m\u00eb i shtrenjt\u00eb. Jan\u00eb t\u00eb disponueshme variante nga 16, 32 makina, var\u00ebsisht nga kompleksiteti i k\u00ebrkesave. Por ju paguani vet\u00ebm p\u00ebr minutat kur klasteri \u00ebsht\u00eb realisht n\u00eb pun\u00eb, sepse, kur nuk ka k\u00ebrkesa, si t\u00eb thuash, hiqni duar nga tastiera, dhe pas 5-10 minutash pritjeje (parametri i rregulluesh\u00ebm), ai vet\u00eb do t\u00eb fiket, do t\u00eb \u00e7liroj\u00eb burimet dhe do t\u00eb b\u00ebhet falas.<\/p>\n<p>Nj\u00eb skenar absolutisht realist \u00ebsht\u00eb ai ku ju d\u00ebrgoni nj\u00eb k\u00ebrkes\u00eb, klasteri shfaqet, mund\u00ebsisht, p\u00ebr nj\u00eb minut\u00eb, dhe p\u00ebr nj\u00eb minut\u00eb tjet\u00ebr ai llogaritet, m\u00eb pas pes\u00eb minuta p\u00ebr t\u00eb fikur, dhe n\u00eb fund paguani p\u00ebr shtat\u00eb minuta funksionimi t\u00eb k\u00ebtij klasteri, dhe jo p\u00ebr muaj dhe vite.<\/p>\n<p>Skenari i par\u00eb p\u00ebrshkruante p\u00ebrdorimin e Snowflake n\u00eb nj\u00eb version p\u00ebr nj\u00eb p\u00ebrdorues. Tani le t\u00eb imagjinojm\u00eb se ka shum\u00eb p\u00ebrdorues, q\u00eb \u00ebsht\u00eb m\u00eb af\u00ebr skenarit real.<\/p>\n<p>Supozoni se kemi shum\u00eb analist\u00eb dhe raporte Tableau q\u00eb vazhdimisht bombardojn\u00eb baz\u00ebn ton\u00eb me shum\u00eb SQL-llogari analitike t\u00eb thjeshta.<\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, le t\u00eb supozojm\u00eb se kemi DSC (Shkenc\u00ebtar\u00eb t\u00eb Dh\u00ebnash) shpik\u00ebs q\u00eb p\u00ebrpiqen t\u00eb b\u00ebjn\u00eb gj\u00ebra t\u00eb frikshme me t\u00eb dh\u00ebnat, duke operuar me dhjet\u00ebra Terabajt, analizuar miliarda e triliona rreshtash t\u00eb dh\u00ebnash. <\/p>\n<p>P\u00ebr dy llojet e ngarkesave t\u00eb p\u00ebrshkruara m\u00eb sip\u00ebr, Snowflake lejon ngritjen e disa klaster\u00ebsh t\u00eb pavarur t\u00eb llojeve t\u00eb ndryshme t\u00eb fuqis\u00eb. K\u00ebta klaster\u00eb t\u00eb llogaritjes punojn\u00eb pavar\u00ebsisht, por me t\u00eb dh\u00ebna t\u00eb p\u00ebrbashk\u00ebta t\u00eb koherente.<\/p>\n<p>P\u00ebr nj\u00eb sasi t\u00eb madhe k\u00ebrkesash t\u00eb lehta, mund t\u00eb ngrini 2-3 klaster\u00eb t\u00eb vegj\u00ebl, me nj\u00eb p\u00ebrmas\u00eb, mund\u00ebsisht, 2 makina secila. Ky veprim \u00ebsht\u00eb i realizuesh\u00ebm, gjithashtu, me an\u00eb t\u00eb konfigurimeve automatike. Pra, ju thoni: \"Snowflake, ngrit nj\u00eb klaster t\u00eb vog\u00ebl. N\u00ebse ngarkesa rritet m\u00eb shum\u00eb se nj\u00eb paramet\u00ebr t\u00eb caktuar, ngrit nj\u00eb t\u00eb dyt\u00eb, t\u00eb tret\u00eb t\u00eb ngjash\u00ebm. Kur ngarkesa t\u00eb filloj\u00eb t\u00eb bjer\u00eb - fikni t\u00eb tep\u00ebrtit.\" T\u00eb siguroheni q\u00eb, pavar\u00ebsisht nga sa analist\u00eb vijn\u00eb dhe fillojn\u00eb t\u00eb shikojn\u00eb raportet, t\u00eb gjith\u00eb t\u00eb ken\u00eb burime t\u00eb mjaftueshme.<\/p>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, n\u00ebse analist\u00ebt flen\u00eb, dhe raportet nuk shikohen nga askush - klaster\u00ebt mund t\u00eb fik\u00ebn plot\u00ebsisht dhe ju ndaloni pages\u00ebn p\u00ebr ta.<\/p>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, p\u00ebr k\u00ebrkesa t\u00eb r\u00ebnda (nga DSC), mund t\u00eb ngrini nj\u00eb klaster shum\u00eb t\u00eb madh me nj\u00eb num\u00ebr t\u00eb supozuar prej 32 makinash. Ky klaster gjithashtu do t\u00eb paguhet vet\u00ebm p\u00ebr minutat dhe or\u00ebt kur atje funksionon k\u00ebrkesa juaj gjigande.<\/p>\n<p>Kjo mund\u00ebsi e p\u00ebrshkruar m\u00eb sip\u00ebr lejon ndarjen sipas klaster\u00ebve jo vet\u00ebm dy, por edhe m\u00eb shum\u00eb lloje ngarkesash (ETL, monitorim, materializim raporte, ...).<\/p>\n<p>T\u00eb b\u00ebjm\u00eb nj\u00eb p\u00ebrmbledhje p\u00ebr Snowflake. Database kombinon nj\u00eb ide t\u00eb bukur dhe nj\u00eb implementim funksional. N\u00eb ManyChat ne p\u00ebrdorim Snowflake p\u00ebr analitik\u00ebn e t\u00eb dh\u00ebnave q\u00eb kemi. Ne kemi m\u00eb shum\u00eb se tre grupe, si\u00e7 \u00ebsht\u00eb shembulli, nga 5 n\u00eb 9, me madh\u00ebsi t\u00eb ndryshme. Kemi grupe me 16 makinave, 2 makinash, dhe kemi edhe super-t\u00eb vogla me 1 makin\u00eb p\u00ebr disa detyra. Ato shp\u00ebrndajn\u00eb ngarkes\u00ebn me sukses dhe na lejojn\u00eb t\u00eb kursejm\u00eb shum\u00eb.<\/p>\n<p>Database me sukses shkall\u00ebzon ngarkes\u00ebn lexuese dhe shkruese. Ky \u00ebsht\u00eb nj\u00eb ndryshim i Madh dhe nj\u00eb hap i madh p\u00ebrpara krahasuar me \"Aurora\", e cila trajtonte vet\u00ebm ngarkes\u00ebn lexuese. Snowflake lejon q\u00eb k\u00ebto grupe kompjuterike t\u00eb shkall\u00ebzojn\u00eb edhe ngarkes\u00ebn shkruese. Pra, si\u00e7 p\u00ebrmenda, ne n\u00eb ManyChat p\u00ebrdorim disa grupe, grupe t\u00eb vogla dhe super t\u00eb vogla p\u00ebrdoren kryesisht p\u00ebr ETL, p\u00ebr ngarkimin e t\u00eb dh\u00ebnave. Dhe analist\u00ebt punojn\u00eb n\u00eb grupe mesatare, t\u00eb cilat nuk preken nga ngarkesa ETL, prandaj punojn\u00eb shum\u00eb shpejt. <\/p>\n<p>Meqen\u00ebse, database \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr detyra OLAP. Nd\u00ebrkoh\u00eb, me keqardhje, p\u00ebr ngarkesat OLTP nuk \u00ebsht\u00eb ende e aplikueshme. S\u00eb pari, kjo baz\u00eb \u00ebsht\u00eb kolonuese, me t\u00eb gjitha pasojat q\u00eb dalin nga kjo. S\u00eb dyti, vet\u00eb qasja, kur p\u00ebr \u00e7do k\u00ebrkes\u00eb rritni nj\u00eb grup kompjuterik sipas nevoj\u00ebs dhe e derdhni at\u00eb me t\u00eb dh\u00ebna, p\u00ebr fat t\u00eb keq, p\u00ebr ngarkesat OLTP ende nuk \u00ebsht\u00eb e mjaftueshme e shpejt\u00eb. Sekondat e pritjes p\u00ebr detyrat OLAP jan\u00eb normale, por p\u00ebr detyrat OLTP - \u00ebsht\u00eb e papranueshme, do t\u00eb ishte m\u00eb mir\u00eb 100 ms, dhe akoma m\u00eb mir\u00eb - 10 ms.<\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nDatabase pa server \u00ebsht\u00eb e mundur p\u00ebrmes ndarjes s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb pjes\u00eb Stateless dhe Stateful. Ju ndoshta keni v\u00ebn\u00eb re se n\u00eb t\u00eb gjitha shembujt e dh\u00ebn\u00eb, pjesa Stateful - \u00ebsht\u00eb, n\u00eb terma t\u00eb qart\u00eb, ruajtja e microparticioneve n\u00eb S3, nd\u00ebrsa Stateless - \u00ebsht\u00eb optimizuesi, puna me metadat, trajtimi i pyetjeve t\u00eb siguris\u00eb, t\u00eb cilat mund t\u00eb ngrihen si sh\u00ebrbime t\u00eb lehta dhe t\u00eb pavarura Stateless.<\/p>\n<p>Ekzekutimi i k\u00ebrkesave SQL gjithashtu mund t\u00eb perceptohet si sh\u00ebrbime me nj\u00eb gjendje t\u00eb leht\u00eb, t\u00eb cilat mund t\u00eb shfaqen n\u00eb modalitet pa server, si grupet kompjuterike t\u00eb Snowflake, duke shkarkuar vet\u00ebm t\u00eb dh\u00ebnat e nevojshme, duke ekzekutuar k\u00ebrkes\u00ebn dhe \"dukur\".<\/p>\n<p>Baza pa serverless e nivelit prodhues \u00ebsht\u00eb tashm\u00eb e disponueshme p\u00ebr t'u p\u00ebrdorur, ata po punojn\u00eb. K\u00ebto baza serverless jan\u00eb gati t\u00eb p\u00ebrballojn\u00eb detyrat OLAP. Fatkeq\u00ebsisht, p\u00ebr detyrat OLTP ato aplikohen\u2026 me nuanca, sepse ka kufizime. Nga nj\u00ebra an\u00eb, kjo \u00ebsht\u00eb nj\u00eb disavantazh. Por, nga ana tjet\u00ebr, kjo \u00ebsht\u00eb nj\u00eb mund\u00ebsi. Ndoshta ndonj\u00eb prej lexuesve do t\u00eb gjej\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr ta b\u00ebr\u00eb nj\u00eb baz\u00eb OLTP plot\u00ebsisht serverless, pa kufizime Aurora.<\/p>\n<p>Shpresoj q\u00eb ju ka interesuar. P\u00ebr t\u00eb ardhmen Serverless \ud83d\ude42<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/514298\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439. \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0410\u0432\u0438\u0442\u043e \u0438 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u043b Data Platform, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (Vertica, ClickHouse), \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0445, \u0438 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91636,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91635","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.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439.\" \/>\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\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\udd47\u041d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\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-08-15T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-15T17:42:23+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\udd47N\u00eb rrug\u00ebn drejt bazave t\u00eb dh\u00ebnash pa server \u2014 si dhe pse | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! M\u00eb quajn\u00eb Nikolai Golov.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","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\udd47\u041d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0413\u043e\u043b\u043e\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\u0439.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","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-08-15T17:42:23+00:00","article:modified_time":"2020-08-15T17:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91635","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 12:23:25","updated":"2022-09-27 17:18:10","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/91635","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=91635"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/91635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/91636"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=91635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=91635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=91635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}