{"id":81936,"date":"2020-05-18T01:42:37","date_gmt":"2020-05-17T23:42:37","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera"},"modified":"2020-05-18T01:42:37","modified_gmt":"2020-05-17T23:42:37","slug":"szhatie-dannyh-v-apache-ignite-opyt-sbera","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","title":{"rendered":"Andmete tihendamine Apache Ignite'is. Sber'i kogemus.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Andmete tihendamine Apache Ignite&#039;is. Sber&#039;i kogemus.\" src=\"\/wp-content\/uploads\/2020\/05\/0e26c686b1f29e88e6be4b8df81ab668.jpg\" style=\"display:block;margin: 0 auto;\" \/>Suurtel andmete kogustel t\u00f6\u00f6tades v\u00f5ib m\u00f5nikord tekkida teravalt vajadus kettaruumi j\u00e4rele. \u00dcks lahendus sellele probleemile on tihendamine, mis v\u00f5imaldab samadel seadmetel suurendada salvestusmahtu. Selles artiklis vaatleme, kuidas andmete tihendamine t\u00f6\u00f6tab Apache Ignite'is. Artiklis k\u00e4sitletakse ainult toote sees rakendatud kettas tihendamise meetodeid. Muud andmete tihendamise viigid (v\u00f5rgu kaudu, m\u00e4lus), olgu need rakendatud v\u00f5i mitte, j\u00e4\u00e4vad artikli raadiusest v\u00e4lja.<\/p>\n<p>Nii et, kui persistence re\u017eiim on sisse l\u00fclitatud, hakkab Ignite andmete muutmisel vahem\u00e4lu kirjutama kettale:<\/p>\n<ol>\n<li>Vahem\u00e4lu sisu<\/li>\n<li>Eelnevate kirjutiste ajakiri (Write Ahead Log, edaspidi lihtsalt WAL)<\/li>\n<\/ol>\n<p>\nWAL tihendamiseks on juba m\u00f5nda aega olemas mehhanism, mida nimetatakse WAL tihendamiseks. Hiljuti ilmunud Apache Ignite 2.8 toob kaasa veel kaks mehhanismi, mis v\u00f5imaldavad tihendada andmeid kettas: need on disk page compression vahem\u00e4lu sisu tihendamiseks ja WAL page snapshot compression m\u00f5nede WAL kirjeid tihendamiseks. K\u00f5ikidest kolmest mehhanismist saad l\u00e4hemalt lugeda allpool.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Disk page compression<\/h3>\n<p><\/p>\n<h4>Kuidas see toimib<\/h4>\n<p>\nAlustuseks r\u00e4\u00e4gime l\u00fchidalt, kuidas Ignite andmeid salvestab. Salvestamiseks kasutatakse lehem\u00e4lu. Lehe suurus m\u00e4\u00e4ratakse s\u00f5lme alguses ja seda ei saa hiljem muuta, samuti peab lehe suurus olema kahe astme ja olema failis\u00fcsteemi ploki suurusega jagatav. Lehed laaditakse RAM-i diskilt vastavalt vajadusele; andmete suurus diskil v\u00f5ib \u00fcletada eraldatud RAM-i mahtu. Kui RAM-is pole piisavalt ruumi, et laadida lehte diskilt, t\u00f5rjutakse RAM-ist v\u00e4lja vanad, enam mitte kasutatavad lehed.<\/p>\n<p>Diskil salvestatakse andmed j\u00e4rgmisel viisil: iga vahepartitsiooni jaoks iga vahegrupi jaoks luuakse eraldi fail, mille sees on lehed j\u00e4rjestatud indeksite t\u00f5usvas j\u00e4rjekorras. Lehe t\u00e4isidentifikaator sisaldab vahegrupi identifikaatorit, partitsiooni numbrit ja lehe indeksi faili sees. Seega saame lehe t\u00e4isidentifikaatori abil \u00fcheselt m\u00e4\u00e4rata faili ja failis oleva ofseti iga lehe jaoks. \u00dcksikasjalikumalt lehe m\u00e4lu \u00fclesehituse kohta saab lugeda artiklist Apache Ignite Wiki: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite P\u00fcsiv Salvestus \u2014 s\u00fcsteemi taga<\/a><\/noindex>.<\/p>\n<p>Disk page compression mechanism, as the name suggests, operates at the page level. When this mechanism is enabled, data in RAM is managed without any compression, but when saving pages from RAM to disk, compression takes place.<\/p>\n<p>However, compressing each page separately is not the solution to the problem; we need to find a way to reduce the size of the resulting data files. If the page size is no longer fixed, we can\u2019t write pages one after another into a file, as this may lead to a series of issues:<\/p>\n<ul>\n<li>We won\u2019t be able to calculate the offset for a page\u2019s position in the file using the page index.<\/li>\n<li>It\u2019s unclear how to handle pages that are not at the end of the file and are changing size. If the size of a page decreases, the space it freed is lost. If the page size increases, a new space in the file will need to be found for it.<\/li>\n<li>Kui lehek\u00fclg nihkub failis\u00fcsteemi ploki suurusele mittet\u00e4iendava arvu baitide v\u00f5rra, tuleb selle lugemiseks v\u00f5i kirjutamiseks puudutada \u00fchte plokki rohkem, mis v\u00f5ib p\u00f5hjustada j\u00f5udluse halvenemist.<\/li>\n<\/ul>\n<p>\nProbleemide lahendamiseks ei pea te ise disk page compression meetodit kasutama, Apache Ignite kasutab failis\u00fcsteemi mehhanismi, mida nimetatakse sparse failideks. Sparse (haruldane) fail on fail, mille m\u00f5ned nullidega t\u00e4idetud piirkonnad v\u00f5ivad olla m\u00e4rgitud \"augudeks\". Sellega ei eraldata failis\u00fcsteemi plokke nende aukude salvestamiseks, mille tulemuseks on diskiruumi kokkuhoid.<\/p>\n<p>On loogiline, et kui soovime vabastada failis\u00fcsteemi ploki, peab augu suurus olema v\u00e4hemalt sama suur kui failis\u00fcsteemi plokk. See seab t\u00e4iendava piiri lehe suurusele Apache Ignite'is: et kompressioon oleks t\u00f5hus, peab lehe suurus olema rangelt suurem kui failis\u00fcsteemi ploki suurus. Kui lehe suurus on sama nagu ploki suurus, ei saa me kunagi vabastada mitte \u00fchtegi plokki, kuna \u00fche ploki vabastamiseks peab kokku pressitud leht v\u00f5tma 0 bait. Kui lehe suurus on kaks v\u00f5i neli plokki, saame vabastada v\u00e4hemalt \u00fche ploki, kui meie leht vahest 50% v\u00f5i 75% v\u00f5rra kokku surutakse.<\/p>\n<p>Seega on mehhanismi t\u00f6\u00f6 kokkuv\u00f5tteks: lehe salvestamisel kettale \u00fcritatakse lehte kokku suruda. Kui kokku surutud lehe suurus v\u00f5imaldab vabastada \u00fche v\u00f5i enam failis\u00fcsteemi plokki, salvestatakse leht kompressitud kujul ning vabastatud plokkide kohale tekib \"auku\" (teostatakse s\u00fcsteemik\u00f5ne). <code>fallocate()<\/code> lipukesega \u201epunch hole\u201d). Kui tihendatud lehe suurus ei v\u00f5imalda bloke vabastada, s\u00e4ilib leht nii nagu on, tihendamata kujul. K\u00f5iki lehe offset'e arvestatakse nagu ilma tihendamiseta, lehe indeksi ja lehe suuruse korrutamisena. Lehtede \u00fcleviimist ei ole vaja k\u00e4sitsi teha. Lehe offset'id nagu ka ilma tihendamiseta langevad failis\u00fcsteemi plokkide piiridesse.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete tihendamine Apache Ignite&#039;is. Sber&#039;i kogemus.\" src=\"\/wp-content\/uploads\/2020\/05\/6a6c6ad83d3b8591f76b9343ff067746.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nPraeguses rakenduses suudab Ignite t\u00f6\u00f6tada sparse-failidega ainult Linuxi ops\u00fcsteemis, seega disk page compression saab olla lubatud ainult Ignite kasutamisel sellel ops\u00fcsteemil.<\/p>\n<p>Squeeze algoritmid, mida saab kasutada disk page compression jaoks: ZSTD, LZ4, Snappy. Lisaks on olemas t\u00f6\u00f6re\u017eiim (SKIP_GARBAGE), kus visatakse lihtsalt lehe kasutamata koht minema ilma tihendamise rakendamiseta \u00fclej\u00e4\u00e4nud andmetele, mis v\u00f5imaldab v\u00e4hendada CPU koormust v\u00f5rreldes eelnevalt nimetatud algoritmidega.<\/p>\n<h4>M\u00f5ju j\u00f5udlusele <\/h4>\n<p>\nKahjuks ei ole ma tegelikku j\u00f5udluse m\u00f5\u00f5tmist reaalses keskkonnas teostanud, kuna meil ei ole plaanis seda mehaanismi tootmises kasutada, kuid saame teoreetiliselt arutleda, kus me kaotame ja kus v\u00f5idame.<\/p>\n<p>Selleks peame meeles pidama, kuidas lehtede lugemine ja kirjutamine toimub nendele p\u00f6\u00f6rdumisel:<\/p>\n<ul>\n<li>Lugemisoperatsiooni l\u00e4biviimisel otsitakse see esmalt RAM-ist, ja kui otsing eba\u00f5nnestub, laaditakse leht RAM-i diskilt sama voolu kaudu, mis teostab lugemist.<\/li>\n<li>Kirjutamisoperatsiooni korral m\u00e4rgitakse leht RAM-is kui 'must', samas ei toimu f\u00fc\u00fcsiline lehe salvestamine diskile kohe kirjutava voolu k\u00e4igus. K\u00f5ik mustad lehed salvestatakse hiljem diskile kontrollpunkti k\u00e4igus eraldi voolude kaudu.<\/li>\n<\/ul>\n<p>\nSeega on m\u00f5ju lugemisoperatsioonidele:<\/p>\n<ul>\n<li>Positiivne (disk IO), t\u00e4nu failis\u00fcsteemi loetud blokki arvu v\u00e4henemisele.<\/li>\n<li>Negatiivne (CPU), kuna operatsioonis\u00fcsteem n\u00f5uab sparsfailidega t\u00f6\u00f6tamiseks t\u00e4iendavat koormust. Samuti v\u00f5ivad siin ilmneda t\u00e4iendavad IO-operatsioonid, et salvestada keerulisemat sparsfaili struktuuri (k\u00f5igi sparsfailide t\u00f6\u00f6detailidega ma kahjuks tuttav ei ole).<\/li>\n<li>Negatiivne (CPU), kuna lehtede dekompressioon on vajalik.<\/li>\n<li>Kirjutamisoperatsioonidele m\u00f5ju ei ole.<\/li>\n<li>M\u00f5ju kontrollpunktiprotsessile (siin on k\u00f5ik sarnane lugemisoperatsioonidega):<\/li>\n<li>Positiivne (disk IO), kuna v\u00e4hendab failis\u00fcsteemi kirjutatud blokke.<\/li>\n<li>Negatiivne (CPU, v\u00f5imalik, et disk IO), kuna t\u00f6\u00f6tamine sparsfailidega.<\/li>\n<li>Negatiivne (CPU), kuna lehtede tihendamine on vajalik.<\/li>\n<\/ul>\n<p>\nMilline kaalukauss kaldub? See s\u00f5ltub v\u00e4ga palju keskkonnast, kuid olen kaldunud arvama, et diskilehe tihendamine toob enamikus s\u00fcsteemides pigem j\u00f5udluse halvenemise. Eelk\u00f5ige, et testid teistes andmebaasides, mis kasutavad sarnast l\u00e4henemist sparsfailidele, n\u00e4itavad j\u00f5udluse langust tihendamise sisse l\u00fclitamisel.<\/p>\n<h4>Kuidas lubada ja seadistada<\/h4>\n<p>\nNagu juba mainitud, on minimaalne Apache Ignite versioon, mis toetab disk page compression: 2.8 ja seda toetatakse ainult Linuxi ops\u00fcsteemis. Selle sissel\u00fclitamine ja seadistamine toimub j\u00e4rgmiselt:<\/p>\n<ul>\n<li>Class-pathis peab olema moodul ignite-compression. Vaikimisi asub see Apache Ignite jaotises libs\/optional ja ei kuulu class-pathi. Saa lihtsalt viia kataloog \u00fche taseme v\u00f5rra \u00fclespoole libs'i ja siis, k\u00e4ivitades ignite.sh, ta lisatakse automaatselt.<\/li>\n<li>Persistence peab olema sisse l\u00fclitatud (Selle saab sissel\u00fclitada l\u00e4bi <code>DataRegionConfiguration.setPersistenceEnabled(true))<\/code>.<\/li>\n<li>Lehe suurus peab olema suurem kui failis\u00fcsteemi ploki suurus (seda saab m\u00e4\u00e4rata l\u00e4bi <code>DataStorageConfiguration.setPageSize()<\/code> ).<\/li>\n<li>Iga vahekogule, mille andmeid tuleb tihendada, tuleb seadistada tihendamise meetod ja (valikuliselt) tihendamise tase (meetodid <code>CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h3>WAL tihendamine<\/h3>\n<p><\/p>\n<h4>Kuidas see toimib<\/h4>\n<p>\nMis on WAL ja milleks see vajalik on? V\u00e4ga l\u00fchidalt: see on ajakiri, kuhu salvestatakse k\u00f5ik s\u00fcndmused, mis l\u00f5puks muudavad lehe salvestust. Seda kasutatakse eelk\u00f5ige selleks, et v\u00f5imaldada taastumist, kui midagi l\u00e4heb valesti. Iga operatsioon peab enne kasutajale juhtimise andmist esmalt salvestama s\u00fcndmuse WAL-i, et juhul, kui midagi l\u00e4heb valesti, oleks v\u00f5imalik ajakirja j\u00e4rgi taastada k\u00f5ik operatsioonid, mille osas kasutaja sai eduka vastuse, isegi kui need operatsioonid ei j\u00f5udnud veel lehe salvestusse k\u00f5vakettale (\u00fclal on juba selgitatud, et tegelik salvestamine lehe salvestusse toimub protsessis, mida nimetatakse \u201ekontrollpunktiks\u201d, teatud viivitusega eraldi niitide poolt).<\/p>\n<p>WAL-i salvestatud kirjed jagunevad loogilisteks ja f\u00fc\u00fcsilisteks. Loogilised on v\u00f5tmed ja v\u00e4\u00e4rtused ise. F\u00fc\u00fcsilised peegeldavad muudatusi lehtedes lehe salvestuses. Kuigi loogilised kirjed v\u00f5ivad olla kasulikud ka muudel juhtudel, on f\u00fc\u00fcsilised kirjed vajalikud ainult taastamiseks p\u00e4rast t\u00f5rke ilmnemist ning neid on vaja alates viimasest eduka kontrollpunkti hetkest. Siin me ei s\u00fcvene \u00fcksikasjadesse ega selgita, miks see just nii toimib, kuid huvilised v\u00f5ivad p\u00f6\u00f6rduda juba mainitud artikli poole Apache Ignite Wiki's: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite P\u00fcsiv Salvestus \u2014 s\u00fcsteemi taga<\/a><\/noindex>.<\/p>\n<p>\u00dche loogilise salvestise kohta on sageli mitu f\u00fc\u00fcsilist salvestist. N\u00e4iteks m\u00f5jutab \u00fcks put-operatsioon vahem\u00e4lu mitu lehte lehek\u00fcljem\u00e4lus (leht andmete endaga, lehed indeksitega, lehed free-list'idega). M\u00f5ningatel s\u00fcnteetilistel testidel olen avastanud, et f\u00fc\u00fcsilised salvestised v\u00f5tsid kuni 90% WAL faili mahust. Samas on need vajalikud v\u00e4ga l\u00fchikese aja jooksul (vaikimisi on kontrollpunktide vahe 3 minutit). Loogiline oleks neist andmetest vabaneda, kui need kaotavad oma t\u00e4htsuse. Just seda teeb WAL kompaktsuse mehhanism, vabanedes f\u00fc\u00fcsilistest salvestistest ja tihendades j\u00e4\u00e4nud loogilisi salvestisi zip'i abil, mille tulemusena failisuurus v\u00e4heneb v\u00e4ga oluliselt (m\u00f5nikord k\u00fcmneid kordi).<\/p>\n<p>F\u00fc\u00fcsiline WAL koosneb mitmest fikseeritud suurusega segmentidest (vaikimisi 10, suurus 64MB), mis kirjutatakse ringikujuliselt \u00fcle. Kui praegune segment on t\u00e4is, m\u00e4\u00e4ratakse j\u00e4rgmiseks segmendiks j\u00e4rgmine, ja t\u00e4idetud segment kopeeritakse arhivi eraldi voos. WAL compaction t\u00f6\u00f6tab juba arhiveeritud segmentidega. Samuti j\u00e4lgib see eraldi voos kontrollpunkti t\u00e4itmist ja alustab arhiveeritud segmentide tihendamist, f\u00fc\u00fcsilised kirjed, millele ei ole enam vajadust.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete tihendamine Apache Ignite&#039;is. Sber&#039;i kogemus.\" src=\"\/wp-content\/uploads\/2020\/05\/ca8690ba7a350df9530f2ccf01c90975.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>M\u00f5ju j\u00f5udlusele<\/h4>\n<p>\nKuna WAL compaction t\u00f6\u00f6tab eraldi voos, ei tohiks see otse m\u00f5jutada teostatavaid operatsioone. Kuid see annab siiski t\u00e4iendava taustkoormuse CPU-le (tihendamine) ja kettale (iga WAL segment arhivist lugemine ja tihendatud segmentide kirjutamine), seega kui s\u00fcsteem t\u00f6\u00f6tab oma piiride l\u00e4hedal, v\u00f5ib see samuti p\u00f5hjustada tulemuslikkuse langust.<\/p>\n<h4>Kuidas lubada ja seadistada<\/h4>\n<p>\nWAL compaction'i saab aktiveerida omaduse <code>WalCompactionEnabled<\/code> \u00fches <code>DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)<\/code>). Samuti saate meetodi DataStorageConfiguration.setWalCompactionLevel() abil m\u00e4\u00e4rata tihendamise taseme, kui vaikimisi v\u00e4\u00e4rtus (BEST_SPEED) ei sobi.<\/p>\n<h3>WAL lehe snapshot tihendamine<\/h3>\n<p><\/p>\n<h4>Kuidas see toimib<\/h4>\n<p>\nOleme juba varasemalt v\u00e4lja selgitanud, et WAL-i kirjed jagunevad loogilisteks ja f\u00fc\u00fcsilisteks. Iga muudatus iga lehe lehem\u00e4lu vormistatakse f\u00fc\u00fcsiliseks WAL-kirjeks. F\u00fc\u00fcsilised kirjed jagunevad omakorda kaheks alamt\u00fc\u00fcbiks: lehe snapshot-kiri ja delta-kiri. Iga kord, kui me midagi lehe peal muudame ja muudame selle puhta seisundi m\u00e4\u00e4rdunudks, salvestatakse WAL-is t\u00e4ielik koopia sellest lehe peast (lehe snapshot-kiri \u2014 lehe s\u0441hnapshot). Isegi kui me muudame ainult \u00fche bait, salvestatakse WAL-i kirjena, mille suurus on veidi suurem kui lehe suurus. Kui me muudame midagi juba m\u00e4\u00e4rdunud lehe peal, siis vormitakse WAL-is delta-kiri, milles kajastuvad ainult muudatused v\u00f5rreldes lehe varasema seisundiga, kuid mitte kogu leht t\u00e4ielikult. Kuna m\u00e4\u00e4rdunud lehtede olek puhtaks vahetatakse kontrollpunkti protsessi k\u00e4igus, siis p\u00e4rast kontrollpunkti algust koosnevad peaaegu k\u00f5ik f\u00fc\u00fcsilised kirjed ainult lehtede s\u0441hsnapshot-kirjadest (kuna k\u00f5ik lehed on kontrollpunkti alguses puhtad), seej\u00e4rel l\u00e4henedes j\u00e4rgmisele kontrollpunktile hakkab delta-kirjade osakaal kasvama ja taas nullitakse j\u00e4rgmise kontrollpunkti alguses. M\u00f5nedel s\u00fcnteetilistel testidel on m\u00f5\u00f5tmised n\u00e4idanud, et lehtede snapshot-kirjade osakaal f\u00fc\u00fcsilistes kirjedes ulatub kuni 90%.<\/p>\n<p>WAL-i lehek\u00fclje kohandatud kompressiooni idee seisneb lehek\u00fclgede kompressimises, kasutades juba olemasolevat t\u00f6\u00f6riista lehek\u00fclgede kompressimiseks (vt disk page compression). WAL-i kirjed salvestatakse j\u00e4rjestikku append-only re\u017eiimis, ilma et oleks vaja siduda kirjeid failis\u00fcsteemi plokkide piiridega, seega erinevalt disk page compression mehhanismist ei ole meil selles osas vajadust sparse-failide j\u00e4rele, mist\u00f5ttu see mehhanism t\u00f6\u00f6tab ka mitte ainult Linuxi operatsioonis\u00fcsteemidel. Lisaks ei ole me enam nii mures, kui palju me suudame lehek\u00fclge kokku suruda. Isegi kui vabastame 1 bait, on see juba positiivne tulemus ja saame SAL-i salvestada komprimeeritud andmed, erinevalt disk page compression-ist, kus salvestame komprimeeritud lehek\u00fclje ainult juhul, kui oleme vabastanud rohkem kui 1 ploki failis\u00fcsteemist.<\/p>\n<p>Lehek\u00fcljed on h\u00e4sti kokkuv\u00f5etavad andmed ja nende osakaal WAL-i kogumahus on v\u00e4ga k\u00f5rge, seega saame WAL-faili formaati muutmata saavutada m\u00e4rkimisv\u00e4\u00e4rse suuruse v\u00e4henemise. Loogiliste kirjade kokkuv\u00f5te n\u00f5uaks samuti formaadi muutmist ja \u00fchilduvuse kaotamist, n\u00e4iteks v\u00e4listele tarbijatele, kellele loogilised kirjed v\u00f5ivad huvi pakkuda, ilma et see tooks \u00fcleliigset mahu v\u00e4henemist.<\/p>\n<p>Nii nagu diskilehe kokkusurumiseks, v\u00f5ivad WAL-lehe momentfotosid kokkuv\u00f5tmiseks kasutada ZSTD, LZ4, Snappy kokkusurutuse algoritme ning ka re\u017eiimi SKIP_GARBAGE.<\/p>\n<h4>M\u00f5ju j\u00f5udlusele<\/h4>\n<p>\nKuidas ei oleks lihtne m\u00e4rgata, et WAL-lehe momentfotosid kokkusurumine m\u00f5jutab otse vaid vooge, mis kirjutavad andmeid lehek\u00fclje m\u00e4lu, nimelt neid vooge, mis muudavad andmeid vahem\u00e4lus. F\u00fc\u00fcsiliste kirjete lugemine WAL-ist toimub ainult \u00fchekordselt, nodi t\u00f5stmise hetkel p\u00e4rast t\u00f5usu (ja ainult juhul, kui t\u00f5us toimus kontrollimise protsessis).<\/p>\n<p>Andmete voogude muutmine m\u00f5jutab seda j\u00e4rgmiselt: saame negatiivse efekti (CPU) vajadusest iga kord enne andmete salvestamist kettale lehte tihendada ja positiivse efekti (disk IO) salvestatavate andmete hulga v\u00e4hendamisest. Seega on siin k\u00f5ik lihtne: kui s\u00fcsteemi j\u00f5udlus s\u00f5ltub CPU-st, tekib kerge halvenemine, kui aga kettasisendi\/v\u00e4ljundi pealt \u2014 saame kasu.<\/p>\n<p>Kaudne WAL-i suuruse v\u00e4henemine m\u00f5jutab samuti (positiivselt) vooge, mis arhiveerivad WAL-segmente ja WAL kompaktsuse vooge.<\/p>\n<p>Reaalsed j\u00f5udlustestid meie keskkonnas s\u00fcnteetiliste andmetega n\u00e4itasid v\u00e4ikest t\u00f5usu (l\u00e4bivool kasvas 10%-15%, latentsus v\u00e4henes 10%-15%).<\/p>\n<h4>Kuidas lubada ja seadistada<\/h4>\n<p>\nApache Ignite minimaalne versioon: 2.8. H\u00e4\u00e4lestamine ja seadistamine toimub j\u00e4rgmiselt:<\/p>\n<ul>\n<li>Class-pathis peab olema moodul ignite-compression. Vaikimisi asub see Apache Ignite jaotises libs\/optional ja ei kuulu class-pathi. Saa lihtsalt viia kataloog \u00fche taseme v\u00f5rra \u00fclespoole libs'i ja siis, k\u00e4ivitades ignite.sh, ta lisatakse automaatselt.<\/li>\n<li>Persistence peab olema sisse l\u00fclitatud (Selle saab sissel\u00fclitada l\u00e4bi <code>DataRegionConfiguration.setPersistenceEnabled(true)<\/code>).<\/li>\n<li>Kokkulepe tihendamise re\u017eiimi m\u00e4\u00e4ramiseks peab olema antud meetodi abil <code>DataStorageConfiguration.setWalPageCompression()<\/code>, vaikimisi on tihendamine v\u00e4lja l\u00fclitatud (re\u017eiim DISABLED).<\/li>\n<li>Valikuliselt saab v\u00e4ljat\u00f6\u00f6tatakse tihendamise astet meetodi abil <code>DataStorageConfiguration.setWalPageCompression()<\/code>, lubatud v\u00e4\u00e4rtused iga re\u017eiimi jaoks vaata meetodi javadoc'ist.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\nApache Ignite'i andmekompressioonimehhanisme saab kasutada s\u00f5ltumatult \u00fcksteisest, kuid lubatud on ka mis tahes nende kombinatsioon. Nende t\u00f6\u00f6p\u00f5him\u00f5tete m\u00f5istmine aitab m\u00e4\u00e4rata, kuiv\u00f5rd need sobivad teie \u00fclesannete jaoks teie keskkonnas ja mille nimel peate nende kasutamisel loobuma. Disk page compression on m\u00f5eldud peamise salvestuse kompressimiseks ja v\u00f5ib anda keskmise m\u00e4\u00e4raga kompressiooni. WAL page snapshot compression annab keskmise kompressioonim\u00e4\u00e4ra WAL-failide puhul, samas kui t\u00f5en\u00e4oliselt suurendab see isegi j\u00f5udlust. WAL kompaktne t\u00f6\u00f6tlus ei m\u00f5juta j\u00f5udlust positiivselt, kuid v\u00e4hendab maksimaalselt WAL-failide suurust f\u00fc\u00fcsiliste kirjete eemaldamise kaudu.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/502136\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\" \/>\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\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\u0421\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u041e\u043f\u044b\u0442 \u0421\u0431\u0435\u0440\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\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-05-17T23:42:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T23:42:37+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\udd47Andmekompressioon Apache Ignite'is. Sberi kogemus | ProHoster","description":"Suurtel andmemahtudel t\u00f6\u00f6tades v\u00f5ib teravalt kerkida esile probleem kettaruumi puudusest. \u00dcks lahendus sellele probleemile on kompressioon, mille abil saab samades seadmetes suurendada salvestusmahte. K\u00e4esolevas artiklis vaatleme, kuidas andmekompressioon t\u00f6\u00f6tab Apache Ignite'is. Artiklis kirjeldatakse ainult toote sees rakendatud lahendusi.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","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\u0421\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u041e\u043f\u044b\u0442 \u0421\u0431\u0435\u0440\u0430 | ProHoster","og:description":"\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","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-05-17T23:42:37+00:00","article:modified_time":"2020-05-17T23:42:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81936","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 15:47:30","updated":"2022-10-02 17:21:32"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/81936","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=81936"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/81936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/81937"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=81936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=81936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=81936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}