{"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\/et\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","title":{"rendered":"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere k\u00f5igile! Minu nimi on Nikolai Golov. Varem t\u00f6\u00f6tasin Avitos ja kuus aastat juhtisin Data Platformi, teisis\u00f5nu, tegelesin k\u00f5igi andmebaasidega: anal\u00fc\u00fctilised (Vertica, ClickHouse), voogandmed ja OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). Selle aja jooksul olen s\u00fcvenenud paljude andmebaaside, ehkki v\u00e4ga erinevate ja ebatavaliste, ning nende mittestandardsed kasutusjuhtumid.<\/p>\n<p>Praegu t\u00f6\u00f6tan ManyChatis. P\u00f5him\u00f5tteliselt on see idufirma - uus, ambitsioonikas ja kiiresti kasvav. Ja kui ma just ettev\u00f5ttesse tulin, tekkis klassikaline k\u00fcsimus: 'Mida peaks noor idufirma andmebaaside turult praegu valima?'. <\/p>\n<p>Selles artiklis, mis p\u00f5hineb minu ettekandel <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2020\/\">online-festivalil RIT++2020<\/a><\/noindex>, vastan sellele k\u00fcsimusele. Ettekanne on saadaval videoversioonina <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/H23f_z13ro4\">YouTube<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" 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>Tuntud andmebaasid 2020. aastast<\/h2>\n<p>\nOn 2020. aasta, vaatan ringi ja n\u00e4en kolme t\u00fc\u00fcpi andmebaase. <\/p>\n<p>Esimene t\u00fc\u00fcp - <b>klassikalised OLTP andmebaasid<\/b>: PostgreSQL, SQL Server, Oracle, MySQL. Need on kirjutatud ammu, kuid on endiselt asjakohased, kuna on arendajate kogukonnale h\u00e4sti tuttavad.<\/p>\n<p>Teine t\u00fc\u00fcp - <b>nullide ajastu andmebaasid.<\/b>Need p\u00fc\u00fcdsid eemalduda klassikalistest mustritest, loobudes SQL-st, traditsioonilistest struktuuridest ja ACID-ist, lisades sisseehitatud sharding'i ja muid atraktiivseid funktsioone. N\u00e4iteks on need Cassandra, MongoDB, Redis v\u00f5i Tarantool. K\u00f5ik need lahendused soovisid turule pakkuda midagi p\u00f5him\u00f5tteliselt uut ja leidsid oma ni\u0161i, kuna osutusid teatud \u00fclesannete t\u00e4itmisel \u00e4\u00e4rmiselt mugavaks. Need andmebaasid nimetan NOSQL-i teenusena.<\/p>\n<p>Nullide ajastu on m\u00f6\u00f6das, NOSQL andmebaasidega on harjutud ning maailm, minu arvates, on teinud j\u00e4rgmise sammu - <b>haldamise alla v\u00f5etud andmebaaside suunas.<\/b>Nendel andmebaasidel on sama tuum nagu klassikalistel OLTP andmebaasidel v\u00f5i uutel NoSQL-i andmebaasidel. Kuid neil puudub vajadus DBA ja DevOps-i j\u00e4rele ning need t\u00f6\u00f6tavad hallatud riistvaral pilves. Arendajale on see 'lihtsalt andmebaas', mis kuskil t\u00f6\u00f6tab, ja see, kuidas see serverisse paigaldatud on, kes serverit seadistab ja kes seda uuendab, kedagi ei huvit.<\/p>\n<p>Selliste andmebaaside n\u00e4ited on:<\/p>\n<ul>\n<li>AWS RDS - hallatud kiht PostgreSQL\/MySQL \u00fcle.<\/li>\n<li>DynamoDB - AWS analoog dokumentide p\u00f5hisele andmebaasile, sarnaneb Redis ja MongoDB-iga.<\/li>\n<li>Amazon Redshift - hallatud anal\u00fc\u00fctiline andmebaas.<\/li>\n<\/ul>\n<p>\nP\u00f5hikoht on, et need on vanad andmebaasid, kuid hallatav keskkond t\u00f5stab need esile, ilma seadme haldamise vajaduseta. <\/p>\n<p><i>M\u00e4rkus. N\u00e4ited on toodud AWS keskkonnas, kuid nende analoogid on saadaval ka Microsoft Azure, Google Cloudi v\u00f5i Yandex.Cloudis.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/06e50904f795b3b5dc62ca45622b2dd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMis on uus? 2020. aastal ei ole midagi uut.<\/p>\n<h2>Serverless kontseptsioon<\/h2>\n<p>\nTurul 2020. aastal turule ilmunud uus asi on serveritundlikud v\u00f5i serverituks muudetud lahendused.<\/p>\n<p>P\u00fc\u00fcan selgitada, mida see t\u00e4hendab, tavalise teenuse v\u00f5i tagaosa rakenduse n\u00e4itel.<br \/>\nTavalise tagaosa rakenduse k\u00e4itamiseks ostame v\u00f5i rendime serveri, kopeerime sellele koodi, avaldame v\u00e4lise l\u00f5pp-punkti ja maksame regulaarselt rendi, elektri ja andmekeskuse teenuste eest. See on standardne skeem.<\/p>\n<p>Kas on kuidagi teisiti? Serveritundlike teenustega on see v\u00f5imalik.<\/p>\n<p>Mis on selle l\u00e4henemise fookus: serverit ei ole, isegi mitte virtuaalset instantsi pilves. Teenuse k\u00e4itamiseks kopeerime koodi (funktsioonid) hoidlasse ja avaldame v\u00e4lise l\u00f5pp-punkti. Edasi maksame lihtsalt iga selle funktsiooni kutsumise eest, ignoreerides t\u00e4ielikult riistvara, kus see teostatakse.<\/p>\n<p>P\u00fc\u00fcan illustreerida seda l\u00e4henemist joonistega.<br \/>\n<img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/705cf89c51b8166da772b1d877262b44.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Klassikaline rakendamine<\/b>. Meil on teenus teatud koormusega. K\u00e4ivitame kaks instantsi: f\u00fc\u00fcsilisi servereid v\u00f5i AWS-i instantsi. Nendele instantsidele suunatakse v\u00e4lised p\u00e4ringud, mida seal t\u00f6\u00f6deldakse. <\/p>\n<p>Nagu pildilt n\u00e4ha, on serverid erinevalt koormatud. \u00dcks on 100% koormatud, seal on kaks p\u00e4ringut, ja teine ainult 50% \u2014 on osaliselt vabade. Kui tuleb mitte kolm p\u00e4ringut, vaid 30, siis kogu s\u00fcsteem ei suuda koormust taluda ja hakkab t\u00f5rkeid tekitama.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/005b1f91ced2f2b29363cf975ed085e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Serveritundlik rakendus<\/b>. Serveritundlikus keskkonnas sellisel teenusel ei ole instantsseid ja servereid. On mingisugune kogum kuumutatud ressursse \u2014 v\u00e4iksed ettevalmistatud Docker-konteinerid koos funktsiooni koodi k\u00e4itamisega. S\u00fcsteem saab v\u00e4liseid p\u00e4ringuid ja iga\u00fche jaoks t\u00f5stab serveritundlik raamistik v\u00e4ikese konteineri koodiga: t\u00f6\u00f6tleb just selle p\u00e4ringu ja tapab konteineri.<\/p>\n<p>\u00dcks p\u00e4ring \u2014 \u00fcks t\u00f5stetud konteiner, 1000 p\u00e4ringut \u2014 1000 konteinerit. Ja k\u00e4itamine raua serverites on juba pilveteenuse pakkuja t\u00f6\u00f6. See on t\u00e4ielikult varjatud serveritundliku raamistiku taha. Selles kontseptsioonis maksame iga kutsumise eest. N\u00e4iteks, kui \u00fcks kutsumine tuleb p\u00e4evas \u2014 maksame \u00fche kutsumise eest, tuli miljon minutis \u2014 maksime miljoni eest. V\u00f5i sekundis, seda juhtub samuti.<\/p>\n<p>Serverless funktsiooni publikatsiooni kontseptsioon sobib stateless teenusele. Kui aga vajate (state) statefull teenust, lisame teenusele andmebaasi. Sellisel juhul, kui j\u00f5uame state'i t\u00f6\u00f6tlemiseni, kirjutab ja loeb iga statefull funktsioon lihtsalt andmebaasist. Pealegi mistahes kolmest t\u00fc\u00fcbist andmebaasist, nagu artikli alguses kirjeldatud.<\/p>\n<p>Mis on k\u00f5igi nende andmebaaside peamine piirang? See on pidevalt kasutatava pilve- v\u00f5i riistvara serveri (v\u00f5i mitme serveri) kulud. Pole t\u00e4htis, kas kasutame klassikalist andmebaasi v\u00f5i haldusandmebaasi, kas on DevOps ja administraator v\u00f5i mitte, maksame nii v\u00f5i teisiti 24\/7 riistvara, elektri ja andmekeskuse rendi eest. Kui meil on klassikaline andmebaas, maksame masteri ja slave'i eest. Kui k\u00f5rge koormusega sharded andmebaas \u2014 maksame 10, 20 v\u00f5i 30 serveri eest, ja maksame pidevalt.<\/p>\n<p>Kulusstruktuuri pidev serverite reserv on varem olnud v\u00e4ltimatu kurbus. Tavalistel andmebaasidel on ka teisi raskusi, nagu \u00fchenduste arvule kehtestatud piirangud, skaleeritavuse kahjustamine, geograafiline konsensus \u2014 neid saab m\u00f5nes andmebaasis m\u00f5nev\u00f5rra lahendada, kuid mitte k\u00f5ik korraga ega ideaalselt.<\/p>\n<h2>Serverless andmebaas \u2014 teooria<\/h2>\n<p>\nK\u00fcsimus 2020. aastast: kas andmebaasi saab ka serverless teha? K\u00f5ik on kuulnud serverless tagaplaanist... mis siis, kui proovime ka andmebaasi serverless teha?<\/p>\n<p>See k\u00f5lab kummaliselt, sest andmebaas on ju statefull teenus, mis ei sobi v\u00e4ga h\u00e4sti serverless infrastruktuuri. Samas on jaanus \u00e4\u00e4rmiselt suur: gigabaitide, terabaitide ja anal\u00fc\u00fctilistes andmebaasides isegi petabaitideni. Seda ei ole nii lihtsalt kergete Docker-konteinerite sees \u00fcles t\u00f5sta.<\/p>\n<p>Teisest k\u00fcljest, praktiliselt k\u00f5ik t\u00e4nap\u00e4evased andmebaasid sisaldavad tohutut hulka loogikat ja komponente: tehingud, terviklikkuse tagamine, protseduurid, seosed ja palju loogikat. Suuremas osas andmebaasi loogikast on vajalik ainult v\u00e4hene state. Gigabaitide ja terabaitide andmeid kasutatakse otse ainult v\u00e4ikese osa andmebaasi loogikast, mis on seotud vahetu p\u00e4ringute t\u00e4itmisega.<\/p>\n<p>Seega idee: kui v\u00e4ike osa loogikast v\u00f5imaldab stateless t\u00e4itmist, miks mitte jagada andmebaasi stateful ja stateless osadeks.<\/p>\n<h2>Serverless OLAP lahenduste jaoks<\/h2>\n<p>\nVaatame, kuidas v\u00f5ib andmebaasi jagamine stateful ja stateless osadeks v\u00e4lja n\u00e4ha praktiliste n\u00e4idete p\u00f5hjal.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/51793a5649e68dafc9e7ce395da9e065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>N\u00e4iteks, meil on anal\u00fc\u00fctiline andmebaas<\/b>: v\u00e4listest andmetest (punane silinder vasakul), ETL-protsess, mis laadib andmed andmebaasi, ja anal\u00fc\u00fctik, kes saadab andmebaasi SQL-p\u00e4ringud. See on klassikaline andmete ladustamise t\u00f6\u00f6 skeem. <\/p>\n<p>Selles skeemis t\u00e4idetakse ETL tinglikult \u00fcks kord. Edasi tuleb pidevalt maksta serverite eest, kus asub ETL-laaditud andmebaas, et oleks, kuhu p\u00e4ringud suunata. <\/p>\n<p>Vaatame alternatiivset l\u00e4henemist, mis on rakendatud AWS Athena Serverless andmebaasis. Siin pole pidevalt eraldatud riistvara, kus laaditud andmed asuvad. Selle asemel:<\/p>\n<ul>\n<li>Kasutaja saadab SQL-p\u00e4ringu Athendale. Athena optimeerija anal\u00fc\u00fcsib SQL-p\u00e4ringut ja otsib andmehoidlast (Metadata) spetsiifilisi andmeid, mis on vajalikud p\u00e4ringu t\u00e4itmiseks.<\/li>\n<li>Optimeerija, tuginedes kogutud andmetele, t\u00f5mbab vajalikud andmed v\u00e4listest allikatest ajutisse andmehoidlasse (ajutisse andmebaasi).<\/li>\n<li>Ajutises andmehoidlas t\u00e4idetakse kasutaja SQL-p\u00e4ring, tulemused tagastatakse kasutajale. <\/li>\n<li>Ajutine andmehoidla puhastatakse, ressursid vabastatakse.<\/li>\n<\/ul>\n<p>Selles arhitektuuris maksame ainult p\u00e4ringu t\u00e4itmise protsessi eest. Pole p\u00e4ringuid \u2014 pole kulusid.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/0e21282b66e3120524c2324811cb04a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee on toimiv l\u00e4henemine, ja seda rakendatakse mitte ainult Athena Serverless'is, vaid ka Redshift Spectrumis (AWS-is).<\/p>\n<p>Athena n\u00e4itel on n\u00e4ha, et Serverless andmebaas toimib tegelike p\u00e4ringute p\u00f5hjal, millega k\u00e4sitletakse k\u00fcmneid ja sadu terabaiti andmeid. Saja terabaiti jaoks on vajalik sadu servereid, kuid me ei pea nende eest maksma \u2014 maksame p\u00e4ringute eest. Iga p\u00e4ringu kiirus on (v\u00e4ga) madal v\u00f5rreldes spetsialiseeritud anal\u00fc\u00fctiliste andmebaasidega nagu Vertica, kuid me ei maksa seisakute eest.<\/p>\n<p>Selline andmebaas on rakendatav harvade anal\u00fc\u00fctiliste ad-hoc p\u00e4ringute jaoks. N\u00e4iteks siis, kui otsustame spontaanselt kontrollida h\u00fcpoteesi hiiglaslikus andmemahtudes. Neid juhtumeid jaoks sobib Athena ideaalselt. Regulaarsete p\u00e4ringute puhul osutub selline s\u00fcsteem kalliks. Sel juhul salvestage andmed m\u00f5nes spetsialiseeritud lahenduses. <\/p>\n<h2>Serverless OLTP lahenduste jaoks<\/h2>\n<p>\nEelnevas n\u00e4ites vaadeldi OLAP-\u00fclesandeid (anal\u00fc\u00fctilised). N\u00fc\u00fcd vaatame OLTP-\u00fclesandeid.<\/p>\n<p>Kujundame skaleeritav PostgreSQL v\u00f5i MySQL. Loome tavalise hallatava instantsi PostgreSQL v\u00f5i MySQL minimaalsete ressurssidega. Kui instantsile tuleb rohkem koormust, \u00fchendame t\u00e4iendavaid koopiaid, kuhu jaotame osa lugemisekoormusest. Kui p\u00e4ringut ja koormust pole \u2014 l\u00fclitame koopiad v\u00e4lja. Esimene instants on peamine ja \u00fclej\u00e4\u00e4nud on koopiad.<\/p>\n<p>See idee on ellu viidud andmebaasis nimega Aurora Serverless AWS. Princips on lihtne: v\u00e4liste rakenduste p\u00e4ringud v\u00f5tab vastu proxy fleet. N\u00e4ha koormuse kasvu, eraldatakse arvutusressursid eelnevalt soojendatud minimaalsetest instantsidest \u2014 \u00fchendamine toimub maksimaalselt kiiresti. Instantside v\u00e4ljal\u00fclitamine toimub samuti.<\/p>\n<p>Aurora-s on m\u00f5isted Aurora Capacity Unit, ACU. See on (tinglikult) instants (server). Iga konkreetne ACU v\u00f5ib olla peamine v\u00f5i koopia. Igal Capacity Unit'il on oma operatiivm\u00e4lu, protsessor ja minimaalne ketas. Vastavalt on \u00fcks peamine ja \u00fclej\u00e4\u00e4nud ainult lugemiseks koopiad.<\/p>\n<p>Nende t\u00f6\u00f6tavate Aurora Capacity Unit'ide arv on seadistatav parameeter. Minimaalne arv v\u00f5ib olla \u00fcks v\u00f5i null (sel juhul andmebaas ei t\u00f6\u00f6ta, kui p\u00e4ringuid ei ole).<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/ab034e66fbd8874f062a656afa7044c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKui andmebaas saab p\u00e4ringute, t\u00f5stab proxy fleet Aurora Capacity Units, suurendades s\u00fcsteemi tootmisressursse. V\u00f5ime ressursse suurendada ja v\u00e4hendada v\u00f5imaldab s\u00fcsteemil \"jongleerida\" ressurssidega: automaatselt v\u00e4lja l\u00fclitada \u00fcksikud ACU (asendades need uutega) ja rakendada v\u00e4lja l\u00fclitatud ressurssidele k\u00f5ik uuendused.<\/p>\n<p>Aurora Serverless andmebaas suudab skaleerida lugemisekoormust. Kuid dokumentatsioonis ei ole sellest otseselt \u00f6eldud. V\u00f5ib tekkida tunne, et nad saavad t\u00f5sta multi-masteri. Imesid pole siin aga. <\/p>\n<p>See and on infrusturi, et viia ei oleneb, kui ta ei ole l\u00fcganud s\u00fcsteemide. N\u00e4iteks, MVP v\u00f5i visiitkaardilehtede loomise puhul ei ootame tavaliselt stabiilset koormust. Seega, kui juurdep\u00e4\u00e4su ei ole, ei maksa me instantside eest. Kui ootamatult tekib koormus, n\u00e4iteks p\u00e4rast konverentsi v\u00f5i reklaamikampaaniat, plahvatavad ligip\u00e4\u00e4su ja koormus t\u00f5useb kiiresti, Aurora Serverless v\u00f5tab automaatselt selle koormuse ja kiirelt \u00fchendab lisav\u00e4hendused (ACU). J\u00e4rgmine konverents l\u00e4heb, k\u00f5ik unustavad protot\u00fc\u00fcbi, serverid (ACU) kustutatakse ja kulud langevad nulli \u2014 mugav.<\/p>\n<p>See lahendus ei sobi stabiilse k\u00f5rge koormuse korral, kuna see ei oska skaleerida kirjutamiskoormust. K\u00f5ik need ressursid \u00fchendavad ja lahti \u00fchendavad toimuvad nii-\u00f6elda 'scale point'i' hetkel \u2014 ajal, mil andmebaas ei ole tehingu all, ajutised tabelid ei hoia. N\u00e4iteks, n\u00e4dalas v\u00f5ib scale point mitte toimuda ja andmebaas t\u00f6\u00f6tab \u00fcksi ressursidega ning ei saa ei laieneda, ega v\u00e4heneda. <\/p>\n<p>Mingeid imesid ei ole \u2014 see on tavaline PostgreSQL. Kuid masinate lisamise ja lahti\u00fchendamise protsess on osaliselt automatiseeritud.<\/p>\n<h2>Serverless by design<\/h2>\n<p>\nAurora Serverless on vana andmebaas, \u00fcmber kirjutatud pilve jaoks, et kasutada eraldi Serverless'i eeliseid. N\u00fc\u00fcd r\u00e4\u00e4gin andmebaasist, mis on algselt kirjutatud pilve jaoks, serverless l\u00e4henemise alla \u2014 Serverless-by-design. Seda arendati kohe ilma eelduseta, et see t\u00f6\u00f6tab f\u00fc\u00fcsilistel serveritel.<\/p>\n<p>See andmebaas on nimega Snowflake. Sellel on kolm peamist plokki.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/15f9f07ed0281686e509ca6ced387db3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsimene \u2014 see on metaandmete plokk. See on kiire in-memory teenus, mis lahendab turvakahtlused, metaandmed, tehingud, p\u00e4ringute optimeerimise (vasakul joonisel).<\/p>\n<p>Teine plokk \u2014 see on hulk virtuaalseid arvutusklastreid arvutuste jaoks (joonisel \u2014 siniste ringide kogum).<\/p>\n<p>Kolmas plokk \u2014 andmete salvestamise s\u00fcsteem, mis p\u00f5hineb S3-l. S3 on m\u00f5\u00f5tmeteta objektide salvestus AWS-is, just nagu m\u00f5\u00f5tmeteta Dropbox ettev\u00f5tetele.<\/p>\n<p>Vaadake, kuidas Snowflake t\u00f6\u00f6tab k\u00fclma k\u00e4ivitamise eeldustes. See t\u00e4hendab, et andmebaas on olemas, andmed on laaditud, kuid t\u00f6\u00f6tavaid p\u00e4ringuid pole. Seega, kui andmebaasi ei tule p\u00e4ringuid, siis on meil \u00fcles t\u00f5stetud kiire in-memory Metaandmete teenus (esimene plokk). Ja meil on S3 salvestus, kus on andmed tabelite kohta, jagatud nn mikropartiidesse. Lihtsuse huvides: kui tabelis on tehingud, siis on mikropartiid tehingute p\u00e4evad. Iga p\u00e4ev on eraldi mikroparti, eraldi fail. Ja kui andmebaas t\u00f6\u00f6tab sellises re\u017eiimis, maksate ainult andmete kasutatud koha eest. Lisaks on koha maksumus v\u00e4ga madal (eriti arvestades olulist tihendamist). Metaandmete teenus t\u00f6\u00f6tab samuti pidevalt, kuid p\u00e4ringute optimeerimise jaoks ei ole palju ressursse vajalik, seega v\u00f5ib teenust pidada tinglikult tasuta. <\/p>\n<p>N\u00fc\u00fcd kujutame ette, et meie andmebaasi on tulnud kasutaja ja esitanud SQL-p\u00e4ringu. SQL-p\u00e4ring saadetakse kohe t\u00f6\u00f6tlemiseks Metaandmete teenusele. Seega, p\u00e4rast p\u00e4ringu saamist, anal\u00fc\u00fcsib see teenus p\u00e4ringut, saadaval olevaid andmeid, kasutaja \u00f5igusi ja kui k\u00f5ik on h\u00e4sti, koostab t\u00f6\u00f6tlemise plaani.<\/p>\n<p>Seej\u00e4rel k\u00e4ivitab teenus arvutusklastri. Arvutusklaster on serverite klaster, mis teostab arvutusi. See t\u00e4hendab, et klaster v\u00f5ib sisaldada 1 serverit, 2 serverit, 4, 8, 16, 32 \u2014 nii palju kui soovite. Te esitate p\u00e4ringu ja selle jaoks algab klastrite k\u00e4ivitamine sekundite jooksul.<\/p>\n<p><img decoding=\"async\" alt=\"Teel serverivabade andmebaaside poole \u2014 kuidas ja miks\" src=\"\/wp-content\/uploads\/2020\/08\/51b11aee0b0868681c4978f5becd1f1d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEdasi, p\u00e4rast seda, kui klaster on k\u00e4ivitatud, hakkavad S3-st klastrisse kopeeruma mikropartitsioonid, mis on vajalikud just teie p\u00e4ringu t\u00f6\u00f6tlemiseks. Eeldame, et SQL-p\u00e4ringu t\u00e4itmiseks on vaja kahte partitsiooni \u00fchest tabelist ja \u00fchte teisest. Niisiis kopeeritakse klastrisse ainult kolm vajalikku partitsiooni, mitte k\u00f5ik tabelid t\u00e4ielikult. Just seet\u00f5ttu, et k\u00f5ik asub samas andmekeskuses ja on \u00fchendatud v\u00e4ga kiirete kanalitega, toimub kogu edastamisprotsess \u00e4\u00e4rmiselt kiiresti: sekunditega, v\u00e4ga harva \u2014 minutitega, kui jutt ei k\u00e4i mingi v\u00e4ga keerulise p\u00e4ringu kohta. Vastavalt sellele kopeeritakse mikropartitsioonid arvutusklastrisse ja p\u00e4rast l\u00f5petamist t\u00e4idetakse SQL-p\u00e4ring just sellel arvutusklastril. Selle p\u00e4ringu tulemuseks v\u00f5ib olla \u00fcks rida, mitu rida v\u00f5i tabel \u2014 need saadetakse v\u00e4lja kasutajale, et ta saaks need alla laadida, oma BI-t\u00f6\u00f6riistas n\u00e4idata v\u00f5i muul viisil kasutada.<\/p>\n<p>Iga SQL-p\u00e4ring mitte ainult ei loe agrageeritud andmeid varasemalt laaditud andmetest, vaid v\u00f5ib ka laadida\/luua uusi andmeid andmebaasis. See t\u00e4hendab, et see v\u00f5ib olla p\u00e4ring, mis n\u00e4iteks sisestab teise tabelisse uusi kirjeid, mis toob kaasa uue partitsiooni tekkimise arvutusklassis, mis omakorda salvestatakse automaatselt \u00fchte S3 salvestusse.<\/p>\n<p>\u00dclaltoodud stsenaarium, alates kasutaja saabumisest kuni klastrite t\u00f5stmiseni, andmete laadimine, p\u00e4ringute t\u00e4itmine ja tulemuste saamine, arvestatakse v\u00e4lja t\u00f5stetud virtuaalse arvutusklastri, virtuaalse ladustamise, kasutamise minutitasu alusel. Tasu varieerub s\u00f5ltuvalt AWS tsoonist ja klastrisuurusest, kuid keskmiselt on see paar dollarit tunnis. Neli masinat sisaldav klaster maksab kaks korda rohkem kui kaks masinat, kaheksa masinat maksab veel kaks korda rohkem. Saadaval on variandid 16, 32 masinaga, s\u00f5ltuvalt p\u00e4ringute keerukusest. Kuid te maksate ainult selle eest, kui klaster reaalselt t\u00f6\u00f6tab, kuna p\u00e4ringute puudumisel kui te nagu eemaldatud k\u00e4ed, ja p\u00e4rast 5-10-minutilist ootamist (kohandatav parameeter) l\u00fclitub see iseenesest v\u00e4lja, vabastab ressursid ja muutub tasuta.<\/p>\n<p>On t\u00e4iesti reaalne stsenaarium, kus esitades p\u00e4ringu kerkib klaster \u00fcles, nii \u00f6elda, minuti jooksul, veel minut ta arvutab, seej\u00e4rel viis minutit v\u00e4lja l\u00fclitamiseks, ning l\u00f5puks maksate te selle klastiku t\u00f6\u00f6 eest seitsme minuti alusel, mitte kuude ja aastate kaupa.<\/p>\n<p>Esimene stsenaarium kirjeldas Snowflake'i kasutamist \u00fchem\u00f5tmelises variandis. N\u00fc\u00fcd kujutame ette, et kasutajaid on palju, mis on juba l\u00e4hemal reaalsetele stsenaariumidele.<\/p>\n<p>Oletame, et meil on palju anal\u00fc\u00fctikuid ja Tableau aruandeid, mis pidevalt pommitavad meie andmebaasi suure hulga mitte liiga keeruliste anal\u00fc\u00fctiliste SQL-p\u00e4ringutega.<\/p>\n<p>Peale selle oletame, et meil on leidlikud andateadlased, kes proovivad andmetega hirmsaid asju teha, k\u00e4sitledes k\u00fcmneid terabaite, anal\u00fc\u00fcsides miljardeid ja triljoneid andmereale. <\/p>\n<p>\u00dclaltoodud kahe koormust\u00fc\u00fcbi jaoks v\u00f5imaldab Snowflake t\u00f5sta mitmeid s\u00f5ltumatuid arvutusklastreid erineva v\u00f5imsusega. Veel enam, need arvutusklastrid t\u00f6\u00f6tavad iseseisvalt, kuid jagavad \u00fchist koosk\u00f5lastatud teavet.<\/p>\n<p>Paljude kergete p\u00e4ringute jaoks saab t\u00f5sta 2-3 v\u00e4ikest klastrit, mis on suuruselt, \u00f6eldes tinglikult, 2 masinat iga\u00fches. See k\u00e4itumine on rakendatav ka automaatsete seadistuste abil. St \u00fctlete: \u201eSnowflake, t\u00f5sta v\u00e4ike klaster. Kui koormus sellel kasvab \u00fcle teatud parameetri, t\u00f5sta sarnane teine, kolmas. Kui koormus hakkab langema\u2014l\u00fclita liigsed v\u00e4lja.\u201d Selleks, et s\u00f5ltumata sellest, kui palju anal\u00fc\u00fctikuid tuleb ja aruandeid vaatab, jaguks k\u00f5igile ressursse.<\/p>\n<p>Sel juhul, kui anal\u00fc\u00fctikud magavad ja keegi aruandeid ei vaata \u2014 klastrid v\u00f5ivad t\u00e4ielikult v\u00e4lja l\u00fclituda, ja te l\u00f5petate nende eest maksmise.<\/p>\n<p>Samas, raskete p\u00e4ringute (andateadlastelt) jaoks v\u00f5ite t\u00f5sta \u00fche v\u00e4ga suure klastriga, n\u00e4iteks 32 masinat. Seda klastrit hakatakse samuti arvestama ainult nende minutite ja tundide eest, mil seal t\u00f6\u00f6tab teie hiiglaslik p\u00e4ring.<\/p>\n<p>\u00dclaltoodud v\u00f5imalus v\u00f5imaldab jagada klastreid mitte ainult kahe, vaid ka rohkemate koormust\u00fc\u00fcpide vahel (ETL, monitooring, aruannete materialiseerimine,\u2026).<\/p>\n<p>Teeme kokkuv\u00f5tte Snowflake'ist. Andmebaas \u00fchendab kauni idee ja t\u00f6\u00f6tava rakenduse. ManyChat'is kasutame Snowflake'i k\u00f5igi olemasolevate andmete anal\u00fc\u00fcsiks. Meil ei ole klastreid kolm, nagu n\u00e4ites, vaid 5 kuni 9, erineva suurusega. Meil on tinglikult 16-masinilised, 2-masinilised ning superv\u00e4ikesed 1-masinilised teatud \u00fclesannete jaoks. Nad jaotavad koormust t\u00f5husalt ja aitavad meil palju kokku hoida.<\/p>\n<p>Andmebaas suudab edukalt skaleerida nii lugemise kui kirjutamise koormust. See on tohutu erinevus ja suur l\u00e4bimurre v\u00f5rreldes n\u00e4iteks \u201eAurora\u2019ga\u201d, mis toetas vaid lugemise koormust. Snowflake v\u00f5imaldab nende arvutuste klastrite abil skaleerida ka kirjutamise koormust. Nagu mainisin, kasutame ManyChat'is mitut klastrit, kus v\u00e4ikesed ja superv\u00e4ikesed klastrid on peamiselt kasutusel ETL-ks, andmete laadimiseks. Anal\u00fc\u00fctikud t\u00f6\u00f6tavad keskmistel klastritel, mis ei puutu ETL-koormusse, seega t\u00f6\u00f6tavad nad v\u00e4ga kiiresti. <\/p>\n<p>Seega sobib andmebaas h\u00e4sti OLAP-\u00fclesannete jaoks. Kahjuks ei ole see veel rakendatav OLTP-koormuste jaoks. Esiteks on see andmebaas veergude p\u00f5hine, koos k\u00f5ikide sellest tulenevate tagaj\u00e4rgedega. Teiseks, ise l\u00e4henemine, kus iga p\u00e4ringu korral t\u00f5state vastavalt vajadusele arvutusklastri ja t\u00e4idate selle andmetega, on kahjuks OLTP-koormuste jaoks veel liiga aeglane. Sekundite ootamine OLAP-\u00fclesannete jaoks on normaalne, kuid OLTP-\u00fclesannete puhul on see vastuv\u00f5etamatu; parem oleks 100 ms, veel parem \u2014 10 ms.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nServerless andmebaas on v\u00f5imalik t\u00e4nu andmebaasi jagamisele staatless ja stateful osadeks. Olete kindlasti m\u00e4rganud, et k\u00f5igis toodud n\u00e4idetes on stateful osa \u2013 tinglikult \u00f6eldes, mikropartitsioonide salvestamine S3-s, samas kui stateless on optimeerija, tegevus metaandmetega, turvalisuse k\u00fcsimuste t\u00f6\u00f6tlemine, mida saab t\u00f5sta s\u00f5ltumatute kergete stateless teenustena.<\/p>\n<p>SQL-p\u00e4ringute t\u00e4itmist saab samuti v\u00e4lja v\u00f5tta teenustena, millel on kerge olek, mis v\u00f5ivad ilmuda serverless re\u017eiimis, nagu Snowflake'i arvutuskogud, alla laadida ainult vajalikud andmed, teostada p\u00e4ring ja \"surnud\".<\/p>\n<p>Serverless andmete baasid tootmisv\u00f5imsusega on juba kasutamiseks saadaval ja need t\u00f6\u00f6tavad. Need serverless andmebaasid on juba valmis toime tulema OLAP-\u00fclesannetega. Kahjuks kasutatakse neid OLTP-\u00fclesannete puhul... teatud erip\u00e4radega, kuna on piiranguid. \u00dchelt poolt on see miinus. Teiselt poolt on see v\u00f5imalus. V\u00f5ib-olla leiab m\u00f5ni lugeja viisi, kuidas OLTP-andmebaasi t\u00e4ielikult serverless'iks teha, ilma Aurora piiranguteta.<\/p>\n<p>Loodan, et see oli huvitav. Serverless'i tulevik on tulemas \ud83d\ude42<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Teel serverless andmebaaside poole \u2014 kuidas ja miks | ProHoster","description":"Tere k\u00f5igile! Minu nimi on Nikolai Golov.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/na-puti-k-besservernym-bazam-dannyh-kak-i-zachem","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/91635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=91635"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91636"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}