{"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\/cs\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","title":{"rendered":"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj v\u0161ichni! Jmenuji se Nikolaj Golov. D\u0159\u00edve jsem pracoval na Avito a \u0161est let vedl Data Platform, tedy jsem se zab\u00fdval v\u0161emi datab\u00e1zemi: analytick\u00fdmi (Vertica, ClickHouse), streamov\u00fdmi a OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). B\u011bhem t\u00e9to doby jsem se sezn\u00e1mil s velk\u00fdm mno\u017estv\u00edm datab\u00e1z\u00ed \u2013 nejr\u016fzn\u011bj\u0161\u00edmi a zvl\u00e1\u0161tn\u00edmi, a s netradi\u010dn\u00edmi p\u0159\u00edpady jejich pou\u017eit\u00ed.<\/p>\n<p>Nyn\u00ed pracuji v ManyChat. V podstat\u011b je to startup \u2013 nov\u00fd, ambici\u00f3zn\u00ed a rychle rostouc\u00ed. A kdy\u017e jsem do firmy teprve nastoupil, objevil se klasick\u00fd dotaz: \u201eJak\u00e1 datab\u00e1ze by te\u010f m\u011bla mlad\u00e1 startupov\u00e1 firma br\u00e1t na trhu DBMS a datab\u00e1z\u00ed?\u201c <\/p>\n<p>V tomto \u010dl\u00e1nku, zalo\u017een\u00e9m na m\u00e9m pov\u00edd\u00e1n\u00ed na <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2020\/\">online festivalu RIT++2020<\/a><\/noindex>, odpov\u00edm na tuto ot\u00e1zku. Videoversion p\u0159edn\u00e1\u0161ky je dostupn\u00e1 na <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/H23f_z13ro4\">YouTube<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" 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>Obvykl\u00e9 datab\u00e1ze roku 2020<\/h2>\n<p>\nJe rok 2020, pod\u00edval jsem se kolem a vid\u011bl t\u0159i typy DB. <\/p>\n<p>Prvn\u00ed typ \u2014 <b>klasick\u00e9 OLTP datab\u00e1ze<\/b>: PostgreSQL, SQL Server, Oracle, MySQL. Byly napsan\u00e9 jako d\u00e1vno, ale st\u00e1le jsou relevantn\u00ed, proto\u017ee jsou dob\u0159e zn\u00e1m\u00e9 komunit\u011b v\u00fdvoj\u00e1\u0159\u016f.<\/p>\n<p>Druh\u00fd typ \u2014 <b>datab\u00e1ze z \u201enuly\u201c<\/b>. Sna\u017eily se vyhnout klasick\u00fdm vzor\u016fm t\u00edm, \u017ee se vzdaly SQL, tradi\u010dn\u00edch struktur a ACID, na z\u00e1klad\u011b integrovan\u00e9ho shardov\u00e1n\u00ed a dal\u0161\u00edch atraktivn\u00edch funkc\u00ed. Nap\u0159\u00edklad to jsou Cassandra, MongoDB, Redis nebo Tarantool. V\u0161echna tato \u0159e\u0161en\u00ed cht\u011bla nab\u00eddnout trhu n\u011bco z\u00e1sadn\u011b nov\u00e9ho a na\u0161la si svou niku, proto\u017ee v ur\u010dit\u00fdch \u00faloh\u00e1ch se uk\u00e1zala jako velmi pohodln\u00e1. Tyto datab\u00e1ze ozna\u010d\u00edm jako souhrnn\u00fd term\u00edn NOSQL.<\/p>\n<p>Nula skon\u010dila, na NOSQL datab\u00e1ze jsme si zvykli, a sv\u011bt, z m\u00e9ho pohledu, ud\u011blal dal\u0161\u00ed krok \u2014 k <b>managed datab\u00e1z\u00edm<\/b>. Tyto datab\u00e1ze maj\u00ed stejn\u00e9 j\u00e1dro jako klasick\u00e9 OLTP datab\u00e1ze nebo nov\u00e9 NoSQL. Ale nepot\u0159ebuj\u00ed DBA ani DevOps a funguj\u00ed na spravovan\u00e9m hardwaru v cloudu. Pro v\u00fdvoj\u00e1\u0159e je to \u201ejen datab\u00e1ze\u201c, kter\u00e1 n\u011bkde funguje, a jak je nainstalov\u00e1na na serveru, kdo server nastavuje a kdo ho aktualizuje, nikoho nezaj\u00edm\u00e1.<\/p>\n<p>P\u0159\u00edklady takov\u00fdch datab\u00e1z\u00ed:<\/p>\n<ul>\n<li>AWS RDS \u2014 managed obal nad PostgreSQL\/MySQL.<\/li>\n<li>DynamoDB \u2014 AWS ekvivalent dokumentov\u00e9 datab\u00e1ze, podobn\u00fd Redis a MongoDB.<\/li>\n<li>Amazon Redshift \u2014 managed analytick\u00e1 datab\u00e1ze.<\/li>\n<\/ul>\n<p>\nZ\u00e1kladem jsou star\u00e9 datab\u00e1ze, ale provozovan\u00e9 v managed prost\u0159ed\u00ed, bez nutnosti pracovat s hardwarem. <\/p>\n<p><i>Pozn\u00e1mka. P\u0159\u00edklady jsou vzaty pro prost\u0159ed\u00ed AWS, ale jejich analogy tak\u00e9 existuj\u00ed v Microsoft Azure, Google Cloud nebo Yandex.Cloud.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/06e50904f795b3b5dc62ca45622b2dd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCo je na tom nov\u00e9ho? V roce 2020 nic z toho.<\/p>\n<h2>Koncept Serverless<\/h2>\n<p>\nSkute\u010dn\u011b novinkou na trhu v roce 2020 jsou bezserverov\u00e1 \u0159e\u0161en\u00ed.<\/p>\n<p>Pokud bych to m\u011bl vysv\u011btlit, pou\u017eiji p\u0159\u00edklad b\u011b\u017en\u00e9 slu\u017eby nebo backendov\u00e9 aplikace.<br \/>\nPro nasazen\u00ed b\u011b\u017en\u00e9 backendov\u00e9 aplikace koup\u00edme nebo pronajmeme server, zkop\u00edrujeme na n\u011bj k\u00f3d, zve\u0159ejn\u00edme venkovn\u00ed endpoint a pravideln\u011b plat\u00edme za pron\u00e1jem, elektrickou energii a slu\u017eby datov\u00e9ho centra. To je standardn\u00ed sch\u00e9ma.<\/p>\n<p>Existuje jin\u00fd zp\u016fsob? S bezserverov\u00fdmi slu\u017ebami ano.<\/p>\n<p>O co v tomto p\u0159\u00edstupu jde: \u017e\u00e1dn\u00fd server, dokonce ani pron\u00e1jem virtu\u00e1ln\u00ed instance v cloudu. Pro nasazen\u00ed slu\u017eby zkop\u00edrujeme k\u00f3d (funkce) do repozit\u00e1\u0159e a zve\u0159ejn\u00edme venkovn\u00ed endpoint. Pot\u00e9 plat\u00edme pouze za ka\u017ed\u00e9 vol\u00e1n\u00ed t\u00e9to funkce, \u00fapln\u011b ignorujeme hardware, na kter\u00e9m se vykon\u00e1v\u00e1.<\/p>\n<p>Zkus\u00edm tento p\u0159\u00edstup ilustrovat na obr\u00e1zc\u00edch.<br \/>\n<img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/705cf89c51b8166da772b1d877262b44.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Klasick\u00e9 nasazen\u00ed<\/b>. M\u00e1me slu\u017ebu s ur\u010ditou z\u00e1t\u011b\u017e\u00ed. Spou\u0161t\u00edme dva instance: fyzick\u00e9 servery nebo instance v AWS. Na tyto instance sm\u011b\u0159uj\u00ed extern\u00ed po\u017eadavky, kter\u00e9 jsou tam zpracov\u00e1v\u00e1ny. <\/p>\n<p>Jak je vid\u011bt na obr\u00e1zku, servery nejsou pln\u011b vyu\u017eity. Jeden je vyu\u017eit na 100%, zpracov\u00e1v\u00e1 dva po\u017eadavky, a druh\u00fd pouze na 50% \u2014 \u010d\u00e1ste\u010dn\u011b nevyu\u017eity. Pokud p\u0159ijdou m\u00edsto t\u0159\u00ed po\u017eadavk\u016f t\u0159i des\u00edtky, cel\u00fd syst\u00e9m to nezvl\u00e1dne a za\u010dne se zpomalovat.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/005b1f91ced2f2b29363cf975ed085e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Bezserverov\u00e9 nasazen\u00ed<\/b>. V bezserverov\u00e9m prost\u0159ed\u00ed nem\u00e1 podobn\u00e1 slu\u017eba \u017e\u00e1dn\u00e9 instance ani servery. Existuje ur\u010dit\u00fd pool vyh\u0159\u00e1t\u00fdch zdroj\u016f \u2014 mal\u00e9 p\u0159ipraven\u00e9 kontejnery Docker s nasazen\u00fdm k\u00f3dem funkce. Syst\u00e9m p\u0159ij\u00edm\u00e1 extern\u00ed po\u017eadavky a na ka\u017ed\u00fd z nich bezserverov\u00fd framework spou\u0161t\u00ed mal\u00fd kontejner s k\u00f3dem: zpracov\u00e1v\u00e1 tento konkr\u00e9tn\u00ed po\u017eadavek a pak kontejner zru\u0161\u00ed.<\/p>\n<p>Jeden po\u017eadavek \u2014 jeden spu\u0161t\u011bn\u00fd kontejner, 1000 po\u017eadavk\u016f \u2014 1000 kontejner\u016f. A nasazen\u00ed na fyzick\u00fdch serverech je u\u017e prac\u00ed cloudov\u00e9ho poskytovatele. Tato \u010dinnost je zcela skryta bezserverov\u00fdm frameworkem. V t\u00e9to koncepci plat\u00edme za ka\u017ed\u00e9 vol\u00e1n\u00ed. Nap\u0159\u00edklad, p\u0159i\u0161el jeden po\u017eadavek za den \u2014 zaplatili jsme za jedno vol\u00e1n\u00ed, p\u0159i\u0161el milion za minutu \u2014 zaplatili jsme za milion. Nebo za sekundu, to se tak\u00e9 st\u00e1v\u00e1.<\/p>\n<p>Koncept publikace bezserverov\u00e9 funkce vyhovuje pro stateless slu\u017ebu. Pokud v\u0161ak pot\u0159ebujete statefull slu\u017ebu, p\u0159id\u00e1me k n\u00ed datab\u00e1zi. V tomto p\u0159\u00edpad\u011b, kdy\u017e dojde na pr\u00e1ci se stavem, ka\u017ed\u00e1 statefull funkce jednodu\u0161e zapisuje a \u010dte z datab\u00e1ze. Nav\u00edc z datab\u00e1ze jak\u00e9hokoli z t\u0159\u00ed typ\u016f popsan\u00fdch na za\u010d\u00e1tku \u010dl\u00e1nku.<\/p>\n<p>Jak\u00e9 je spole\u010dn\u00e9 omezen\u00ed v\u0161ech t\u011bchto datab\u00e1z\u00ed? Jsou to n\u00e1klady na neust\u00e1le pou\u017e\u00edvan\u00fd cloudov\u00fd nebo fyzick\u00fd server (nebo n\u011bkolik server\u016f). Nez\u00e1le\u017e\u00ed na tom, zda pou\u017e\u00edv\u00e1me klasickou datab\u00e1zi nebo managed, zda m\u00e1me DevOps a administr\u00e1tora, stejn\u011b tak plat\u00edme 24\/7 za hardware, elektrickou energii a pron\u00e1jem datov\u00e9ho centra. Pokud m\u00e1me klasickou datab\u00e1zi, plat\u00edme za master a slave. Pokud je to vysoce zat\u00ed\u017een\u00e1 shardovan\u00e1 datab\u00e1ze, plat\u00edme za 10, 20 nebo 30 server\u016f a to neust\u00e1le.<\/p>\n<p>P\u0159\u00edtomnost trvale rezervovan\u00fdch server\u016f v n\u00e1kladech byla d\u0159\u00edve vn\u00edm\u00e1na jako nevyhnuteln\u00e9 zlo. Klasick\u00e9 datab\u00e1ze maj\u00ed i dal\u0161\u00ed komplikace, jako jsou limity na po\u010det p\u0159ipojen\u00ed, omezen\u00ed \u0161k\u00e1lov\u00e1n\u00ed, geograficky distribuovan\u00fd konsensus \u2014 tyto probl\u00e9my lze vy\u0159e\u0161it u ur\u010dit\u00fdch datab\u00e1z\u00ed, ale ne v\u0161echny najednou a ne dokonale.<\/p>\n<h2>Bezserverov\u00e1 datab\u00e1ze \u2014 teorie<\/h2>\n<p>\nOt\u00e1zka roku 2020: lze datab\u00e1zi rovn\u011b\u017e vytvo\u0159it bezserverovou? V\u0161ichni sly\u0161eli o bezserverov\u00e9m backendu\u2026 co takhle zkusit ud\u011blat datab\u00e1zi bezserverovou?<\/p>\n<p>Zn\u00ed to podivn\u011b, proto\u017ee datab\u00e1ze je p\u0159ece statefull slu\u017eba, kter\u00e1 se pro bezserverovou infrastrukturu p\u0159\u00edli\u0161 nehod\u00ed. Navzdory tomu je stav datab\u00e1ze velmi rozs\u00e1hl\u00fd: gigabyty, terabyty, a v analytick\u00fdch datab\u00e1z\u00edch dokonce petabyty. Jen tak se to v lehk\u00fdch Docker kontejner\u00fdch nezprovozuje.<\/p>\n<p>Na druh\u00e9 stran\u011b, t\u00e9m\u011b\u0159 v\u0161echny modern\u00ed datab\u00e1ze jsou ohromn\u00e9 mno\u017estv\u00ed logiky a komponent\u016f: transakce, zaji\u0161t\u011bn\u00ed integrity, procedury, rela\u010dn\u00ed z\u00e1vislosti a spousta logiky. Pom\u011brn\u011b velk\u00e1 \u010d\u00e1st logiky datab\u00e1ze pot\u0159ebuje relativn\u011b mal\u00fd stav. Gigabyty a terabyty se p\u0159\u00edmo pou\u017e\u00edvaj\u00ed jen malou \u010d\u00e1st\u00ed logiky datab\u00e1ze, kter\u00e1 souvis\u00ed s okam\u017eit\u00fdm prov\u00e1d\u011bn\u00edm dotaz\u016f.<\/p>\n<p>T\u00edm p\u00e1dem je my\u0161lenka: pokud \u010d\u00e1st logiky dovoluje stateless proveden\u00ed, pro\u010d bychom datab\u00e1zi nerozd\u011blili na Stateful a Stateless \u010d\u00e1sti.<\/p>\n<h2>Serverless pro OLAP \u0159e\u0161en\u00ed<\/h2>\n<p>\nPod\u00edvejme se, jak m\u016f\u017ee vypadat rozd\u011blen\u00ed datab\u00e1ze na Stateful a Stateless \u010d\u00e1sti na praktick\u00fdch p\u0159\u00edkladech.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/51793a5649e68dafc9e7ce395da9e065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Nap\u0159\u00edklad m\u00e1me analytickou datab\u00e1zi<\/b>: extern\u00ed data (\u010derven\u00fd v\u00e1lec vlevo), ETL proces, kter\u00fd na\u010d\u00edt\u00e1 data do datab\u00e1ze, a analytik, kter\u00fd pos\u00edl\u00e1 SQL dotazy k datab\u00e1zi. To je klasick\u00e1 sch\u00e9ma fungov\u00e1n\u00ed datov\u00e9ho skladu. <\/p>\n<p>V t\u00e9to sch\u00e9m\u011b se ETL prov\u00e1d\u00ed, \u0159ekn\u011bme, jednou. D\u00e1le je nutn\u00e9 neust\u00e1le platit za servery, na kter\u00fdch b\u011b\u017e\u00ed datab\u00e1ze se zde vlo\u017een\u00fdmi daty, aby bylo co dotazovat. <\/p>\n<p>Pod\u00edvejme se na alternativn\u00ed p\u0159\u00edstup implementovan\u00fd v datab\u00e1zi AWS Athena Serverless. Zde neexistuje neust\u00e1le p\u0159id\u011blen\u00fd hardware, na kter\u00e9m jsou ulo\u017eena na\u010dten\u00e1 data. M\u00edsto toho:<\/p>\n<ul>\n<li>U\u017eivatel pos\u00edl\u00e1 SQL dotaz k Ath\u00e9n\u011b. Optimaliz\u00e1tor Ath\u00e9ny analyzuje SQL dotaz a vyhled\u00e1v\u00e1 ve skladu metadat (Metadata) konkr\u00e9tn\u00ed data pot\u0159ebn\u00e1 k proveden\u00ed dotazu.<\/li>\n<li>Optimaliz\u00e1tor na z\u00e1klad\u011b shrom\u00e1\u017ed\u011bn\u00fdch dat extrahuje pot\u0159ebn\u00e1 data z extern\u00edch zdroj\u016f do do\u010dasn\u00e9ho \u00falo\u017ei\u0161t\u011b (do\u010dasn\u00e1 datab\u00e1ze).<\/li>\n<li>V do\u010dasn\u00e9m \u00falo\u017ei\u0161ti se prov\u00e1d\u00ed SQL dotaz od u\u017eivatele, v\u00fdsledek se vrac\u00ed u\u017eivateli. <\/li>\n<li>Do\u010dasn\u00e9 \u00falo\u017ei\u0161t\u011b se \u010dist\u00ed, zdroje se uvol\u0148uj\u00ed.<\/li>\n<\/ul>\n<p>V t\u00e9to architektu\u0159e plat\u00edme pouze za proces prov\u00e1d\u011bn\u00ed dotazu. Nen\u00ed \u017e\u00e1dn\u00fd dotaz \u2014 nejsou \u017e\u00e1dn\u00e9 n\u00e1klady.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/0e21282b66e3120524c2324811cb04a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je funk\u010dn\u00ed p\u0159\u00edstup a realizuje se nejen v Athena Serverless, ale i v Redshift Spectrum (v AWS).<\/p>\n<p>Na p\u0159\u00edkladu Ath\u00e9ny je vid\u011bt, \u017ee datab\u00e1ze bez serveru pracuje na skute\u010dn\u00fdch dotazech s des\u00edtkami a stovkami terabajt\u016f dat. Pro stovky terabajt\u016f budou pot\u0159eba stovky server\u016f, ale nemus\u00edme za n\u011b platit \u2014 plat\u00edme za dotazy. Rychlost ka\u017ed\u00e9ho dotazu je (velmi) n\u00edzk\u00e1 ve srovn\u00e1n\u00ed se specializovan\u00fdmi analytick\u00fdmi datab\u00e1zemi jako Vertica, ale za dobu ne\u010dinnosti neplat\u00edme.<\/p>\n<p>Takov\u00e1 datab\u00e1ze je pou\u017eiteln\u00e9 pro vz\u00e1cn\u00e9 analytick\u00e9 ad-hoc dotazy. Nap\u0159\u00edklad kdy\u017e se spont\u00e1nn\u011b rozhodneme prov\u011b\u0159it hypot\u00e9zu na n\u011bjak\u00e9m obrovsk\u00e9m objemu dat. Pro tyto p\u0159\u00edpady je Athena ide\u00e1ln\u00ed. Pro pravideln\u00e9 dotazy se takov\u00fd syst\u00e9m ukazuje jako n\u00e1kladn\u00fd. V tomto p\u0159\u00edpad\u011b si data cacheujte v n\u011bjak\u00e9m specializovan\u00e9m \u0159e\u0161en\u00ed. <\/p>\n<h2>Serverless pro OLTP \u0159e\u0161en\u00ed<\/h2>\n<p>\nV p\u0159edchoz\u00edm p\u0159\u00edkladu byly zkoum\u00e1ny OLAP \u00fakoly (analytick\u00e9). Nyn\u00ed se pod\u00edv\u00e1me na \u00fakoly OLTP.<\/p>\n<p>P\u0159edstavme si \u0161k\u00e1lovateln\u00fd PostgreSQL nebo MySQL. Vytvo\u0159\u00edme b\u011b\u017enou spravovanou instanci PostgreSQL nebo MySQL na minim\u00e1ln\u00edch zdroj\u00edch. Kdy\u017e na instanci vzroste z\u00e1t\u011b\u017e, p\u0159ipoj\u00edme dal\u0161\u00ed repliky, na kter\u00e9 rozd\u011bl\u00edme \u010d\u00e1st \u010dtec\u00ed z\u00e1t\u011b\u017ee. Pokud nejsou \u017e\u00e1dn\u00e9 po\u017eadavky a z\u00e1t\u011b\u017e, repliky odpoj\u00edme. Prvn\u00ed instance je master a ostatn\u00ed jsou repliky.<\/p>\n<p>Tato my\u0161lenka je realizov\u00e1na v datab\u00e1zi zvan\u00e9 Aurora Serverless AWS. Princip je jednoduch\u00fd: po\u017eadavky od extern\u00edch aplikac\u00ed p\u0159ij\u00edm\u00e1 proxy fleet. Kdy\u017e zaznamen\u00e1 r\u016fst z\u00e1t\u011b\u017ee, p\u0159id\u011bl\u00ed v\u00fdpo\u010detn\u00ed zdroje z p\u0159edem zah\u0159\u00e1t\u00fdch minim\u00e1ln\u00edch instanc\u00ed - p\u0159ipojen\u00ed prob\u00edh\u00e1 maxim\u00e1ln\u011b rychle. Odpojen\u00ed instanc\u00ed prob\u00edh\u00e1 stejn\u011b.<\/p>\n<p>V r\u00e1mci Aurory existuje pojem Aurora Capacity Unit, ACU. Toto (podm\u00edn\u011bn\u011b) je instance (server). Ka\u017ed\u00fd konkr\u00e9tn\u00ed ACU m\u016f\u017ee b\u00fdt master nebo slave. Ka\u017ed\u00e1 kapacitn\u00ed jednotka m\u00e1 svou vlastn\u00ed opera\u010dn\u00ed pam\u011b\u0165, procesor a minim\u00e1ln\u00ed disk. Odpov\u00eddaj\u00edc\u00edm zp\u016fsobem je jeden master a ostatn\u00ed read-only repliky.<\/p>\n<p>Po\u010det t\u011bchto pracovn\u00edch Aurora Capacity Units je nastaviteln\u00e9 parametry. Minim\u00e1ln\u00ed po\u010det m\u016f\u017ee b\u00fdt jeden nebo nula (v takov\u00e9m p\u0159\u00edpad\u011b datab\u00e1ze nepracuje, pokud nejsou \u017e\u00e1dn\u00e9 po\u017eadavky).<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/ab034e66fbd8874f062a656afa7044c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKdy\u017e datab\u00e1ze p\u0159ijme po\u017eadavky, proxy fleet zvy\u0161uje Aurora Capacity Units, \u010d\u00edm\u017e zvy\u0161uje v\u00fdkonnostn\u00ed zdroje syst\u00e9mu. Mo\u017enost zvy\u0161ovat a sni\u017eovat zdroje umo\u017e\u0148uje syst\u00e9mu \"\u017eonglovat\" s prost\u0159edky: automaticky vyp\u00ednat jednotliv\u00e9 ACU (nahrazovat je nov\u00fdmi) a aplikovat na vypnut\u00e9 zdroje v\u0161echny aktu\u00e1ln\u00ed aktualizace.<\/p>\n<p>Datab\u00e1ze Aurora Serverless m\u016f\u017ee \u0161k\u00e1lovat \u010dtec\u00ed z\u00e1t\u011b\u017e. Ale v dokumentaci o tom nen\u00ed p\u0159\u00edmo uvedeno. M\u016f\u017ee vzniknout dojem, \u017ee mohou m\u00edt multi-master. \u017d\u00e1dn\u00e9 kouzlo tu v\u0161ak nen\u00ed. <\/p>\n<p>Tato datab\u00e1ze je ide\u00e1ln\u00ed pro minimalizaci n\u00e1klad\u016f na syst\u00e9my s nep\u0159edv\u00eddateln\u00fdm p\u0159\u00edstupem. Nap\u0159\u00edklad p\u0159i vytv\u00e1\u0159en\u00ed MVP nebo marketingov\u00fdch landing pages obvykle neo\u010dek\u00e1v\u00e1me stabiln\u00ed z\u00e1t\u011b\u017e. P\u0159i absenci p\u0159\u00edstupu tedy neplat\u00edme za instance. Kdy\u017e n\u00e1hle dojde k n\u00e1r\u016fstu z\u00e1t\u011b\u017ee, nap\u0159\u00edklad po konferenci nebo reklamn\u00ed kampani, davy lid\u00ed p\u0159istupuj\u00ed na web a zat\u00ed\u017een\u00ed rychle vzr\u016fst\u00e1, Aurora Serverless automaticky akceptuje tuto z\u00e1t\u011b\u017e a rychle zapojuje chyb\u011bj\u00edc\u00ed prost\u0159edky (ACU). Po konferenci se z\u00e1jem o prototyp vytrat\u00ed, servery (ACU) zhasnou a n\u00e1klady klesaj\u00ed na nulu \u2014 pohodln\u00e9.<\/p>\n<p>Toto \u0159e\u0161en\u00ed nen\u00ed vhodn\u00e9 pro stabiln\u00ed vysokou z\u00e1t\u011b\u017e, proto\u017ee neum\u00ed \u0161k\u00e1lovat z\u00e1pisovou z\u00e1t\u011b\u017e. V\u0161echna tato p\u0159ipojen\u00ed a odpojen\u00ed prost\u0159edk\u016f se odehr\u00e1vaj\u00ed v okam\u017eiku, kter\u00e9mu se \u0159\u00edk\u00e1 \u201escale point\u201c \u2014 chv\u00edle, kdy datab\u00e1zi nedr\u017e\u00ed transakce, ani do\u010dasn\u00e9 tabulky. Nap\u0159\u00edklad b\u011bhem t\u00fddne se \u201escale point\u201c nemus\u00ed v\u016fbec objevit, a datab\u00e1ze b\u011b\u017e\u00ed na stejn\u00fdch prost\u0159edc\u00edch a nem\u016f\u017ee se ani roz\u0161\u00ed\u0159it, ani zmen\u0161it. <\/p>\n<p>\u017d\u00e1dn\u00e1 kouzla \u2014 to je oby\u010dejn\u00fd PostgreSQL. Ale proces p\u0159id\u00e1v\u00e1n\u00ed stroj\u016f a odpojov\u00e1n\u00ed je \u010d\u00e1ste\u010dn\u011b automatizov\u00e1n.<\/p>\n<h2>Serverless by design<\/h2>\n<p>\nAurora Serverless je star\u00e1 datab\u00e1ze p\u0159epracovan\u00e1 pro cloud, aby vyu\u017eila specifick\u00fdch v\u00fdhod Serverless. A nyn\u00ed v\u00e1m pov\u00edm o datab\u00e1zi, kter\u00e1 byla od za\u010d\u00e1tku naps\u00e1na pro cloud a p\u0159\u00edstup serverless \u2014 Serverless-by-design. Byla vyv\u00edjena bez p\u0159edpokladu, \u017ee funguje na fyzick\u00fdch serverech.<\/p>\n<p>Tato datab\u00e1ze se naz\u00fdv\u00e1 Snowflake. M\u00e1 t\u0159i kl\u00ed\u010dov\u00e9 bloky.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/15f9f07ed0281686e509ca6ced387db3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00ed \u2014 to je blok metadat. Je to rychl\u00e1 in-memory slu\u017eba, kter\u00e1 \u0159e\u0161\u00ed ot\u00e1zky bezpe\u010dnosti, metadat, transakc\u00ed a optimalizace dotaz\u016f (na ilustraci vlevo).<\/p>\n<p>Druh\u00fd blok \u2014 to je mnohost virtu\u00e1ln\u00edch v\u00fdpo\u010detn\u00edch cluster\u016f pro v\u00fdpo\u010dty (na ilustraci \u2014 soubor modr\u00fdch kruh\u016f).<\/p>\n<p>T\u0159et\u00ed blok \u2014 syst\u00e9m ukl\u00e1d\u00e1n\u00ed dat zalo\u017een\u00fd na S3. S3 je bezrozm\u011brn\u00e9 objektov\u00e9 \u00falo\u017ei\u0161t\u011b v AWS, n\u011bco jako bezrozm\u011brn\u00fd Dropbox pro firmy.<\/p>\n<p>Pod\u00edvejme se, jak Snowflake funguje p\u0159i p\u0159edpokladu studen\u00e9ho startu. To znamen\u00e1, \u017ee datab\u00e1ze existuje, data jsou do n\u00ed nahran\u00e1, ale nen\u00ed \u017e\u00e1dn\u00fd b\u011b\u017e\u00edc\u00ed dotaz. Pokud tedy k datab\u00e1zi nejsou \u017e\u00e1dn\u00e9 dotazy, m\u00e1me spu\u0161t\u011bn\u00fd rychl\u00fd in-memory Metadata slu\u017ebu (prvn\u00ed blok). A m\u00e1me \u00falo\u017ei\u0161t\u011b S3, kde jsou ulo\u017eena data tabulek, rozd\u011blena na takzvan\u00e9 mikropartice. Pro zjednodu\u0161en\u00ed: pokud v tabulce le\u017e\u00ed transakce, mikropartice p\u0159edstavuj\u00ed dny transakc\u00ed. Ka\u017ed\u00fd den je samostatn\u00e1 mikropartice, samostatn\u00fd soubor. A kdy\u017e datab\u00e1ze funguje v tomto re\u017eimu, plat\u00edte pouze za m\u00edsto, kter\u00e9 data zab\u00edraj\u00ed. Cen\u00edk za m\u00edsto je velmi n\u00edzk\u00fd (zejm\u00e9na s ohledem na zna\u010dn\u00e9 kompresi). Metadata slu\u017eba tak\u00e9 pracuje neust\u00e1le, ale pro optimalizaci dotaz\u016f nen\u00ed pot\u0159eba mnoho zdroj\u016f, a tento servis lze pova\u017eovat za podm\u00edn\u011bn\u011b bezplatn\u00fd. <\/p>\n<p>Nyn\u00ed si p\u0159edstavme, \u017ee k na\u0161\u00ed datab\u00e1zi p\u0159ich\u00e1z\u00ed u\u017eivatel a pos\u00edl\u00e1 SQL dotaz. SQL dotaz okam\u017eit\u011b sm\u011b\u0159uje k zpracov\u00e1n\u00ed do Metadata slu\u017eby. Tento servis analyzuje dotaz, dostupn\u00e1 data, pr\u00e1va u\u017eivatele a pokud je v\u0161e v po\u0159\u00e1dku, vytvo\u0159\u00ed pl\u00e1n zpracov\u00e1n\u00ed dotazu.<\/p>\n<p>D\u00e1le slu\u017eba iniciuje spu\u0161t\u011bn\u00ed v\u00fdpo\u010detn\u00edho clusteru. V\u00fdpo\u010detn\u00ed cluster je soubor server\u016f, kter\u00e9 prov\u00e1d\u011bj\u00ed v\u00fdpo\u010dty. To znamen\u00e1, \u017ee to m\u016f\u017ee b\u00fdt cluster, kter\u00fd obsahuje 1 server, 2 servery, 4, 8, 16, 32 \u2014 kolik chcete. Ode\u0161lete dotaz a pro n\u011bj se okam\u017eit\u011b za\u010dne spou\u0161t\u011bt tento cluster. Opravu to trv\u00e1 sekundy.<\/p>\n<p><img decoding=\"async\" alt=\"Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d\" src=\"\/wp-content\/uploads\/2020\/08\/51b11aee0b0868681c4978f5becd1f1d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo spu\u0161t\u011bn\u00ed clusteru se do clusteru z S3 za\u010dnou kop\u00edrovat mikro-partice pot\u0159ebn\u00e9 pro zpracov\u00e1n\u00ed va\u0161\u00ed \u017e\u00e1dosti. P\u0159edstavme si, \u017ee pro vykon\u00e1n\u00ed SQL dotazu jsou pot\u0159eba dv\u011b partie z jedn\u00e9 tabulky a jedna z druh\u00e9. V takov\u00e9m p\u0159\u00edpad\u011b budou do clusteru zkop\u00edrov\u00e1ny pouze t\u0159i pot\u0159ebn\u00e9 partie, nikoli v\u0161echny tabulky jako celek. Pr\u00e1v\u011b proto, \u017ee v\u0161echno je um\u00edst\u011bno v jednom datov\u00e9m centru a spojeno velmi rychl\u00fdmi kan\u00e1ly, prob\u00edh\u00e1 cel\u00fd proces p\u0159enosu velmi rychle: za sekundy, velmi z\u0159\u00eddka za minuty, pokud se nejedn\u00e1 o n\u011bjak\u00e9 slo\u017eit\u00e9 dotazy. Mikro-partice jsou tedy kop\u00edrov\u00e1ny do v\u00fdpo\u010detn\u00edho clusteru a po dokon\u010den\u00ed se na tomto v\u00fdpo\u010detn\u00edm clusteru provede SQL dotaz. V\u00fdsledkem tohoto dotazu m\u016f\u017ee b\u00fdt jeden \u0159\u00e1dek, n\u011bkolik \u0159\u00e1dk\u016f nebo tabulka \u2014 ty se pos\u00edlaj\u00ed ven u\u017eivateli, aby je mohl exportovat, zobrazit ve sv\u00e9m BI n\u00e1stroji nebo jinak vyu\u017e\u00edt.<\/p>\n<p>Ka\u017ed\u00fd SQL dotaz m\u016f\u017ee nejen po\u010d\u00edtat agreg\u00e1ty z d\u0159\u00edve na\u010dten\u00fdch dat, ale tak\u00e9 na\u010d\u00edtat\/formovat nov\u00e1 data v datab\u00e1zi. To znamen\u00e1, \u017ee m\u016f\u017ee j\u00edt o dotaz, kter\u00fd nap\u0159\u00edklad prov\u00e1d\u00ed vlo\u017een\u00ed nov\u00fdch z\u00e1znam\u016f do jin\u00e9 tabulky, co\u017e vede k vytvo\u0159en\u00ed nov\u00e9 partie na v\u00fdpo\u010detn\u00edm clusteru, kter\u00e1 je pak automaticky ulo\u017eena do jednotn\u00e9ho S3 \u00falo\u017ei\u0161t\u011b.<\/p>\n<p>Popsan\u00fd sc\u00e9n\u00e1\u0159, od p\u0159\u00edchodu u\u017eivatele po spu\u0161t\u011bn\u00ed clusteru, na\u010d\u00edt\u00e1n\u00ed dat, prov\u00e1d\u011bn\u00ed dotaz\u016f, z\u00edsk\u00e1v\u00e1n\u00ed v\u00fdsledk\u016f, se \u00fa\u010dtuje podle sazby za minuty pou\u017e\u00edv\u00e1n\u00ed spu\u0161t\u011bn\u00e9ho virtu\u00e1ln\u00edho v\u00fdpo\u010detn\u00edho clusteru, virtu\u00e1ln\u00edho warehouse. Sazba se li\u0161\u00ed v z\u00e1vislosti na z\u00f3n\u011b AWS a velikosti clusteru, ale pr\u016fm\u011brn\u011b to jsou n\u011bkolik dolar\u016f za hodinu. Cluster ze \u010dty\u0159 stroj\u016f je dvakr\u00e1t dra\u017e\u0161\u00ed ne\u017e z dvou stroj\u016f, z osmi stroj\u016f je\u0161t\u011b dvakr\u00e1t dra\u017e\u0161\u00ed. Jsou k dispozici varianty ze 16, 32 stroj\u016f, v z\u00e1vislosti na slo\u017eitosti dotaz\u016f. Ale plat\u00edte pouze za ty minuty, kdy cluster skute\u010dn\u011b pracuje, proto\u017ee kdy\u017e nejsou \u017e\u00e1dn\u00e9 dotazy, jako byste zvedli ruce, a po 5-10 minut\u00e1ch \u010dek\u00e1n\u00ed (nastaviteln\u00fd parametr) se s\u00e1m vypne, uvoln\u00ed zdroje a stane se bezplatn\u00fdm.<\/p>\n<p>Sc\u00e9n\u00e1\u0159, kdy ode\u0161lete dotaz, cluster se aktivuje, \u0159ekn\u011bme, za minutu, dal\u0161\u00ed minutu po\u010d\u00edt\u00e1, pak p\u011bt minut na vypnut\u00ed, a nakonec plat\u00edte za sedm minut provozu tohoto clusteru, a ne za m\u011bs\u00edce a roky.<\/p>\n<p>Prvn\u00ed sc\u00e9n\u00e1\u0159 popisoval pou\u017eit\u00ed Snowflake v jednom u\u017eivatelsk\u00e9m re\u017eimu. Nyn\u00ed si p\u0159edstavme, \u017ee u\u017eivatel\u016f je mnoho, co\u017e se ji\u017e bl\u00ed\u017e\u00ed re\u00e1ln\u00e9mu sc\u00e9n\u00e1\u0159i.<\/p>\n<p>P\u0159edpokl\u00e1dejme, \u017ee m\u00e1me mnoho analytik\u016f a Tableau report\u016f, kter\u00e9 neust\u00e1le bombar\u010fuj\u00ed na\u0161i datab\u00e1zi velk\u00fdm mno\u017estv\u00edm jednoduch\u00fdch analytick\u00fdch SQL dotaz\u016f.<\/p>\n<p>Krom\u011b toho p\u0159edpokl\u00e1dejme, \u017ee m\u00e1me vynal\u00e9zav\u00e9 datov\u00e9 v\u011bdce, kte\u0159\u00ed se pokou\u0161ej\u00ed d\u011blat s daty \u00fa\u017easn\u00e9 v\u011bci, operovat s des\u00edtkami terabajt\u016f, analyzovat miliardy a biliony \u0159\u00e1dk\u016f dat. <\/p>\n<p>Pro v\u00fd\u0161e popsan\u00e9 dva typy z\u00e1t\u011b\u017ee Snowflake umo\u017e\u0148uje spou\u0161t\u011bt n\u011bkolik nez\u00e1visl\u00fdch v\u00fdpo\u010detn\u00edch cluster\u016f r\u016fzn\u00e9 v\u00fdkonnosti. Tyto v\u00fdpo\u010detn\u00ed clustery pracuj\u00ed nez\u00e1visle, ale s sd\u00edlen\u00fdmi konzistentn\u00edmi daty.<\/p>\n<p>Pro velk\u00e9 mno\u017estv\u00ed lehk\u00fdch dotaz\u016f lze zprovoznit 2-3 mal\u00e9 clustery, velikosti, \u0159ekn\u011bme, 2 stroje ka\u017ed\u00fd. Toto chov\u00e1n\u00ed lze realizovat tak\u00e9 pomoc\u00ed automatick\u00fdch nastaven\u00ed. To znamen\u00e1, \u017ee \u0159\u00edk\u00e1te: \u201eSnowflake, spus\u0165 mal\u00fd cluster. Pokud zat\u00ed\u017een\u00ed vzroste nad ur\u010dit\u00e9 parametry, spus\u0165 obdobn\u00fd druh\u00fd, t\u0159et\u00ed. Kdy\u017e zat\u00ed\u017een\u00ed za\u010dne klesat, vypni nadbyte\u010dn\u00e9.\u201c Aby nez\u00e1visle na po\u010dtu analytik\u016f, kte\u0159\u00ed p\u0159ich\u00e1zej\u00ed a za\u010d\u00ednaj\u00ed sledovat reporty, bylo k dispozici dostatek zdroj\u016f.<\/p>\n<p>Pokud ale analytici sp\u00ed a nikdo nesleduje reporty, clustery mohou zcela vypnout a vy p\u0159est\u00e1v\u00e1te platit za n\u011b.<\/p>\n<p>Pro t\u011b\u017ek\u00e9 dotazy (od datov\u00fdch v\u011bdc\u016f) m\u016f\u017eete spustit jeden velmi velk\u00fd cluster na zhruba 32 stroj\u00edch. Tento cluster bude tak\u00e9 placen pouze za minuty a hodiny, kdy tam b\u011b\u017e\u00ed v\u00e1\u0161 obrovsk\u00fd dotaz.<\/p>\n<p>Popisovan\u00e1 mo\u017enost umo\u017e\u0148uje rozd\u011blovat podle cluster\u016f nejen 2, ale i v\u00edce typ\u016f z\u00e1t\u011b\u017ee (ETL, monitorov\u00e1n\u00ed, materializace report\u016f,\u2026 ).<\/p>\n<p>Shrnut\u00ed Snowflake. Datab\u00e1ze kombinuje kr\u00e1snou ideu a funk\u010dn\u00ed implementaci. V ManyChat pou\u017e\u00edv\u00e1me Snowflake pro anal\u00fdzu v\u0161ech dostupn\u00fdch dat. Nem\u00e1me t\u0159i clustery, jak v p\u0159\u00edkladu, ale od 5 do 9 r\u016fzn\u00fdch velikost\u00ed. M\u00e1me takzvan\u00e9 16-strojov\u00e9, 2-strojov\u00e9 a dokonce i super-mal\u00e9 1-strojov\u00e9 pro n\u011bkter\u00e9 \u00fakoly. Ty \u00fasp\u011b\u0161n\u011b rozd\u011bluj\u00ed z\u00e1t\u011b\u017e a umo\u017e\u0148uj\u00ed n\u00e1m v\u00fdrazn\u011b \u0161et\u0159it.<\/p>\n<p>Datab\u00e1ze \u00fasp\u011b\u0161n\u011b \u0161k\u00e1luje \u010dtec\u00ed a zapisovac\u00ed z\u00e1t\u011b\u017e. To je obrovsk\u00fd rozd\u00edl a z\u00e1sadn\u00ed pokrok ve srovn\u00e1n\u00ed se \u201eAurorou\u201c, kter\u00e1 zvl\u00e1dala pouze \u010dtec\u00ed z\u00e1t\u011b\u017e. Snowflake umo\u017e\u0148uje \u0161k\u00e1lovat zapisovac\u00ed z\u00e1t\u011b\u017e pomoc\u00ed t\u011bchto v\u00fdpo\u010detn\u00edch cluster\u016f. Jak jsem ji\u017e zm\u00ednil, v ManyChat pou\u017e\u00edv\u00e1me n\u011bkolik cluster\u016f, mal\u00e9 a super-mal\u00e9 clustery se v\u011bt\u0161inou pou\u017e\u00edvaj\u00ed pro ETL, pro nahr\u00e1v\u00e1n\u00ed dat. Analytici pracuj\u00ed na st\u0159edn\u00edch clusterech, kter\u00e9 jsou zcela nezat\u00ed\u017eeny ETL z\u00e1t\u011b\u017e\u00ed, a proto funguj\u00ed velmi rychle. <\/p>\n<p>Odpov\u00eddaj\u00edc\u00edm zp\u016fsobem je datab\u00e1ze dob\u0159e vhodn\u00e1 pro OLAP \u00fakoly. Bohu\u017eel v\u0161ak pro OLTP z\u00e1t\u011b\u017ee je\u0161t\u011b nen\u00ed aplikovateln\u00e1. Zaprv\u00e9, tato datab\u00e1ze je sloupcov\u00e1, se v\u0161emi d\u016fsledky. Zadruh\u00e9, samotn\u00fd p\u0159\u00edstup, kdy p\u0159i ka\u017ed\u00e9m dotazu pot\u0159\u00edsn\u00edte v\u00fdpo\u010detn\u00ed cluster daty, je bohu\u017eel pro OLTP z\u00e1t\u011b\u017ee st\u00e1le nedostate\u010dn\u011b rychl\u00fd. Sekundy \u010dek\u00e1n\u00ed pro OLAP \u00fakoly jsou v po\u0159\u00e1dku, ale pro OLTP \u00fakoly jsou nep\u0159ijateln\u00e9, rad\u011bji by to bylo 100 ms, a je\u0161t\u011b l\u00e9pe \u2013 10 ms.<\/p>\n<h2>V\u00fdsledek<\/h2>\n<p>\nServerless datab\u00e1ze je mo\u017en\u00e1 d\u00edky rozd\u011blen\u00ed datab\u00e1ze na Stateless a Stateful \u010d\u00e1sti. Ur\u010dit\u011b jste si v\u0161imli, \u017ee ve v\u0161ech uveden\u00fdch p\u0159\u00edkladech, Stateful \u010d\u00e1st \u2013 je, \u0159ekn\u011bme, ulo\u017een\u00ed mikropartic na S3, a Stateless \u2013 je optimaliz\u00e1tor, pr\u00e1ce s metadaty, zpracov\u00e1n\u00ed bezpe\u010dnostn\u00edch ot\u00e1zek, kter\u00e9 mohou b\u00fdt spu\u0161t\u011bny jako nez\u00e1visl\u00e9 lehk\u00e9 Stateless slu\u017eby.<\/p>\n<p>Prov\u00e1d\u011bn\u00ed SQL dotaz\u016f lze tak\u00e9 vn\u00edmat jako slu\u017eby s lehk\u00fdm stavem, kter\u00e9 se mohou objevit v bezserverov\u00e9m re\u017eimu, jako v\u00fdpo\u010detn\u00ed clustry Snowflake, st\u00e1hnout pouze pot\u0159ebn\u00e1 data, prov\u00e9st dotaz a \"zhasnout\".<\/p>\n<p>Serverless datab\u00e1ze na \u00farovni produkce jsou ji\u017e k dispozici a funguj\u00ed. Tyto serverless datab\u00e1ze jsou u\u017e p\u0159ipraveny zvl\u00e1dat OLAP \u00fakoly. Bohu\u017eel, pro OLTP \u00fakoly se pou\u017e\u00edvaj\u00ed... s n\u011bkter\u00fdmi nuancemi, proto\u017ee existuj\u00ed omezen\u00ed. Na jedn\u00e9 stran\u011b je to nev\u00fdhoda. Na druh\u00e9 stran\u011b je to p\u0159\u00edle\u017eitost. Mo\u017en\u00e1 n\u011bkdo z \u010dten\u00e1\u0159\u016f najde zp\u016fsob, jak ud\u011blat OLTP datab\u00e1zi \u00fapln\u011b serverless, bez omezen\u00ed Aurora.<\/p>\n<p>Douf\u00e1m, \u017ee v\u00e1s to zaujalo. Budoucnost je serverless \ud83d\ude42<br \/>\n<br \/>Zdroj: <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.3 - 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\/cs\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Na cest\u011b k bezserverov\u00fdm datab\u00e1z\u00edm \u2014 jak a pro\u010d | ProHoster","description":"Ahoj v\u0161ichni! Jmenuji se Nikolaj Golov.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/91635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=91635"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/91635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/91636"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=91635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=91635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=91635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}