{"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\/hu\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","title":{"rendered":"Adatok t\u00f6m\u00f6r\u00edt\u00e9se Apache Ignite-ban. A Sber tapasztalatai","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Adatok t\u00f6m\u00f6r\u00edt\u00e9se Apache Ignite-ban. A Sber tapasztalatai\" src=\"\/wp-content\/uploads\/2020\/05\/0e26c686b1f29e88e6be4b8df81ab668.jpg\" style=\"display:block;margin: 0 auto;\" \/>Nagy adatmennyis\u00e9gek kezel\u00e9se sor\u00e1n gyakran felmer\u00fcl a lemezhely hi\u00e1ny\u00e1nak probl\u00e9m\u00e1ja. Az egyik megold\u00e1s a t\u00f6m\u00f6r\u00edt\u00e9s, amely lehet\u0151v\u00e9 teszi, hogy ugyanazon a hardveren megn\u00f6velj\u00fck a t\u00e1rol\u00e1si kapacit\u00e1st. Ebben a cikkben megvizsg\u00e1ljuk, hogyan m\u0171k\u00f6dik az adat t\u00f6m\u00f6r\u00edt\u00e9se az Apache Ignite-ban. Csak a term\u00e9kben megval\u00f3s\u00edtott lemezes t\u00f6m\u00f6r\u00edt\u00e9si m\u00f3dszereket t\u00e1rgyaljuk. M\u00e1s, p\u00e9ld\u00e1ul h\u00e1l\u00f3zaton vagy mem\u00f3ri\u00e1ban v\u00e9gzett t\u00f6m\u00f6r\u00edt\u00e9si m\u00f3dszerek, ak\u00e1r megval\u00f3s\u00edtott, ak\u00e1r nem, k\u00edv\u00fcl maradnak.<\/p>\n<p>Teh\u00e1t, a perzisztensek \u00fczemm\u00f3dj\u00e1nak bekapcsol\u00e1sakor, az adatok cache-be t\u00f6rt\u00e9n\u0151 megv\u00e1ltoztat\u00e1s\u00e1nak eredm\u00e9nyek\u00e9nt az Ignite elkezdi a lemezre \u00edr\u00e1st:<\/p>\n<ol>\n<li>A cache-ek tartalma<\/li>\n<li>El\u0151zetes \u00edr\u00e1si napl\u00f3 (Write Ahead Log, a tov\u00e1bbiakban csak WAL)<\/li>\n<\/ol>\n<p>\nA WAL t\u00f6m\u00f6r\u00edt\u00e9s\u00e9re m\u00e1r r\u00e9g\u00f3ta l\u00e9tezik egy mechanizmus, amelyet WAL compaction-nak h\u00edvnak. A nemr\u00e9giben megjelent Apache Ignite 2.8-ban tov\u00e1bbi k\u00e9t mechanizmus is megjelent, amelyek lehet\u0151v\u00e9 teszik a lemezen l\u00e9v\u0151 adatok t\u00f6m\u00f6r\u00edt\u00e9s\u00e9t: ez a disk page compression a cache-ek tartalm\u00e1nak t\u00f6m\u00f6r\u00edt\u00e9s\u00e9re \u00e9s a WAL page snapshot compression a WAL n\u00e9h\u00e1ny bejegyz\u00e9s\u00e9nek t\u00f6m\u00f6r\u00edt\u00e9s\u00e9re. R\u00e9szletesebben az al\u00e1bbiakban mindh\u00e1rom mechanizmust bemutatjuk.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Disk page compression<\/h3>\n<p><\/p>\n<h4>Hogyan m\u0171k\u00f6dik ez<\/h4>\n<p>\nEl\u0151sz\u00f6r is, r\u00f6viden n\u00e9zz\u00fck meg, hogyan t\u00e1rolja az Ignite az adatokat. Az adatok lapozott mem\u00f3ri\u00e1ban ker\u00fclnek t\u00e1rol\u00e1sra. A lap m\u00e9rete a csom\u00f3pont ind\u00edt\u00e1sakor van megadva, \u00e9s nem v\u00e1ltoztathat\u00f3 meg k\u00e9s\u0151bbi szakaszokban; a lap m\u00e9ret\u00e9nek kett\u0151 hatv\u00e1ny\u00e1nak kell lennie, \u00e9s meg kell egyeznie a f\u00e1jlrendszer blokk m\u00e9ret\u00e9vel. A lapok sz\u00fcks\u00e9g szerint, lemezr\u0151l ker\u00fclnek bet\u00f6lt\u00e9sre a RAM-ba, \u00e9s a lemezen l\u00e9v\u0151 adatmennyis\u00e9g meghaladhatja a lefoglalt RAM mennyis\u00e9g\u00e9t. Ha a RAM-ban nem \u00e1ll rendelkez\u00e9sre elegend\u0151 hely egy lap bet\u00f6lt\u00e9s\u00e9hez, a r\u00e9gi, m\u00e1r nem haszn\u00e1lt lapok ker\u00fclnek ki a RAM-b\u00f3l.<\/p>\n<p>A lemezen az adatok a k\u00f6vetkez\u0151 form\u00e1tumban t\u00e1rol\u00f3dnak: minden cache-csoporthoz k\u00fcl\u00f6n f\u00e1jl k\u00e9sz\u00fcl, ebben a f\u00e1jlban, a n\u00f6vekv\u0151 index sorrendj\u00e9ben egybeesnek a lapok. A teljes lapazonos\u00edt\u00f3 tartalmazza a cache-csoport azonos\u00edt\u00f3j\u00e1t, a part\u00edci\u00f3 sz\u00e1m\u00e1t \u00e9s a lap index\u00e9t a f\u00e1jlban. \u00cdgy a teljes lapazonos\u00edt\u00f3 alapj\u00e1n egy\u00e9rtelm\u0171en azonos\u00edthatjuk a f\u00e1jlt \u00e9s a f\u00e1jlban l\u00e9v\u0151 offsetet minden lap sz\u00e1m\u00e1ra. A lapozott mem\u00f3ria fel\u00e9p\u00edt\u00e9s\u00e9r\u0151l b\u0151vebben olvashat a Apache Ignite Wiki-ban: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 a h\u00e1tt\u00e9rben<\/a><\/noindex>.<\/p>\n<p>A lemez oldalm\u00e9ret\u0171 t\u00f6m\u00f6r\u00edt\u00e9si mechanizmusa, ahogy az a nev\u00e9b\u0151l is kider\u00fcl, az oldal szintj\u00e9n m\u0171k\u00f6dik. Ennek a mechanizmusnak a bekapcsol\u00e1s\u00e1val a RAM-ban v\u00e9gzett adatkezel\u00e9s \u00fagy t\u00f6rt\u00e9nik, ahogy van, b\u00e1rmif\u00e9le t\u00f6m\u00f6r\u00edt\u00e9s n\u00e9lk\u00fcl, de amikor az oldalakat a RAM-b\u00f3l a lemezre mentj\u00fck, v\u00e9gbemegy a t\u00f6m\u00f6r\u00edt\u00e9s.<\/p>\n<p>De minden egyes oldal k\u00fcl\u00f6n-k\u00fcl\u00f6n t\u00f6rt\u00e9n\u0151 t\u00f6m\u00f6r\u00edt\u00e9se m\u00e9g nem oldja meg a probl\u00e9m\u00e1t, valahogy cs\u00f6kkenteni kell a v\u00e9gs\u0151 adatf\u00e1jlok m\u00e9ret\u00e9t. Ha az oldal m\u00e9rete nem fix\u00e1lt, akkor m\u00e1r nem tudjuk az oldalakat egyes\u00e9vel a f\u00e1jlba \u00edrni, mert ez egy sor probl\u00e9m\u00e1t okozhat:<\/p>\n<ul>\n<li>Nem tudjuk az oldal index\u00e9vel kisz\u00e1m\u00edtani az offsetet, ahol az a f\u00e1jlban tal\u00e1lhat\u00f3.<\/li>\n<li>Nem vil\u00e1gos, hogy mit tegy\u00fcnk azokkal az oldalakkal, amelyek nem a f\u00e1jl v\u00e9g\u00e9n helyezkednek el, \u00e9s amelyek m\u00e9rete v\u00e1ltozik. Ha az oldal m\u00e9rete cs\u00f6kken, akkor a felszabad\u00edtott hely elt\u0171nik. Ha az oldal m\u00e9rete n\u00f6vekszik, akkor m\u00e1r \u00faj helyet kell keresni a f\u00e1jlban.<\/li>\n<li>Ha az oldal a f\u00e1jlrendszer blokk m\u00e9ret\u00e9hez nem t\u00f6bbsz\u00f6r\u00f6s sz\u00e1m\u00edt\u00e1ssal elmozdul, akkor annak olvas\u00e1s\u00e1hoz vagy \u00edr\u00e1s\u00e1hoz egy blokk f\u00e1jlrendszert is \u00e9rinteni kell, ami teljes\u00edtm\u00e9nycs\u00f6kken\u00e9shez vezethet.<\/li>\n<\/ul>\n<p>\nAnnak \u00e9rdek\u00e9ben, hogy ezeket a probl\u00e9m\u00e1kat ne kelljen \u00f6n\u00e1ll\u00f3an megoldani, a disk page compression az Apache Ignite-ban a f\u00e1jlrendszer egy mechanizmus\u00e1t haszn\u00e1lja, amelyet sparse f\u00e1jloknak nevez\u00fcnk. A sparse (ritka) f\u00e1jl olyan f\u00e1jl, amelyben a null\u00e1kkal kit\u00f6lt\u00f6tt ter\u00fcletek \u201elyukk\u00e9nt\u201d jel\u00f6lhet\u0151k. Ezzel a f\u00e1jlrendszer blokkjai nem ker\u00fclnek t\u00e1rol\u00e1sra ezekhez a lyukakhoz, ezzel helyet takar\u00edtva meg a lemezen.<\/p>\n<p>Logikus, hogy ahhoz, hogy egy f\u00e1jlrendszer blokkot felszabad\u00edtsunk, a lyuk m\u00e9ret\u00e9nek nagyobbnak vagy egyenl\u0151nek kell lennie a f\u00e1jlrendszer blokk m\u00e9ret\u00e9vel, ami tov\u00e1bbi korl\u00e1toz\u00e1st jelent az Apache Ignite oldalm\u00e9ret\u00e9re: ahhoz, hogy a t\u00f6m\u00f6r\u00edt\u00e9s valamilyen hat\u00e1st gyakoroljon, az oldal m\u00e9ret\u00e9nek mindenk\u00e9ppen nagyobbnak kell lennie a f\u00e1jlrendszer blokk m\u00e9ret\u00e9n\u00e9l. Ha az oldalm\u00e9ret megegyezik a blokk m\u00e9ret\u00e9vel, soha nem tudunk felszabad\u00edtani egyetlen blokkot sem, mivel ahhoz, hogy egyetlen blokkot felszabad\u00edtsunk, a t\u00f6m\u00f6r\u00edtett oldalnak 0 b\u00e1jtnak kell lennie. Ha az oldal m\u00e9rete 2 vagy 4 blokk m\u00e9ret\u00e9vel egyezik meg, akkor m\u00e1r legal\u00e1bb egy blokkot felszabad\u00edthatunk, ha az oldalunk legal\u00e1bb 50%-kal vagy 75%-kal t\u00f6m\u00f6r\u00fcl.<\/p>\n<p>Teh\u00e1t a mechanizmus m\u0171k\u00f6d\u00e9s\u00e9nek v\u00e9gs\u0151 le\u00edr\u00e1sa a k\u00f6vetkez\u0151: Amikor egy oldalt le\u00edrunk a lemezre, megpr\u00f3b\u00e1ljuk t\u00f6m\u00f6r\u00edteni az oldalt. Ha a t\u00f6m\u00f6r\u00edtett oldal m\u00e9rete lehet\u0151v\u00e9 teszi, hogy egy vagy t\u00f6bb f\u00e1jlrendszer blokk szabaduljon fel, az oldal t\u00f6m\u00f6r\u00edtett form\u00e1ban ker\u00fcl r\u00f6gz\u00edt\u00e9sre, a felszabad\u00edtott blokkok hely\u00e9n pedig \u201elyuk\u201d keletkezik (rendszervh\u00edv\u00e1s t\u00f6rt\u00e9nik a \"punch hole\" c\u00edmk\u00e9vel). <code>fallocate()<\/code> Ha a t\u00f6m\u00f6r\u00edtett oldal m\u00e9rete nem teszi lehet\u0151v\u00e9 a blokkok felszabad\u00edt\u00e1s\u00e1t, az oldal v\u00e1ltozatlan form\u00e1ban, t\u00f6m\u00f6r\u00edtetlen\u00fcl ker\u00fcl ment\u00e9sre. Minden oldal offsetjei ugyan\u00fagy sz\u00e1m\u00edt\u00f3dnak, mint t\u00f6m\u00f6r\u00edt\u00e9s n\u00e9lk\u00fcl, az oldal index\u00e9nek \u00e9s az oldal m\u00e9ret\u00e9nek szorzatak\u00e9nt. Oldalak relok\u00e1ci\u00f3j\u00e1ra nincs sz\u00fcks\u00e9g. Az oldalak offsetjei, m\u00e9g t\u00f6m\u00f6r\u00edt\u00e9s n\u00e9lk\u00fcl, a f\u00e1jlrendszer blokkjainak hat\u00e1rain \u00e9rkeznek.<\/p>\n<p><img decoding=\"async\" alt=\"Adatok t\u00f6m\u00f6r\u00edt\u00e9se Apache Ignite-ban. A Sber tapasztalatai\" src=\"\/wp-content\/uploads\/2020\/05\/6a6c6ad83d3b8591f76b9343ff067746.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nA jelenlegi Ignite implement\u00e1ci\u00f3 csak Linux oper\u00e1ci\u00f3s rendszer alatt k\u00e9pes sparse f\u00e1jlokkal dolgozni, \u00edgy a disk page compression csak ezen oper\u00e1ci\u00f3s rendszer haszn\u00e1lat\u00e1val kapcsolhat\u00f3 be.<\/p>\n<p>A disk page compressionhoz haszn\u00e1lhat\u00f3 t\u00f6m\u00f6r\u00edt\u00e9si algoritmusok: ZSTD, LZ4, Snappy. Ezen k\u00edv\u00fcl l\u00e9tezik egy \u00fczemm\u00f3d (SKIP_GARBAGE), amelyben csak a lapban nem haszn\u00e1lt helyet dobjuk el an\u00e9lk\u00fcl, hogy a fennmarad\u00f3 adatokon t\u00f6m\u00f6r\u00edt\u00e9st alkalmazn\u00e1nk, ami cs\u00f6kkenti a CPU terhel\u00e9s\u00e9t a fent eml\u00edtett algoritmusokhoz k\u00e9pest.<\/p>\n<h4>Hat\u00e1s a teljes\u00edtm\u00e9nyre <\/h4>\n<p>\nSajnos a t\u00e9nyleges teljes\u00edtm\u00e9nym\u00e9r\u00e9seket val\u00f3s k\u00f6rnyezetben nem v\u00e9geztem, mivel nem tervezz\u00fck, hogy ezt a mechanizmust a termel\u00e9sben haszn\u00e1ljuk, de teoretikusan el lehet gondolkodni, hogy hol vesz\u00edt\u00fcnk \u00e9s hol nyer\u00fcnk.<\/p>\n<p>Ehhez eml\u00e9kezn\u00fcnk kell arra, hogyan t\u00f6rt\u00e9nik az oldalak olvas\u00e1sa \u00e9s \u00edr\u00e1sa a hozz\u00e1f\u00e9r\u00e9s sor\u00e1n:<\/p>\n<ul>\n<li>Olvas\u00e1si m\u0171velet v\u00e9grehajt\u00e1sakor el\u0151sz\u00f6r a RAM-ban keresik az oldalt, ha a keres\u00e9s nem sikeres, az oldal a lemezr\u0151l bet\u00f6lt\u0151dik a RAM-ba abban a folyamatban, amelyik az olvas\u00e1st v\u00e9gzi.<\/li>\n<li>\u00cdr\u00e1si m\u0171velet v\u00e9grehajt\u00e1sakor az oldal a RAM-ban piszkosk\u00e9nt van megjel\u00f6lve, \u00e1m az oldal fizikailag nem ker\u00fcl azonnal ment\u00e9sre a lemezre abban a folyamatban, amelyik az \u00edr\u00e1st v\u00e9gzi. Minden piszkos oldal k\u00e9s\u0151bb, egy checkpoint sor\u00e1n k\u00fcl\u00f6n folyamatok \u00e1ltal ker\u00fcl a lemezre ment\u00e9sre.<\/li>\n<\/ul>\n<p>\nTeh\u00e1t a hat\u00e1s az olvas\u00e1si m\u0171veletekre:<\/p>\n<ul>\n<li>Pozit\u00edv (disk IO), a f\u00e1jlrendszer blokkjainak olvasott sz\u00e1m\u00e1nak cs\u00f6kkent\u00e9se r\u00e9v\u00e9n.<\/li>\n<li>Negat\u00edv hat\u00e1s (CPU), a sparse f\u00e1jlokkal val\u00f3 munka sor\u00e1n a m\u0171k\u00f6d\u00e9shez sz\u00fcks\u00e9ges tov\u00e1bbi terhel\u00e9s miatt. Lehets\u00e9ges, hogy itt implicit m\u00f3don tov\u00e1bbi IO m\u0171veletek is megjelennek a sparse f\u00e1jlok bonyolultabb strukt\u00far\u00e1j\u00e1nak ment\u00e9s\u00e9hez (sajn\u00e1lom, de nem ismerem r\u00e9szletesen a sparse f\u00e1jlok m\u0171k\u00f6d\u00e9s\u00e9t).<\/li>\n<li>Negat\u00edv hat\u00e1s (CPU), a lapok dekompresszi\u00f3j\u00e1nak sz\u00fcks\u00e9gess\u00e9ge miatt.<\/li>\n<li>Nincs hat\u00e1s a \u00edr\u00e1si m\u0171veletekre.<\/li>\n<li>Hat\u00e1s a checkpoint folyamatra (itt minden hasonl\u00f3 a beolvas\u00e1si m\u0171veletekhez):<\/li>\n<li>Pozit\u00edv hat\u00e1s (disk IO), a f\u00e1jlrendszerre \u00edrt blokkok sz\u00e1m\u00e1nak cs\u00f6kkent\u00e9se miatt.<\/li>\n<li>Negat\u00edv hat\u00e1s (CPU, esetleg disk IO), a sparse f\u00e1jlokkal val\u00f3 munka miatt.<\/li>\n<li>Negat\u00edv hat\u00e1s (CPU), a lapok t\u00f6m\u00f6r\u00edt\u00e9s\u00e9nek sz\u00fcks\u00e9gess\u00e9ge miatt.<\/li>\n<\/ul>\n<p>\nMelyik serpeny\u0151 fog domin\u00e1lni? Ez nagyon az k\u00f6rnyezett\u0151l f\u00fcgg, de hajlok arra, hogy a disk page compression a legt\u00f6bb rendszeren ink\u00e1bb teljes\u00edtm\u00e9nyroml\u00e1shoz vezet. R\u00e1ad\u00e1sul m\u00e1s adatb\u00e1zis-kezel\u0151k tesztjei, amelyek hasonl\u00f3 megk\u00f6zel\u00edt\u00e9st haszn\u00e1lnak sparse f\u00e1jlokkal, teljes\u00edtm\u00e9nycs\u00f6kken\u00e9st mutatnak a t\u00f6m\u00f6r\u00edt\u00e9s bekapcsol\u00e1sakor.<\/p>\n<h4>Hogyan lehet bekapcsolni \u00e9s be\u00e1ll\u00edtani.<\/h4>\n<p>\nAhogy fentebb m\u00e1r eml\u00edtett\u00fck, az Apache Ignite minim\u00e1lis verzi\u00f3ja, amely t\u00e1mogatja a disk page compression-t: 2.8 \u00e9s csak Linux oper\u00e1ci\u00f3s rendszeren t\u00e1mogatott. A bekapcsol\u00e1s \u00e9s be\u00e1ll\u00edt\u00e1s a k\u00f6vetkez\u0151k\u00e9ppen t\u00f6rt\u00e9nik:<\/p>\n<ul>\n<li>A class-path-ban kell, hogy legyen az ignite-compression modul. Alap\u00e9rtelmez\u00e9s szerint az Apache Ignite disztrib\u00faci\u00f3j\u00e1ban a libs\/optional k\u00f6nyvt\u00e1rban tal\u00e1lhat\u00f3 \u00e9s nincs \u0432\u043a\u043b\u044e\u0447\u0435\u043d a class-path-ba. Egyszer\u0171en \u00e1thelyezheti a k\u00f6nyvt\u00e1rat egy szinttel feljebb a libs-be, \u00e9s akkor az ignite.sh futtat\u00e1sakor automatikusan be fog kapcsol\u00f3dni.<\/li>\n<li>A Persistenci\u00e1nak be kell kapcsolva lennie (Bekapcsolva a <code>DataRegionConfiguration.setPersistenceEnabled(true))<\/code>.<\/li>\n<li>Az oldal m\u00e9ret\u00e9nek nagyobbnak kell lennie, mint a f\u00e1jlrendszer blokkm\u00e9rete (be\u00e1ll\u00edthat\u00f3 a <code>DataStorageConfiguration.setPageSize()<\/code> ).<\/li>\n<li>Minden cache eset\u00e9ben, amelynek adatait t\u00f6m\u00f6r\u00edteni kell, a konfigur\u00e1ci\u00f3ban be kell \u00e1ll\u00edtani a t\u00f6m\u00f6r\u00edt\u00e9si m\u00f3dszert \u00e9s (opcion\u00e1lisan) a t\u00f6m\u00f6r\u00edt\u00e9si szintet (m\u00f3dszerek <code>CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h3>WAL t\u00f6m\u00f6r\u00edt\u00e9s<\/h3>\n<p><\/p>\n<h4>Hogyan m\u0171k\u00f6dik ez<\/h4>\n<p>\nMi az a WAL \u00e9s mire j\u00f3? Nagyon r\u00f6viden: ez egy napl\u00f3, amelybe minden olyan esem\u00e9ny beker\u00fcl, ami v\u00e9g\u00fcl megv\u00e1ltoztatja az oldal alap\u00fa t\u00e1rol\u00f3t. Els\u0151sorban a vissza\u00e1ll\u00edt\u00e1s lehet\u0151s\u00e9ge miatt sz\u00fcks\u00e9ges, ha bek\u00f6vetkezik egy hiba. Miel\u0151tt b\u00e1rmely m\u0171velet \u00e1tadn\u00e1 a vez\u00e9rl\u00e9st a felhaszn\u00e1l\u00f3nak, el\u0151sz\u00f6r fel kell jegyeznie az esem\u00e9nyt a WAL-ban, hogy a hiba eset\u00e9n k\u00e9pes legyen visszaj\u00e1tszani a napl\u00f3 alapj\u00e1n, \u00e9s helyre\u00e1ll\u00edtani a sikeres v\u00e1laszokat, m\u00e9g akkor is, ha ezek a m\u0171veletek m\u00e9g nem t\u00fckr\u00f6z\u0151dtek az oldal alap\u00fa t\u00e1rol\u00f3n a lemezen (feljebb m\u00e1r eml\u00edt\u00e9sre ker\u00fclt, hogy az oldal alap\u00fa t\u00e1rol\u00f3ra t\u00f6rt\u00e9n\u0151 t\u00e9nyleges \u00edr\u00e1s a \u201ecsom\u00f3pont\u201d nev\u0171 folyamat sor\u00e1n t\u00f6rt\u00e9nik, mely k\u00e9sleltetve t\u00f6rt\u00e9nik k\u00fcl\u00f6n folyamatok \u00e1ltal).<\/p>\n<p>A WAL-ban l\u00e9v\u0151 bejegyz\u00e9sek logikai \u00e9s fizikai kateg\u00f3ri\u00e1kra oszthat\u00f3k. A logikai bejegyz\u00e9sek maguk a kulcsok \u00e9s \u00e9rt\u00e9kek. A fizikai bejegyz\u00e9sek az oldal alap\u00fa t\u00e1rol\u00f3 v\u00e1ltoz\u00e1sait t\u00fckr\u00f6zik. M\u00edg a logikai bejegyz\u00e9sek m\u00e1s esetekben is hasznosak lehetnek, a fizikai bejegyz\u00e9sek kiz\u00e1r\u00f3lag a hiba eset\u00e9n t\u00f6rt\u00e9nt helyre\u00e1ll\u00edt\u00e1sra szolg\u00e1lnak, \u00e9s csak az utols\u00f3 sikeres csom\u00f3pont \u00f3ta sz\u00fcks\u00e9gesek. Itt nem mer\u00fcl\u00fcnk el a r\u00e9szletekben, \u00e9s nem magyar\u00e1zzuk el, hogy mi\u00e9rt m\u0171k\u00f6dik \u00edgy, de aki \u00e9rdekl\u0151dik, az hivatkozhat az Apache Ignite Wiki m\u00e1r eml\u00edtett cikk\u00e9re: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 a h\u00e1tt\u00e9rben<\/a><\/noindex>.<\/p>\n<p>Egy logikai \u00edr\u00e1sm\u0171h\u00f6z gyakran t\u00f6bb fizikai \u00edr\u00e1sm\u0171 tartozik. Teh\u00e1t p\u00e9ld\u00e1ul egy put m\u0171velet a cache-ben t\u00f6bb oldalt \u00e9rint a mem\u00f3ri\u00e1ban (az adatokat tartalmaz\u00f3 oldalt, az indexeket, a free-list oldalakat). N\u00e9h\u00e1ny szintetikus teszten nekem \u00fagy t\u0171nt, hogy a fizikai rekordok el\u00e9rt\u00e9k a WAL f\u00e1jl t\u00e9rfogat\u00e1nak ak\u00e1r 90%-\u00e1t is. Ebben az esetben csak nagyon r\u00f6vid ideig van sz\u00fcks\u00e9g\u00fck (alap\u00e9rtelmezett esetben a checkpointok k\u00f6z\u00f6tti intervallum \u2014 3 perc). Logikus lenne ezekt\u0151l az adatokt\u00f3l megszabadulni, miut\u00e1n elvesz\u00edtett\u00e9k aktu\u00e1lis relevanci\u00e1jukat. Ezt v\u00e9gzi a WAL kompresszi\u00f3 mechanizmusa, amely megszabad\u00edt a fizikai rekordokt\u00f3l \u00e9s zip form\u00e1tummal t\u00f6m\u00f6r\u00edti a megmaradt logikai \u00edr\u00e1sm\u0171veket, \u00edgy a f\u00e1jl m\u00e9rete jelent\u0151sen cs\u00f6kken (n\u00e9ha ak\u00e1r t\u00edzszeres\u00e9re).<\/p>\n<p>A WAL fizikailag t\u00f6bb, \u00e1lland\u00f3 m\u00e9ret\u0171 (alap\u00e9rtelmezett 64MB) szegmenst tartalmaz (alap\u00e9rtelmezett 10), amelyek k\u00f6rk\u00f6r\u00f6sen fel\u00fcl\u00edr\u00f3dnak. Amint a jelenlegi szegmens megtelik, a k\u00f6vetkez\u0151 szegmens ker\u00fcl kijel\u00f6l\u00e9sre, m\u00edg a megtelt szegmens egy k\u00fcl\u00f6n sz\u00e1lon arch\u00edv\u00e1l\u00e1sra ker\u00fcl. A WAL t\u00f6m\u00f6r\u00edt\u00e9se m\u00e1r m\u0171k\u00f6dik az arch\u00edv szegmensekkel. Egy k\u00fcl\u00f6n sz\u00e1l a checkpoint v\u00e9grehajt\u00e1s\u00e1t is nyomon k\u00f6veti, \u00e9s megkezdi a t\u00f6m\u00f6r\u00edt\u00e9st az arch\u00edv szegmensek eset\u00e9ben, amelyekre m\u00e1r nincs sz\u00fcks\u00e9g fizikailag.<\/p>\n<p><img decoding=\"async\" alt=\"Adatok t\u00f6m\u00f6r\u00edt\u00e9se Apache Ignite-ban. A Sber tapasztalatai\" src=\"\/wp-content\/uploads\/2020\/05\/ca8690ba7a350df9530f2ccf01c90975.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>Hat\u00e1s a teljes\u00edtm\u00e9nyre<\/h4>\n<p>\nMivel a WAL t\u00f6m\u00f6r\u00edt\u00e9se k\u00fcl\u00f6n sz\u00e1lon m\u0171k\u00f6dik, k\u00f6zvetlen hat\u00e1ssal nem szabadna, hogy legyen a v\u00e9grehajtott m\u0171veletekre. Ugyanakkor tov\u00e1bbi h\u00e1tt\u00e9rterhel\u00e9st ad a CPU-ra (t\u00f6m\u00f6r\u00edt\u00e9s) \u00e9s a lemezre (minden WAL szegmens archiv\u00e1l\u00e1sb\u00f3l val\u00f3 olvas\u00e1sa \u00e9s a t\u00f6m\u00f6r\u00edtett szegmensek \u00edr\u00e1sa), \u00edgy ha a rendszer a kapacit\u00e1s hat\u00e1r\u00e1n m\u0171k\u00f6dik, teljes\u00edtm\u00e9nyroml\u00e1st is okozhat.<\/p>\n<h4>Hogyan lehet bekapcsolni \u00e9s be\u00e1ll\u00edtani.<\/h4>\n<p>\nA WAL t\u00f6m\u00f6r\u00edt\u00e9st a k\u00f6vetkez\u0151 tulajdons\u00e1g haszn\u00e1lat\u00e1val lehet enged\u00e9lyezni: <code>WalCompactionEnabled<\/code> be. <code>DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)<\/code>). Ezenk\u00edv\u00fcl a DataStorageConfiguration.setWalCompactionLevel() met\u00f3dussal be\u00e1ll\u00edthat\u00f3 a t\u00f6m\u00f6r\u00edt\u00e9s m\u00e9rt\u00e9ke, ha az alap\u00e9rtelmezett \u00e9rt\u00e9k (BEST_SPEED) nem megfelel\u0151.<\/p>\n<h3>WAL oldal pillanatk\u00e9p t\u00f6m\u00f6r\u00edt\u00e9s<\/h3>\n<p><\/p>\n<h4>Hogyan m\u0171k\u00f6dik ez<\/h4>\n<p>\nKor\u00e1bban m\u00e1r meg\u00e1llap\u00edtottuk, hogy a WAL bejegyz\u00e9sek logikai \u00e9s fizikai t\u00edpusokra oszlanak. Minden egyes v\u00e1ltoz\u00e1sn\u00e1l az oldal mem\u00f3ri\u00e1j\u00e1ban fizikai WAL bejegyz\u00e9s keletkezik. A fizikai bejegyz\u00e9sek viszont k\u00e9t alkateg\u00f3ri\u00e1ra is oszthat\u00f3k: page snapshot record \u00e9s delta record. Minden alkalommal, amikor v\u00e1ltoztatunk az oldalon, \u00e9s tiszta \u00e1llapot\u00e1b\u00f3l piszkos \u00e1llapot\u00e1ba ford\u00edtjuk, a WAL-ban egy teljes m\u00e1solatot t\u00e1rolunk err\u0151l az oldalr\u00f3l (page snapshot record \u2014 az oldal pillanatk\u00e9pe). M\u00e9g ha csak egy b\u00e1jtot is v\u00e1ltoztatunk, a WAL egy, az oldal m\u00e9ret\u00e9n\u00e9l kiss\u00e9 nagyobb bejegyz\u00e9st t\u00e1rol. Ha viszont m\u00e1r egy piszkos oldalon v\u00e1ltoztatunk, a WAL-ban delta record keletkezik, amely csak a kor\u00e1bbi \u00e1llapothoz viszony\u00edtott v\u00e1ltoztat\u00e1sokat tartalmazza, nem az eg\u00e9sz oldalt. Mivel a piszkos \u00e1llapot\u00fa oldalak tiszt\u00e1ra t\u00f6rt\u00e9n\u0151 vissza\u00e1ll\u00edt\u00e1sa a checkpoint folyamat sor\u00e1n t\u00f6rt\u00e9nik, a checkpoint kezdet\u00e9n gyakorlatilag az \u00f6sszes fizikai bejegyz\u00e9s csak az oldal pillanatk\u00e9peib\u0151l \u00e1ll (mivel az \u00f6sszes oldal a checkpoint kezdet\u00e9n tiszta), majd a k\u00f6vetkez\u0151 checkpoint fel\u00e9 haladva a delta recordok ar\u00e1nya n\u00f6vekedni kezd, \u00e9s ism\u00e9t vissza\u00e1ll a k\u00f6vetkez\u0151 checkpoint kezdet\u00e9n. N\u00e9h\u00e1ny szintetikus teszt m\u00e9r\u00e9sei azt mutatt\u00e1k, hogy az oldal pillanatk\u00e9peinek ar\u00e1nya a teljes fizikai bejegyz\u00e9sek k\u00f6r\u00e9ben el\u00e9rheti a 90%-ot.<\/p>\n<p>A WAL page snapshot compression l\u00e9nyege, hogy az oldal pillanatk\u00e9peit a m\u00e1r megl\u00e9v\u0151 oldal t\u00f6m\u00f6r\u00edt\u00e9si eszk\u00f6z haszn\u00e1lat\u00e1val t\u00f6m\u00f6r\u00edtj\u00fck (l\u00e1sd disk page compression). Ebben az esetben a WAL bejegyz\u00e9sek sorban, append-only m\u00f3dban ker\u00fclnek t\u00e1rol\u00e1sra, \u00e9s nincs sz\u00fcks\u00e9g a bejegyz\u00e9sek f\u00e1jlrendszer blokkjainak hat\u00e1raihoz t\u00f6rt\u00e9n\u0151 k\u00f6t\u00e9s\u00e9re, ez\u00e9rt itt, ellent\u00e9tben a disk page compression mechanizmussal, egy\u00e1ltal\u00e1n nem sz\u00fcks\u00e9gesek sparse f\u00e1jlok, \u00edgy ez a mechanizmus nem csup\u00e1n Linux oper\u00e1ci\u00f3s rendszeren fog m\u0171k\u00f6dni. Tov\u00e1bb\u00e1, m\u00e1r nem sz\u00e1m\u00edt, hogy mennyire tudtuk t\u00f6m\u00f6r\u00edteni az oldalt. M\u00e9g ha csak 1 b\u00e1jtot is felszabad\u00edtottunk, az m\u00e1r egy pozit\u00edv eredm\u00e9ny, \u00e9s a WAL-ban elt\u00e1rolhatjuk a t\u00f6m\u00f6r\u00edtett adatokat, ellent\u00e9tben a disk page compression-nel, ahol a t\u00f6m\u00f6r\u00edtett oldalt csak akkor mentj\u00fck el, ha t\u00f6bb mint 1 f\u00e1jlrendszer blokkot szabad\u00edtottunk fel.<\/p>\n<p>Az oldalak j\u00f3l t\u00f6m\u00f6r\u00edthet\u0151 adatok, r\u00e9szar\u00e1nyuk a WAL \u00f6sszes mennyis\u00e9g\u00e9ben nagyon magas, \u00edgy a WAL f\u00e1jl form\u00e1tum\u00e1nak megv\u00e1ltoztat\u00e1sa n\u00e9lk\u00fcl jelent\u0151s m\u00e9retcs\u00f6kkent\u00e9st \u00e9rhet\u00fcnk el. A logikai bejegyz\u00e9sek t\u00f6m\u00f6r\u00edt\u00e9se form\u00e1tumv\u00e1ltoztat\u00e1st \u00e9s kompatibilit\u00e1s elveszt\u00e9s\u00e9t ig\u00e9nyeln\u00e9, p\u00e9ld\u00e1ul a k\u00fcls\u0151 felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra, akiket a logikai bejegyz\u00e9sek \u00e9rdekelhetnek, ugyanakkor nem hozna jelent\u0151s cs\u00f6kken\u00e9st a f\u00e1jl m\u00e9ret\u00e9ben.<\/p>\n<p>A WAL oldal pillanatfelv\u00e9tel t\u00f6m\u00f6r\u00edt\u00e9shez, ak\u00e1rcsak a lemezoldal t\u00f6m\u00f6r\u00edt\u00e9shez, a ZSTD, LZ4, Snappy t\u00f6m\u00f6r\u00edt\u00e9si algoritmusok, valamint a SKIP_GARBAGE m\u00f3d haszn\u00e1lhat\u00f3.<\/p>\n<h4>Hat\u00e1s a teljes\u00edtm\u00e9nyre<\/h4>\n<p>\nMint k\u00f6nnyen \u00e9szlelhet\u0151, a WAL oldal pillanatfelv\u00e9tel t\u00f6m\u00f6r\u00edt\u00e9s k\u00f6zvetlen aktiv\u00e1l\u00e1sa csak azokra a sz\u00e1lakra hat, amelyek adatokat \u00edrnak a lapmem\u00f3ri\u00e1ba, azaz azokra, amelyek m\u00f3dos\u00edtj\u00e1k az adatokat a gyors\u00edt\u00f3t\u00e1rakban. A WAL fizikai bejegyz\u00e9sekb\u0151l val\u00f3 olvas\u00e1s csak egyszeri alkalommal t\u00f6rt\u00e9nik, a csom\u00f3pont le\u00e1ll\u00e1s\u00e1t k\u00f6vet\u0151en (\u00e9s csak ha a le\u00e1ll\u00e1s a checkpoint folyamat\u00e1ban t\u00f6rt\u00e9nt).<\/p>\n<p>Ez a sz\u00e1lakra, amelyek adatokat m\u00f3dos\u00edtanak, a k\u00f6vetkez\u0151 m\u00f3don hat: negat\u00edv hat\u00e1st (CPU) okoz, mivel minden alkalommal t\u00f6m\u00f6r\u00edteni kell az oldalt, miel\u0151tt az lemezre ker\u00fcl, \u00e9s pozit\u00edv hat\u00e1st (diszk IO) a \u00edrand\u00f3 adatok mennyis\u00e9g\u00e9nek cs\u00f6kkent\u00e9s\u00e9vel. Itt teh\u00e1t minden egyszer\u0171: ha a rendszer teljes\u00edtm\u00e9nye a CPU \u00e1ltal kih\u00edvott, kis m\u00e9rt\u00e9k\u0171 degrad\u00e1ci\u00f3t tapasztalunk, ha a lemez \u00edr\u00e1s\/olvashat\u00f3s\u00e1ga, akkor n\u00f6veked\u00e9st.<\/p>\n<p>K\u00f6zvetetten a WAL m\u00e9ret\u00e9nek cs\u00f6kkent\u00e9se szint\u00e9n (pozit\u00edvan) hat azokra a sz\u00e1lakra, amelyek a WAL szegmenseit archiv\u00e1lj\u00e1k, \u00e9s a WAL t\u00f6m\u00f6r\u00edt\u00e9si sz\u00e1lakra.<\/p>\n<p>Val\u00f3s teljes\u00edtm\u00e9nytesztek a k\u00f6rnyezet\u00fcnkben szintetikus adatokon kis n\u00f6veked\u00e9st mutattak (a throughput 10%-15%-kal n\u0151tt, a latencia 10%-15%-kal cs\u00f6kkent).<\/p>\n<h4>Hogyan lehet bekapcsolni \u00e9s be\u00e1ll\u00edtani.<\/h4>\n<p>\nAz Apache Ignite minim\u00e1lis verzi\u00f3ja: 2.8. A bekapcsol\u00e1s \u00e9s be\u00e1ll\u00edt\u00e1s a k\u00f6vetkez\u0151 m\u00f3don t\u00f6rt\u00e9nik:<\/p>\n<ul>\n<li>A class-path-ban kell, hogy legyen az ignite-compression modul. Alap\u00e9rtelmez\u00e9s szerint az Apache Ignite disztrib\u00faci\u00f3j\u00e1ban a libs\/optional k\u00f6nyvt\u00e1rban tal\u00e1lhat\u00f3 \u00e9s nincs \u0432\u043a\u043b\u044e\u0447\u0435\u043d a class-path-ba. Egyszer\u0171en \u00e1thelyezheti a k\u00f6nyvt\u00e1rat egy szinttel feljebb a libs-be, \u00e9s akkor az ignite.sh futtat\u00e1sakor automatikusan be fog kapcsol\u00f3dni.<\/li>\n<li>A Persistenci\u00e1nak be kell kapcsolva lennie (Bekapcsolva a <code>DataRegionConfiguration.setPersistenceEnabled(true)<\/code>).<\/li>\n<li>A t\u00f6m\u00f6r\u00edt\u00e9si m\u00f3dot a k\u00f6vetkez\u0151 met\u00f3dussal kell megadni <code>DataStorageConfiguration.setWalPageCompression()<\/code>, alap\u00e9rtelmez\u00e9s szerint a t\u00f6m\u00f6r\u00edt\u00e9s ki van kapcsolva (DISABLED m\u00f3d).<\/li>\n<li>Opcion\u00e1lisan megadhatjuk a t\u00f6m\u00f6r\u00edt\u00e9s m\u00e9rt\u00e9k\u00e9t a k\u00f6vetkez\u0151 met\u00f3dussal <code>DataStorageConfiguration.setWalPageCompression()<\/code>, a megengedett \u00e9rt\u00e9kek minden egyes m\u00f3dszerhez a met\u00f3dus javadocj\u00e1ban tal\u00e1lhat\u00f3k.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Z\u00e1r\u00e1s<\/h3>\n<p>\nAz Apache Ignite-ban t\u00e1rgyalt adatt\u00f6m\u00f6r\u00edt\u00e9si mechanizmusok f\u00fcggetlen\u00fcl is haszn\u00e1lhat\u00f3k, de b\u00e1rmilyen kombin\u00e1ci\u00f3juk is megengedett. Az elv\u00fck meg\u00e9rt\u00e9se lehet\u0151v\u00e9 teszi, hogy meghat\u00e1rozzuk, mennyire felelnek meg a feladatainknak a k\u00f6rnyezet\u00fcnkben, \u00e9s mivel kell kompromisszumot k\u00f6tn\u00fcnk a haszn\u00e1latuk sor\u00e1n. A lemezoldali t\u00f6m\u00f6r\u00edt\u00e9s a f\u0151 t\u00e1rol\u00f3nak a t\u00f6m\u00f6r\u00edt\u00e9s\u00e9re szolg\u00e1l, \u00e9s \u00e1tlagos t\u00f6m\u00f6r\u00edt\u00e9si fokot biztos\u00edthat. A WAL oldal pillanatfelv\u00e9teli t\u00f6m\u00f6r\u00edt\u00e9s \u00e1tlagos t\u00f6m\u00f6r\u00edt\u00e9si fokot ad a WAL f\u00e1jloknak, mik\u00f6zben val\u00f3sz\u00edn\u0171leg m\u00e9g a teljes\u00edtm\u00e9nyt is jav\u00edtja. A WAL t\u00f6m\u00f6r\u00edt\u00e9s nem befoly\u00e1solja pozit\u00edvan a teljes\u00edtm\u00e9nyt, de maxim\u00e1lisan cs\u00f6kkenti a WAL f\u00e1jlok m\u00e9ret\u00e9t a fizikai rekordok elt\u00e1vol\u00edt\u00e1s\u00e1val.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47 Adatok t\u00f6m\u00f6r\u00edt\u00e9se az Apache Ignite-ban. A Sber tapasztalata | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/81936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=81936"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/81936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/81937"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=81936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=81936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=81936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}