{"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\/sl\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","title":{"rendered":"Stiskanje podatkov v Apache Ignite. Izku\u0161nje Sbera","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Stiskanje podatkov v Apache Ignite. Izku\u0161nje Sbera\" src=\"\/wp-content\/uploads\/2020\/05\/0e26c686b1f29e88e6be4b8df81ab668.jpg\" style=\"display:block;margin: 0 auto;\" \/>Pri delu z velikimi koli\u010dinami podatkov se lahko pogosto pojavi problem pomanjkanja prostora na diskih. Eden od na\u010dinov re\u0161evanja te te\u017eave je stiskanje, kar omogo\u010da, da na enakem delu opreme pove\u010damo prostornino shranjevanja. V tem \u010dlanku bomo pregledali, kako delo stiskanja podatkov deluje v Apache Ignite. V \u010dlanku bodo opisani samo na\u010dini stiskanja, ki so implementirani znotraj proizvoda. Drugi na\u010dini stiskanja podatkov (po omre\u017eju, v pomnilniku), tako realizirani kot niso, bodo ostali izven okvira.<\/p>\n<p>Torej, ko je na\u010din trajne shranjevanja vklopljen, za\u010dne Ignite v rezultatih sprememb podatkov v predpomnilnikih zapisovati na disk:<\/p>\n<ol>\n<li>Vsebina predpomnilnikov<\/li>\n<li>Dnevnik predhodnega zapisa (Write Ahead Log, dalje samo WAL)<\/li>\n<\/ol>\n<p>\nZa stiskanje WAL \u017ee dolgo obstaja mehanizem, imenovan WAL compaction. V nedavno izdanem Apache Ignite 2.8 sta se pojavila \u0161e dva mehanizma, ki omogo\u010data stiskanje podatkov na disku: disk page compression za stiskanje vsebine predpomnilnikov in WAL page snapshot compression za stiskanje nekaterih zapisov WAL. Ve\u010d o vseh teh treh mehanizmih spodaj.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Stiskanje strani na disku<\/h3>\n<p><\/p>\n<h4>Kako to funkcionira<\/h4>\n<p>\nNajprej se zelo na kratko ustavimo pri tem, kako Ignite shranjuje podatke. Za shranjevanje se uporablja strani\u010dna pomnilnik. Velikost strani se dolo\u010di ob zagonu vozli\u0161\u010da in je ni mogo\u010de spremeniti v kasnej\u0161ih fazah, prav tako mora biti velikost strani potencna dvojke in ve\u010dkratnik velikosti bloka datote\u010dnega sistema. Strani se nalagajo v RAM iz diska po potrebi, velikost podatkov na disku pa lahko presega dodeljen RAM. V primeru pomanjkanja prostora v RAM za nalaganje strani z diska bodo stare, \u017ee neu\u017eitne strani izrinjene iz RAM.<\/p>\n<p>Na disku so podatki shranjeni v naslednji obliki: za vsako particijo vsake skupine predpomnilnika se ustvari lo\u010dena datoteka, v tej datoteki pa se strani izmeni\u010dno postavljajo v nara\u0161\u010dajo\u010dem vrstnem redu indeksa. Celoten identifikator strani vsebuje identifikator skupine predpomnilnika, \u0161tevilko particije in indeks strani v datoteki. Tako lahko na podlagi celotnega identifikatorja strani nedvoumno dolo\u010dimo datoteko in ofset v datoteki za vsako stran. Ve\u010d o strukturi strani\u010dnega pomnilnika lahko preberete v \u010dlanku na Apache Ignite Wiki: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 za kulisami<\/a><\/noindex>.<\/p>\n<p>Mehanizem stiskanja stran diskov, kot \u017ee ime pove, deluje na ravni strani. Ko je ta mehanizem vklopljen, se delo s podatki v RAM-u izvaja brez kakr\u0161ne koli kompresije, vendar se ob shranjevanju strani iz RAM-a na disk izvaja njihovo stiskanje.<\/p>\n<p>Vendar pa stiskanje vsake strani posebej \u0161e ni re\u0161itev problema, potrebno je nekako zmanj\u0161ati velikost kon\u010dnih datotek s podatki. \u010ce velikost strani neha biti fiksna, ne moremo ve\u010d shranjevati strani v datoteko eno za drugo, ker to lahko povzro\u010di vrsto te\u017eav:<\/p>\n<ul>\n<li>Ne bomo mogli izra\u010dunati ofseta, na katerem se stran nahaja v datoteki, s pomo\u010djo indeksa strani.<\/li>\n<li>Ni jasno, kaj storiti s stranmi, ki se ne nahajajo na koncu datoteke in spreminjajo svojo velikost. \u010ce se velikost strani zmanj\u0161a, se prostor, ki ga je osvobodila, izgubi. \u010ce se velikost strani pove\u010da, je potrebno zanj iskati novo mesto v datoteki.<\/li>\n<li>\u010ce se stran premakne za \u0161tevilo bajtov, ki ni ve\u010dje od velikosti bloka datote\u010dnega sistema, bo za njeno branje ali zapis potrebno zajeti \u0161e en blok datote\u010dnega sistema, kar lahko povzro\u010di degradacijo zmogljivosti.<\/li>\n<\/ul>\n<p>\nDa ne bi re\u0161evali teh te\u017eav na svojem nivoju, stiskanje strani disk v Apache Ignite uporablja mehanizem datote\u010dnega sistema, imenovan redek datoteka. Redek datoteka je datoteka, v kateri so lahko nekateri, z ni\u010dlami napolnjeni regiji ozna\u010deni kot 'luknje'. Tako blokov datote\u010dnega sistema za shranjevanje teh lukenj ne bo dodeljenih, kar rezultira v prihranku prostora na disku.<\/p>\n<p>Logi\u010dno je, da mora biti za osvoboditev bloka datote\u010dnega sistema velikost luknje ve\u010dja ali enaka bloku datote\u010dnega sistema, kar nalaga dodatno omejitev na velikost strani v Apache Ignite: da bi stiskanje imelo kakr\u0161en koli u\u010dinek, mora biti velikost strani strogo ve\u010dja od velikosti bloka datote\u010dnega sistema. \u010ce bo velikost strani enaka velikosti bloka, ne bomo mogli nikoli osvoboditi nobenega bloka, saj mora za osvoboditev enega bloka stisnjena stran zasedati 0 bajtov. \u010ce bo velikost strani enaka velikosti dveh ali \u0161tirih blokov, lahko osvobodimo vsaj en blok, \u010de se na\u0161a stran stisne na vsaj 50 % ali 75 % ustrezno.<\/p>\n<p>Tako, kon\u010dna razlaga delovanja mehanizma: Pri shranjevanju strani na disk se poskusi zmo\u017enosti stiskanja strani. \u010ce velikost stisnjene strani omogo\u010da sprostitev enega ali ve\u010d blokov datote\u010dnega sistema, se stran shrani v stisnjeni obliki, na mestu spro\u0161\u010denih blokov pa se ustvari \"luknja\" (izvede se sistemski klic <code>fallocate()<\/code> z ozna\u010dbo \"punch hole\"). \u010ce velikost stisnjene strani ne omogo\u010da sprostitve blokov, se stran shrani taka, kot je, v nestisnjeni obliki. Vse ofsetne strani se \u0161tejejo kot pred stiskanjem, s pomno\u017eevanjem indeksa strani z velikostjo strani. Nobena relokacija strani ni potrebna. Ofseti strani, kot pred stiskanjem, se nahajajo na mejah blokov datote\u010dnega sistema.<\/p>\n<p><img decoding=\"async\" alt=\"Stiskanje podatkov v Apache Ignite. Izku\u0161nje Sbera\" src=\"\/wp-content\/uploads\/2020\/05\/6a6c6ad83d3b8591f76b9343ff067746.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nV trenutni implementaciji Ignite zna delati z redkimi datotekami samo na operacijskem sistemu Linux, zato je stiskanje diskovnih strani mogo\u010de omogo\u010diti le pri uporabi Ignite na tem operacijskem sistemu.<\/p>\n<p>Algoritmi stiskanja, ki jih je mogo\u010de uporabiti za stiskanje diskovnih strani: ZSTD, LZ4, Snappy. Poleg tega obstaja na\u010din delovanja (SKIP_GARBAGE), pri katerem se le odstrani neizkori\u0161\u010den prostor na strani brez uporabe stiskanja na preostalih podatkih, kar omogo\u010da zmanj\u0161anje obremenitve CPU v primerjavi z zgoraj navedenimi algoritmi.<\/p>\n<h4>Vpliv na zmogljivost <\/h4>\n<p>\n\u017dal dejanske meritve zmogljivosti na realnih okoljih nisem izvajal, ker ne nameravamo uporabljati tega mehanizma v produkciji, vendar lahko teoreti\u010dno razpravljamo, kje bomo izgubili, in kje pridobili.<\/p>\n<p>Za to se moramo spomniti, kako poteka branje in zapis strani ob dostopu do njih:<\/p>\n<ul>\n<li>Pri izvajanju operacije branja se najprej izvede iskanje v RAM-u, \u010de iskanje ni bilo uspe\u0161no, se stran nalo\u017ei v RAM iz diska s tistim tokom, ki izvaja branje.<\/li>\n<li>Pri izvajanju operacije zapisa se stran v RAM-u ozna\u010di kot umazana, pri \u010demer fizi\u010dno shranjevanje strani na disk ne nastopi takoj v tokom, ki izvaja zapis. Vse umazane strani se shranijo na disk kasneje v procesu to\u010dkovanja z drugimi tokovi.<\/li>\n<\/ul>\n<p>\nTako vpliv na operacije branja:<\/p>\n<ul>\n<li>Pozitiven (disk IO), zaradi zmanj\u0161anja \u0161tevila prebranih blokov datote\u010dnega sistema.<\/li>\n<li>Negativno (CPU), zaradi dodatne obremenitve, potrebne operacijskemu sistemu za delo z sparse datotekami. Mo\u017eno je tudi, da se tukaj implicitno pojavijo dodatne IO operacije za shranjevanje bolj kompleksne strukture sparse datoteke (z vsemi podrobnostmi delovanja sparse datotek, na \u017ealost, nisem seznanjen).<\/li>\n<li>Negativno (CPU), zaradi potrebe po dekompresiji strani.<\/li>\n<li>Na operacije zapisa ni vpliva.<\/li>\n<li>Vpliv na postopek kontrolne to\u010dke (tukaj je vse podobno operacijam branja):<\/li>\n<li>Pozitivno (disk IO), zaradi zmanj\u0161anja \u0161tevila zapisanih blokov datote\u010dnega sistema.<\/li>\n<li>Negativno (CPU, mogo\u010de disk IO), zaradi dela s sparse datotekami.<\/li>\n<li>Negativno (CPU), zaradi potrebe po stiskanju strani.<\/li>\n<\/ul>\n<p>\nKatera skodelica tehtnice bo prevladala? To je zelo odvisno od okolja, a nagibam se k temu, da bo stiskanje diskovnih strani verjetno povzro\u010dilo degradacijo zmogljivosti v ve\u010dini sistemov. \u0160e posebej ker testi na drugih DBMS, ki uporabljajo podoben pristop s sparse datotekami, ka\u017eejo padec zmogljivosti pri vklopljenem stiskanju.<\/p>\n<h4>Kako vklju\u010diti in nastaviti<\/h4>\n<p>\nKot je bilo \u017ee omenjeno zgoraj, minimalna razli\u010dica Apache Ignite, ki podpira stiskanje diskovnih strani: 2.8 in se podpira le operacijski sistem Linux. Vklju\u010ditev in nastavitev poteka na naslednji na\u010din:<\/p>\n<ul>\n<li>V class-pathu mora biti modul ignite-compression. Po privzetku se nahaja v distribuciji Apache Ignite v direktoriju libs\/optional in ni vklju\u010den v class-path. Lahko preprosto premaknete direktorij eno raven vi\u0161je v libs in takrat bo ob zagonu preko ignite.sh samodejno vklju\u010den.<\/li>\n<li>Vztrajnost mora biti vklju\u010dena (vklju\u010di se preko <code>DataRegionConfiguration.setPersistenceEnabled(true))<\/code>.<\/li>\n<li>Velikost strani mora biti ve\u010dja od velikosti bloka datote\u010dnega sistema (to lahko nastavite z <code>DataStorageConfiguration.setPageSize()<\/code> ).<\/li>\n<li>Za vsak predpomnilnik, katerega podatke je treba stiskati, je treba v konfiguraciji nastaviti metodo stiskanja in (opcijsko) raven stiskanja (metode <code>CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h3>WAL stiskanje<\/h3>\n<p><\/p>\n<h4>Kako to funkcionira<\/h4>\n<p>\nKaj je WAL in zakaj je potreben? Na kratko: to je dnevnik, v katerega se zabele\u017eijo vsi dogodki, ki na koncu spremenijo shranjevanje strani. Potreben je predvsem za mo\u017enost obnovitve v primeru padca. Vsaka operacija mora najprej zabele\u017eiti dogodek v WAL, preden predaja nadzor uporabniku, da bi v primeru padca lahko predvajali dnevnik in obnovili vse operacije, za katere je uporabnik prejel uspe\u0161en odziv, tudi \u010de te operacije niso uspele odra\u017eati v shranjevanju strani na disku (zgoraj je bilo opisano, da se dejanska zapisovanje v shranjevanje strani izvaja v procesu, imenovanem<\/p>\n<p>Zapiski v WAL so razdeljeni na logi\u010dne in fizi\u010dne. Logi\u010dne so sami klju\u010di in vrednosti. Fizi\u010dni odra\u017eajo spremembe strani v shranjevanju strani. \u010ce so logi\u010dni zapisi morda uporabni \u0161e v drugih primerih, so fizi\u010dni zapisi potrebni le za obnovitev v primeru padca in potrebni so le zapisi od zadnjega uspe\u0161nega kontrolnega to\u010dke. Tukaj se ne bomo poglobili v podrobnosti in razlo\u017eili, zakaj to\u010dno tako deluje, vendar lahko tisti, ki jih zanima, preberejo \u017ee omenjeno \u010dlanek na Apache Ignite Wiki: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 za kulisami<\/a><\/noindex>.<\/p>\n<p>Na eno logi\u010dno zapis se pogosto nana\u0161ajo ve\u010d fizi\u010dnih zapisov. To pomeni, da na primer ena operacija put v predpomnilniku zajema ve\u010d strani v stranicni pomnilniku (stran s podatki, strani z indeksi, strani s seznami prostih mest). Pri nekaterih sinteti\u010dnih testih sem ugotovil, da so fizi\u010dni zapisi zavzeli do 90 % prostornine datoteke WAL. Na voljo so le zelo kratek \u010das (privzeto je interval med preverjanji - 3 minute). Logi\u010dno bi bilo, da bi se teh podatkov po izgubi njihove aktualnosti znebili. To\u010dno to izvaja mehanizem WAL compaction, ki se znebi fizi\u010dnih zapisov in z uporabo zip komprimira preostale logi\u010dne zapise, pri \u010demer se velikost datoteke zelo bistveno zmanj\u0161uje (v\u010dasih tudi ve\u010d desetkrat).<\/p>\n<p>Fizi\u010dni WAL sestavlja ve\u010d segmentov (privzeto 10) fiksne velikosti (privzeto 64 MB), ki se prepisujejo v krogu. Takoj, ko se trenutni segment napolni, se mu dodeli naslednji segment, napolnjen segment pa se kopira v arhiv prek lo\u010denega toka. WAL kompresija \u017ee deluje z arhivskimi segmenti. Prav tako prek lo\u010denega toka spremlja izvajanje kontrolne to\u010dke in za\u010dne s stiskanjem arhivskih segmentov, fizi\u010dni zapisi za katere ve\u010d niso potrebni.<\/p>\n<p><img decoding=\"async\" alt=\"Stiskanje podatkov v Apache Ignite. Izku\u0161nje Sbera\" src=\"\/wp-content\/uploads\/2020\/05\/ca8690ba7a350df9530f2ccf01c90975.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>Vpliv na zmogljivost<\/h4>\n<p>\nKer WAL kompresija deluje prek lo\u010denega toka, ne bi smela imeti neposrednega vpliva na izvajane operacije. Vendar pa vseeno povzro\u010da dodatno obremenitev CPU (kompresija) in diska (branje vsakega WAL segmenta iz arhiva in zapis stisnjenih segmentov), zato, \u010de sistem deluje na robu svojih zmo\u017enosti, lahko to povzro\u010di tudi zmanj\u0161anje zmogljivosti.<\/p>\n<h4>Kako vklju\u010diti in nastaviti<\/h4>\n<p>\nWAL kompresijo lahko omogo\u010dite z lastnostjo <code>WalCompactionEnabled<\/code> u <code>DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)<\/code>). Prav tako lahko z metodo DataStorageConfiguration.setWalCompactionLevel() dolo\u010dite raven kompresije, \u010de vas privzeta vrednost (BEST_SPEED) ne zadostuje.<\/p>\n<h3>Kompresija fotografij WAL strani<\/h3>\n<p><\/p>\n<h4>Kako to funkcionira<\/h4>\n<p>\nPrej smo ugotovili, da se zapisi WAL delijo na logi\u010dne in fizi\u010dne. Vsaka sprememba vsake strani v pomnilniku strani tvori fizi\u010dni zapis WAL. Fizi\u010dni zapisi se nato delijo na dva podvrsta: zapis posnetka strani in zapis delta. Vsaki\u010d, ko spremenimo kaj na strani in jo prenesemo iz \u010distega stanja v umazano, se v WAL shrani popolna kopija te strani (zapis posnetka strani \u2014 snapshot strani). Tudi \u010de smo spremenili le en bajt, bo v WAL shranjen zapis velikosti malo ve\u010dje od velikosti strani. \u010ce pa spremenimo kaj na \u017ee umazani strani, se v WAL ustvari zapis delta, v katerem so odra\u017eene le spremembe v primerjavi s prej\u0161njim stanjem strani, ne pa cela stran. Ker se preklop stanja strani z umazanega na \u010disto izvede med to\u010dko preverjanja, bodo takoj po za\u010detku to\u010dke preverjanja prakti\u010dno vsi fizi\u010dni zapisi sestavljeni le iz posnetkov strani (ker so vse strani takoj po za\u010detku to\u010dke preverjanja \u010diste), nato pa se z bli\u017eanjem naslednji to\u010dki preverjanja dele\u017e zapisov delta za\u010dne pove\u010devati in se spet ponastavi ob za\u010detku naslednje to\u010dke preverjanja. Meritve nekaterih sinteti\u010dnih testov so pokazale, da dele\u017e posnetkov strani v skupni koli\u010dini fizi\u010dnih zapisov dose\u017ee 90%.<\/p>\n<p>Ideja stiskanja posnetkov strani WAL se nana\u0161a na stiskanje posnetkov strani z uporabo \u017ee obstoje\u010dega orodja za stiskanje strani (glej stiskanje diskovnih strani). Pri tem se zapisi v WAL shranjujejo zaporedno v na\u010dinu le za dodajanje in ni potrebno povezovati zapisov z mejami blokov datote\u010dnega sistema, zato tukaj, za razliko od mehanizma stiskanja diskovnih strani, sploh ne potrebujemo razpr\u0161enih datotek, kar pomeni, da bo ta mehanizem deloval tudi v operacijskem sistemu Linux. Poleg tega nam ni ve\u010d pomembno, kako mo\u010dno smo uspeli stisniti stran. Tudi \u010de smo osvobodili 1 bajt, je to \u017ee pozitiven rezultat in lahko shranjujemo stisnjene podatke v WAL, za razliko od stiskanja diskovnih strani, kjer shranjujemo stisnjeno stran le, \u010de smo osvobodili ve\u010d kot 1 blok datote\u010dnega sistema.<\/p>\n<p>Strani so dobro stiskani podatki, njihov dele\u017e v skupni prostornini WAL je zelo visok, tako da lahko, ne da bi spreminjali format WAL datoteke, dose\u017eemo znatno zmanj\u0161anje njene velikosti. Stiskanje tudi logi\u010dnih zapisov bi zahtevalo spremembo formata in izgubo zdru\u017eljivosti, na primer za zunanje uporabnike, ki jih lahko zanimajo logi\u010dni zapisi, hkrati pa ne bi prineslo znatnega zmanj\u0161anja obsega datoteke.<\/p>\n<p>Tako kot pri stiskanju datote\u010dnih strani za stiskanje zapisov strani WAL lahko uporabimo algoritme za stiskanje ZSTD, LZ4, Snappy ter na\u010din SKIP_GARBAGE.<\/p>\n<h4>Vpliv na zmogljivost<\/h4>\n<p>\nKot lahko opazite, neposredno vklju\u010ditev stiskanja zapisov strani WAL vpliva samo na tokove, ki zapisujejo podatke v strani\u010dno pomnilnik, torej na tiste tokove, ki spreminjajo podatke v predpomnilniku. Branje fizi\u010dnih zapisov iz WAL poteka samo enkrat, ob sprostitvi vozli\u0161\u010da po napaki (in samo v primeru napake med prelaganjem).<\/p>\n<p>Na tokove, ki spreminjajo podatke, to vpliva na naslednji na\u010din: dobimo negativen u\u010dinek (CPU) zaradi potrebe po stiskanju strani pred zapisom na disk in pozitiven u\u010dinek (disk IO) zaradi zmanj\u0161anja koli\u010dine zapisanih podatkov. Tako je tukaj preprosto, \u010de se zmogljivost sistema zaradi CPU omejuje, dobimo majhno degradacijo, \u010de pa zaradi diska vnos\/izhod \u2014 dobimo pove\u010danje.<\/p>\n<p>Posredno zmanj\u0161anje velikosti WAL prav tako pozitivno vpliva na tokove, ki arhivirajo segmente WAL, in na tokove kompresije WAL.<\/p>\n<p>Dejanski testi zmogljivosti v na\u0161em okolju na sinteti\u010dnih podatkih so pokazali majhno pove\u010danje (prehodnost se je pove\u010dala za 10%-15%, zakasnitev pa je zmanj\u0161ana za 10%-15%).<\/p>\n<h4>Kako vklju\u010diti in nastaviti<\/h4>\n<p>\nMinimalna razli\u010dica Apache Ignite: 2.8. Vklop in nastavitev izvedemo na slede\u010di na\u010din:<\/p>\n<ul>\n<li>V class-pathu mora biti modul ignite-compression. Po privzetku se nahaja v distribuciji Apache Ignite v direktoriju libs\/optional in ni vklju\u010den v class-path. Lahko preprosto premaknete direktorij eno raven vi\u0161je v libs in takrat bo ob zagonu preko ignite.sh samodejno vklju\u010den.<\/li>\n<li>Vztrajnost mora biti vklju\u010dena (vklju\u010di se preko <code>DataRegionConfiguration.setPersistenceEnabled(true)<\/code>).<\/li>\n<li>Morate dolo\u010diti na\u010din stiskanja z metodo <code>DataStorageConfiguration.setWalPageCompression()<\/code>, privzeto je stiskanje izklopljeno (na\u010din DISABLED).<\/li>\n<li>Opcijsko lahko dolo\u010dite stopnjo stiskanja z metodo <code>DataStorageConfiguration.setWalPageCompression()<\/code>, dovoljene vrednosti za vsak od na\u010dinov glejte v javadoc za metodo.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Zaklju\u010dek<\/h3>\n<p>\nObravnavani mehanizmi stiskanja podatkov v Apache Ignite se lahko uporabljajo neodvisno drug od drugega, vendar so dovoljene tudi vse njihove kombinacije. Razumevanje na\u010del njihovega delovanja bo omogo\u010dilo dolo\u010ditev, kako dobro ustrezajo va\u0161im nalogam v va\u0161i okolici in \u010demu boste morali ob tem opustiti. Stiskanje diskovnih strani je namenjeno stiskanju glavnega shranjevanja in lahko dose\u017ee povpre\u010dno stopnjo stiskanja. Stiskanje posnetkov strani WAL bo dalo povpre\u010dno stopnjo stiskanja \u017ee datotek WAL, pri tem pa skoraj zagotovo celo pove\u010dalo zmogljivost. Kompaktiranje WAL-ov ne bo pozitivno vplivalo na zmogljivost, vendar bo maksimalno zmanj\u0161alo velikost datotek WAL z odstranitvijo fizi\u010dnih zapisov.<br \/>\n<br \/>Izvor: <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 5.0.4 - aioseo.com -->\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\/sl\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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:url\" content=\"https:\/\/prohoster.info\/sl\/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\udd47Stiskanje podatkov v Apache Ignite. Izku\u0161nje Sberbanke | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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:url":"https:\/\/prohoster.info\/sl\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/81936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=81936"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/81936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/81937"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=81936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=81936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=81936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}