Kompresimi i të dhënave në Apache Ignite. Eksperienca e Sberit

Kompresimi i të dhënave në Apache Ignite. Eksperienca e SberitKur punoni me sasi të mëdha të dhënash, ndonjëherë mund të lindë problemi i mungesës së hapësirës në disqe. Një nga mënyrat për të zgjidhur këtë problem është kompresimi, i cili lejon që të rritet kapaciteti i ruajtjes në të njëjtin ekip. Në këtë artikull do të shqyrtojmë se si funksionon kompresimi i të dhënave në Apache Ignite. Artikulli do të përshkruajë vetëm metodat e realizuara brenda produktit për kompresimin në disk. Metodat e tjera të kompresimit të të dhënave (përmes rrjetit, në memorie) si të realizuara ashtu edhe jo do të mbeten jashtë kornizës.

Pra, me modulin e aktivizuar të persistence, si rezultat i ndryshimeve të të dhënave në cache, Ignite fillon të shkruajë në disk:

  1. Përmbajtja e caches
  2. Dita e regjistrimit të parashikueshëm (Write Ahead Log, më pas thjesht WAL)

Për kompresimin e WAL ka një mekanizëm që ekziston prej kohësh, i quajtur kompresimi i WAL. Në Apache Ignite 2.8 që sapo doli në treg, u shfaqën edhe dy mekanizma që lejojnë kompresimin e të dhënave në disk, kjo është kompresimi i faqes së diskut për kompresimin e përmbajtjes së caches dhe kompresimi i snapshot-it të faqes WAL për kompresimin e disa regjistrimeve WAL. Më poshtë do të flasim më shumë për këta tre mekanizma.

Kompresimi i faqes së diskut

Si funksionon

Fillimi, le të flasim shumë shkurt për mënyrën si e ruan Ignite të dhënat. Përdoret memoria me faqe për ruajtje. Madhësia e faqes përcaktohet në fillim të nodit dhe nuk mund të ndryshohet në faza të mëvonshme; gjithashtu, madhësia e faqes duhet të jetë një fuqi e dyshes dhe shumëfish i madhësisë së bllokut të sistemit të skedarëve. Faqet ngjiten në RAM nga disku sipas nevojës, madhësia e të dhënave në disk mund të tejkalojë vëllimin e RAM-së së dedikuar. Në rast se nuk ka mjaft vend në RAM për të ngarkuar një faqe nga disku, faqet e vjetra, që nuk përdoren më, do të zëvendësohen nga RAM.

TĂ« dhĂ«nat ruhen nĂ« disk nĂ« kĂ«tĂ« formĂ«: pĂ«r çdo parti tĂ« çdo grupi cache krijohet njĂ« skedar i veçantĂ«, nĂ« kĂ«tĂ« skedar, nĂ« rendin rritĂ«s tĂ« indeksit, njĂ«ra pas tjetrĂ«s ndodhen faqet. Identifikuesi i plotĂ« i faqes pĂ«rfshin identifikuesin e grupit cache, numrin e partisĂ« dhe indeksin e faqes nĂ« skedar. Prandaj, pĂ«rmes identifikuesit tĂ« plotĂ« tĂ« faqes, ne mund tĂ« pĂ«rcaktojmĂ« nĂ« mĂ«nyrĂ« unike skedarin dhe offsetin nĂ« skedar pĂ«r secilĂ«n faqe. mĂ« shumĂ« rreth strukturĂ«s sĂ« memories me faqe mund tĂ« lexoni nĂ« artikullin nĂ« Apache Ignite Wiki: Ignite Persistent Store — nĂ«n kapuçin.

Mekanizmi i kompresimit të faqeve të diskut, siç mund të kuptohet nga emri, funksionon në nivelin e faqeve. Kur aktivizohet ky mekanizëm, puna me të dhënat në RAM bëhet siç është, pa asnjë lloj kompresimi, por në momentin e ruajtjes së faqeve nga RAM në disk, ndodh kompresimi i tyre.

Por kompresimi i secilës faqe veç e veç nuk është zgjidhje për problemin; duhet të gjejmë një mënyrë për të zvogëluar madhësinë e skedave përfundimtare me të dhëna. Nëse madhësia e faqes nuk është më fikse, nuk mund të shkruajmë faqet në skedë njëra pas tjetrës, pasi kjo mund të sjellë një sërë problemesh:

  • Nuk do tĂ« jemi nĂ« gjendje tĂ« llogarisim offset-in pĂ«rmes indeksit tĂ« faqes ku ndodhet ajo nĂ« skedĂ«.
  • Nuk Ă«shtĂ« e qartĂ« se çfarĂ« duhet tĂ« bĂ«jmĂ« me faqet qĂ« ndodhen jo nĂ« fund tĂ« skedĂ«s dhe ndryshojnĂ« madhĂ«sinĂ« e tyre. NĂ«se madhĂ«sia e faqes zvogĂ«lohet, hapĂ«sira qĂ« ajo lirohet humbet. NĂ«se madhĂ«sia e faqes rritet, nevojitet tĂ« kĂ«rkojmĂ« njĂ« vend tĂ« ri pĂ«r tĂ« nĂ« skedĂ«.
  • NĂ«se faqja zhvendoset nĂ« njĂ« numĂ«r qĂ« nuk Ă«shtĂ« shumĂ«fish i madhĂ«sisĂ« sĂ« bllokut tĂ« sistemit tĂ« skedarĂ«ve, pĂ«r ta lexuar ose shkruar atĂ« do tĂ« nevojitet tĂ« preken njĂ« bllok mĂ« shumĂ«, çka mund tĂ« çojĂ« nĂ« degradimin e performancĂ«s.

Për të mos e zgjidhur këtë problem në nivelin tuaj, kompresimi i faqeve të diskut në Apache Ignite përdor një mekanizëm të sistemit të skedarëve të quajtur skedarë të rrallë. Skedari i rrallë (sparse) është një skedar në të cilin disa zona të mbushura me zero mund të shënohen si "humbje". Kështu, blloket e sistemit të skedarëve për ruajtjen e këtyre humbjeve nuk do të alokohen, duke arritur kështu një kursim hapësire në disk.

ËshtĂ« logjike qĂ« pĂ«r tĂ« liruar njĂ« blok tĂ« sistemit tĂ« skedarĂ«ve, madhĂ«sia e vrimĂ«s duhet tĂ« jetĂ« mĂ« e madhe ose e barabartĂ« me blokun e sistemit tĂ« skedarĂ«ve, çka vĂ« njĂ« kufizim shtesĂ« mbi madhĂ«sinĂ« e faqeve nĂ« Apache Ignite: qĂ« kompresimi tĂ« ketĂ« ndonjĂ« efekt, Ă«shtĂ« e nevojshme qĂ« madhĂ«sia e faqes tĂ« jetĂ« rreptĂ«sisht mĂ« e madhe se madhĂ«sia e blokut tĂ« sistemit tĂ« skedarĂ«ve. NĂ«se madhĂ«sia e faqes Ă«shtĂ« e barabartĂ« me madhĂ«sinĂ« e blokut, ne kurrĂ« nuk do tĂ« mund tĂ« lirojnĂ« asnjĂ« bllok, sepse pĂ«r tĂ« liruar njĂ« bllok tĂ« vetĂ«m Ă«shtĂ« e nevojshme qĂ« faqja e kompresuar tĂ« zĂ«rĂ« 0 byte. NĂ«se madhĂ«sia e faqes Ă«shtĂ« e barabartĂ« me madhĂ«sinĂ« e 2 ose 4 blloqeve, ne tashmĂ« do tĂ« mund tĂ« lirojmĂ« tĂ« paktĂ«n njĂ« bllok nĂ«se faqja jonĂ« kompresohet tĂ« paktĂ«n nĂ« 50% ose 75% pĂ«rkatĂ«sisht.

Pra, përmbledhja përfundimtare e funksionimit të mekanizmit: Kur shkruhet një faqe në disk, bëhet përpjekje për ta kompresuar faqen. Nëse madhësia e faqes së kompresuar lejon lirimin e një ose më shumë blloqeve të sistemit të skedarëve, faqja shkruhet në formë të kompresuar, dhe në vendin e blloqeve të lira shpërthehet një "vrimë" (kryhet thirrja sistemore fallocate() me flamurin «punch hole»). Nëse dimensioni i faqes së tkurrur nuk lejon lëshimin e blloqeve, faqja ruhet ashtu siç është, në formë të pa tkurrur. Të gjitha offsetet e faqeve llogariten gjithashtu si pa kompresim, duke shumëzuar indeksin e faqes me madhësinë e faqes. Nuk kërkohet asnjë relokim i faqeve me forcat e veta. Offsetet e faqeve ashtu si pa kompresim bien brenda kufijve të blloqeve të sistemit të skedarit.

Kompresimi i të dhënave në Apache Ignite. Eksperienca e Sberit

Në realizimin e tanishëm, Ignite është në gjendje të punojë me skedarë sparse vetëm nën OS Linux, përkatësisht kompresimi i faqes së diskut mund të aktivizohet vetëm kur përdoret Ignite në këtë sistem operativ.

Algoritmet e kompresimit që mund të përdoren për kompresimin e faqes së diskut: ZSTD, LZ4, Snappy. Për më tepër, ka një mënyrë pune (SKIP_GARBAGE), në të cilën vetëm hidhen vendet e pafshirë në faqe pa aplikuar kompresim në të dhënat e mbetura, që lejon të zvogëlohet ngarkesa në CPU krahasuar me algoritmet e përmendura më parë.

Ndikimi në performancë

Fatkeqësisht nuk kam realizuar matje të performancës në ambiente reale, pasi nuk parashikohet përdorimi i këtij mekanizmi në prodhim, por mund të diskutojmë në mënyrë teorike se ku do të humbim dhe ku do të fitonim.

Për këtë na nevojitet të kujtojmë se si realizohet leximi dhe shkruarja e faqeve gjatë qasjes ndaj tyre:

  • Kur kryhet operacioni i leximit, fillimisht kĂ«rkohet nĂ« RAM; nĂ«se kĂ«rkimi dĂ«shtoi, faqja ngarkohet nĂ« RAM nga disku nga tĂ« njĂ«jtin proces qĂ« kryen leximin.
  • Kur kryhet operacioni i shkruarjes, faqja nĂ« RAM dĂ«shmohet si e ndyrĂ«, ndĂ«rkohĂ« qĂ« ruajtja fizike e faqes nĂ« disk nuk ndodh menjĂ«herĂ« nĂ« procesin qĂ« realizon shkruarjen. TĂ« gjitha faqet e ndyrĂ« ruhen nĂ« disk mĂ« vonĂ« gjatĂ« procesit tĂ« pikĂ«-kontrollit nga procese tĂ« ndara.

Pra, ndikimi në operacionet e leximit:

  • Pozitiv (disk IO), pĂ«r shkak tĂ« reduktimit tĂ« numrit tĂ« blloqeve tĂ« lexuar nga sistemi i skedarĂ«ve.
  • Negative (CPU), due to the additional load required by the operating system to work with sparse files. It is also possible that additional IO operations will implicitly occur to save the more complex structure of the sparse file (I am unfortunately not familiar with all the details of how sparse files work).
  • Negative (CPU), due to the need to decompress pages.
  • There is no impact on write operations.
  • Effect on the checkpoint process (here everything is similar to read operations):
  • Positive (disk IO), due to the reduction in the number of blocks written to the file system.
  • Negative (CPU, possibly disk IO), due to working with sparse files.
  • Negative (CPU), due to the need to compress pages.

Which side of the scale will tip? This largely depends on the environment, but I lean towards the belief that disk page compression will lead to performance degradation in most systems. Moreover, tests on other databases using a similar approach with sparse files show a decrease in performance when compression is enabled.

How to enable and configure

Siç është përmendur më parë, versioni minimal i Apache Ignite që mbështet kompresimin e faqeve të diskut është 2.8 dhe mbështetet vetëm nga sistemi operativ Linux. Aktivimi dhe konfigurimi realizohen si më poshtë:

  • NĂ« class-path duhet tĂ« jetĂ« moduli ignite-compression. NĂ« default, ai ndodhet nĂ« shpĂ«rndarjen e Apache Ignite nĂ« katalogun libs/optional dhe nuk pĂ«rfshihet nĂ« class-path. Mund ta transferoni thjesht katalogun njĂ« nivel lart nĂ« libs dhe atĂ«herĂ«, gjatĂ« ekzekutimit pĂ«rmes ignite.sh, do tĂ« pĂ«rfshihet automatikisht.
  • Persistenca duhet tĂ« jetĂ« e mundĂ«suar (Aktivizohet pĂ«rmes DataRegionConfiguration.setPersistenceEnabled(true)).
  • KĂ«ndi i faqes duhet tĂ« jetĂ« mĂ« i madh se madhĂ«sia e bllokut tĂ« sistemit tĂ« skedarĂ«ve (mund tĂ« pĂ«rcaktohet pĂ«rmes DataStorageConfiguration.setPageSize() ).
  • PĂ«r çdo cache, tĂ« dhĂ«nat e tĂ« cilit duhet tĂ« kompresohen, Ă«shtĂ« e nevojshme tĂ« konfigurohet metoda e kompresimit dhe (opsionale) niveli i kompresimit nĂ« konfiguracion (metodat CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()).

Kompaktimi i WAL

Si funksionon

ÇfarĂ« Ă«shtĂ« WAL dhe pĂ«rse Ă«shtĂ« e nevojshme? ShumĂ« shkurt: Ă«shtĂ« njĂ« regjistĂ«r ku regjistrohen tĂ« gjitha ngjarjet qĂ« ndyshojnĂ« nĂ« fund depozitimin e faqes. Ai Ă«shtĂ« i nevojshĂ«m kryesisht pĂ«r mundĂ«sinĂ« e rikuperimit nĂ« rast rĂ«nieje. Çdo operacion, para se t'i japĂ« kontrollin pĂ«rdoruesit, duhet fillimisht tĂ« regjistrojĂ« njĂ« ngjarje nĂ« WAL, nĂ« mĂ«nyrĂ« qĂ« nĂ« rast rĂ«nieje tĂ« ketĂ« mundĂ«si tĂ« riprodhojĂ« nĂ«pĂ«rmjet regjistrit dhe tĂ« rikuperojĂ« tĂ« gjithĂ« operacionet pĂ«r tĂ« cilat pĂ«rdoruesi ka marrĂ« njĂ« pĂ«rgjigje tĂ« suksesshme, edhe nĂ«se kĂ«to operacione nuk kanĂ« arritur tĂ« reflektohen nĂ« depozitimin e faqes nĂ« disk (mĂ« sipĂ«r Ă«shtĂ« pĂ«rshkruar se regjistrimi efektiv nĂ« depozitimin e faqes realizohet nĂ« njĂ« proces tĂ« quajtur "checkpoint" me njĂ« vonesĂ« nga disa rrjedha tĂ« veçanta).

ShĂ«nimet nĂ« WAL ndahen nĂ« logjike dhe fizike. Logjike janĂ« vetĂ« çelĂ«sat dhe vlerat. Fizike pasqyrojnĂ« ndryshimet e faqeve nĂ« magazinĂ«n e faqeve. NĂ«se shĂ«nimet logjike mund tĂ« jenĂ« tĂ« dobishme pĂ«r raste tĂ« tjera, shĂ«nimet fizike janĂ« tĂ« nevojshme vetĂ«m pĂ«r rikuperimin nĂ« rast tĂ« rĂ«nies dhe kĂ«rkojnĂ« shĂ«nime vetĂ«m nga pika e fundit e suksesshme tĂ« kontrollit. KĂ«tu nuk do tĂ« thellohemi nĂ« detaje dhe tĂ« shpjegojmĂ« pse kjo funksionon kĂ«shtu, por ata qĂ« janĂ« tĂ« interesuar mund tĂ« referohen nĂ« artikullin e pĂ«rmendur mĂ« parĂ« nĂ« Apache Ignite Wiki: Ignite Persistent Store — nĂ«n kapuçin.

Një regjistër logjik shpesh ka disa regjistra fizikë. Pra, për shembull, një operacion 'put' në cache prek disa faqe në memorjen e faqeve (faqen me të dhëna, faqet me indekse, faqet me lista të lira). Në disa teste sintetike, kam vënë re se regjistrat fizikë zinin deri në 90% të volumit të skedarit WAL. Megjithatë, ata nevojiten për një kohë shumë të shkurtër (si parazgjedhje, intervali midis pikave të kontrollit është 3 minuta). Ishte logjike që të hiqeshin këta të dhëna pas humbjes së rëndësisë së tyre. Pikërisht këtë bëjnë mekanizmat e kompresimit WAL; ata heqin regjistrat fizikë dhe shkrin regjistrat logjikë të mbetur me zip, duke reduktuar ndjeshëm madhësinë e skedarit (ndonjëherë në dhjetëra herë).

WAL fizikisht përbëhet nga disa segmente (për default 10) me madhësi fikse (për default 64MB), të cilat ripërzihen në mënyrë ciklike. Sa herë që segmenti aktual mbushet, i caktohet segmenti pasues, dhe segmenti i mbushur kopjohet në arkiv me një rrjedhë të veçantë. Kompaktimi i WAL tashmë punon me segmentet arkivore. Gjithashtu, në një rrjedhë të veçantë, ai ndjek realizimin e pikës kontrolli dhe fillon kompresimin për segmentet arkivore, për të cilat regjistrimet fizike nuk janë më të nevojshme.

Kompresimi i të dhënave në Apache Ignite. Eksperienca e Sberit

Ndikimi në performancë

Duke qenë se kompaktimi i WAL punon në një rrjedhë të veçantë, nuk duhet të ketë ndikim të drejtpërdrejtë në operacionet që ekzekutohen. Megjithatë, ai jep një ngarkesë shtesë në sfond për CPU (kompresimi) dhe diskun (leximi i çdo segmenti WAL nga arkiva dhe shkruajti i segmenteve të kompresuar), prandaj nëse sistemi punon në kufijtë e mundësive, ai gjithashtu do të çojë në degradimin e performancës.

How to enable and configure

Mund të aktivizoni kompaktimin e WAL me anë të pronës WalCompactionEnabled në DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)). Gjithashtu, me metodën DataStorageConfiguration.setWalCompactionLevel() mund të përcaktoni nivelin e kompresimit, nëse nuk jeni të kënaqur me vlerën e paracaktuar (BEST_SPEED).

Kompresimi i snapshot-it të faqes WAL

Si funksionon

Kemi zbuluar tashmĂ« se regjistrimet WAL ndahen nĂ« logjike dhe fizike. PĂ«r çdo ndryshim nĂ« secilĂ«n faqe nĂ« memorien e faqes krijohet njĂ« regjistĂ«r fizik WAL. Regjistrimet fizike po ashtu ndahen nĂ« dy nĂ«nkategoritĂ«: regjistri i snapshots tĂ« faqeve dhe regjistri delta. Çdo herĂ« qĂ« ndryshojmĂ« diçka nĂ« faqe dhe e çojmĂ« atĂ« nga njĂ« gjendje tĂ« pastĂ«r nĂ« njĂ« tĂ« ndotur, nĂ« WAL ruhet njĂ« kopje e plotĂ« e kĂ«saj faqeje (regjistri i snapshots tĂ« faqeve). Edhe nĂ«se ne kemi ndryshuar vetĂ«m njĂ« byte, nĂ« WAL do tĂ« ruhet njĂ« regjistĂ«r qĂ« Ă«shtĂ« pak mĂ« i madh se madhĂ«sia e faqes. NĂ«se ndryshojmĂ« diçka nĂ« njĂ« faqe qĂ« tashmĂ« Ă«shtĂ« e ndotur, atĂ«herĂ« nĂ« WAL formohet regjistri delta, nĂ« tĂ« cilin janĂ« reflektuar vetĂ«m ndryshimet krahasuar me gjendjen e mĂ«parshme tĂ« faqes, por jo e gjithĂ« faqja. Duke qenĂ« se rinovimi i gjendjeve tĂ« faqeve nga e ndotura nĂ« tĂ« pastĂ«r realizohet gjatĂ« procesit tĂ« kontrollit, menjĂ«herĂ« pas fillimit tĂ« kontrollit praktikisht tĂ« gjithĂ« regjistrat fizikĂ« do tĂ« pĂ«rbĂ«hen vetĂ«m nga snapshots tĂ« faqeve (sepse tĂ« gjitha faqet menjĂ«herĂ« pas fillimit tĂ« kontrollit janĂ« tĂ« pastra). MĂ« pas, ndĂ«rsa afrohemi drejt kontrollit tjetĂ«r, shuma e regjistrave delta fillon tĂ« rritet dhe pĂ«rsĂ«ri ri-inizializohet nĂ« fillimin e kontrollit tjetĂ«r. Matjet nĂ« disa teste sintetike kanĂ« treguar se shuma e snapshots tĂ« faqeve nĂ« vĂ«llimin e pĂ«rgjithshĂ«m tĂ« regjistrave fizikĂ« arrin nĂ« 90%.

Ideja e kompresimit të snapshot-eve të faqes WAL qëndron në kompresimin e snapshot-eve të faqeve duke përdorur një mjet tashmë të gatshëm për kompresim (shih kompresimin e faqeve të diskut). Kështu, në regjistrimet e WAL ruhet njëpasnjërisht në një mënyrë append-only dhe nuk ka nevojë për lidhjen e regjistrimeve me kufijtë e blloqeve të sistemit të skedarëve, prandaj këtu, ndryshe nga mekanizmi i kompresimit të faqeve të diskut, nuk kemi nevojë për skedarë sparse, kështu që ky mekanizëm do të funksionojë jo vetëm në OS Linux. Për më tepër, nuk është e rëndësishme se sa shumë arritëm të comprimojmë faqen. Edhe nëse çlirojmë 1 byte, kjo është një rezultat pozitiv dhe ne mund të ruajmë të dhënat e kompresuara në WAL, ndryshe nga kompresimi i faqeve të diskut, ku ruajmë faqen e kompresuar vetëm nëse çliruar më shumë se 1 bllok të sistemit të skedarëve.

Faqet — janĂ« tĂ« dhĂ«na qĂ« kompresohen mirĂ«, pjesa e tyre nĂ« volumin e pĂ«rgjithshĂ«m tĂ« WAL Ă«shtĂ« shumĂ« e lartĂ«, kĂ«shtu qĂ«, duke mos ndryshuar formatin e skedarit WAL, mund tĂ« arrijmĂ« njĂ« reduktim tĂ« rĂ«ndĂ«sishĂ«m tĂ« madhĂ«sisĂ« sĂ« tij. Kompresimi, pĂ«rfshirĂ« regjistrat logjikĂ«, do tĂ« kĂ«rkonte njĂ« ndryshim tĂ« formatit dhe humbje tĂ« kompatibilitetit, pĂ«r shembull, pĂ«r konsumatorĂ«t e jashtĂ«m, tĂ« cilĂ«ve mund t'u interesojnĂ« regjistrat logjikĂ«, pa sjellĂ« njĂ« ulje tĂ« dukshme tĂ« volumin tĂ« skedarit.

Ashtu si për kompresimin e faqeve disk, për kompresimin e skenave të faqeve WAL mund të përdoren algoritme kompresimi ZSTD, LZ4, Snappy, si dhe moda SKIP_GARBAGE.

Ndikimi në performancë

Siç është e lehtë të vërehet, aktivizimi i drejtpërdrejtë i kompresimit të skenave të faqeve WAL ndikon vetëm në rrjedhat që shkruajnë të dhëna në memory page, domethënë në ato rrjedha që ndryshojnë të dhënat në cache. Leximi i regjistrave fizikë WAL ndodh vetëm një herë, në momentin e ngjitjes së nodit pas rënies (dhe vetëm në rastin e rënies gjatë kontrollit).

Përfluxet që ndryshojnë të dhënat ndikojnë kështu: ne marrim një efekt negativ (CPU) për shkak të nevojës për të kompresuar faqen përpara se ta shkruajmë në disk dhe një efekt pozitiv (disk IO) për shkak të reduktimit të sasisë së të dhënave që shkruhen. Prandaj, këtu është e thjeshtë; nëse performanca e sistemit është e varur nga CPU, kemi një degradim të vogël, ndërsa nëse është e varur nga hyrja/dalja diskore, kemi një rritje.

Indirekt, zvogëlimi i madhësisë së WAL gjithashtu ndikon (pozitivisht) në ato flukse që hedhin në arkiv segmentet e WAL dhe në flukset e kompresimit të WAL.

Testet e vërteta të performancës në mjedisin tonë me të dhëna sintetikë treguan një rritje të vogël (transmetimi u rrit me 10%-15%, ndërsa latenca u zvogëlua me 10%-15%).

How to enable and configure

Versioni minimal i Apache Ignite: 2.8. Aktivizimi dhe konfigurimi bëhet si më poshtë:

  • NĂ« class-path duhet tĂ« jetĂ« moduli ignite-compression. NĂ« default, ai ndodhet nĂ« shpĂ«rndarjen e Apache Ignite nĂ« katalogun libs/optional dhe nuk pĂ«rfshihet nĂ« class-path. Mund ta transferoni thjesht katalogun njĂ« nivel lart nĂ« libs dhe atĂ«herĂ«, gjatĂ« ekzekutimit pĂ«rmes ignite.sh, do tĂ« pĂ«rfshihet automatikisht.
  • Persistenca duhet tĂ« jetĂ« e mundĂ«suar (Aktivizohet pĂ«rmes DataRegionConfiguration.setPersistenceEnabled(true)).
  • Duhet tĂ« caktohet njĂ« mĂ«nyrĂ« kompresimi me anĂ« tĂ« metodĂ«s DataStorageConfiguration.setWalPageCompression(), si parazgjedhje kompresimi Ă«shtĂ« i çaktivizuar (nata DISABLED).
  • Opsionalisht, mund tĂ« caktosh shkallĂ«n e kompresimit me anĂ« tĂ« metodĂ«s DataStorageConfiguration.setWalPageCompression(), vlerat e pranueshme pĂ«r secilĂ«n nga mĂ«nyrat mund tĂ« shihen nĂ« javadoc tĂ« metodĂ«s.

Përfundimi

Mekanizmat e shqyrtuar të kompresimit të të dhënave në Apache Ignite mund të përdoren në mënyrë të pavarur nga njëri-tjetri, por gjithashtu janë të pranueshme çdo kombinim i tyre. Kuptimi i parimeve të funksionimit të tyre do të lejojë të përcaktohet se sa mirë i përshtaten detyrave tuaja në ambientin tuaj dhe çfarë do të duhet të sakrifikoni gjatë përdorimit të tyre. Kompresimi i faqeve disk është i destinuar për kompresimin e ruajtjes kryesore dhe mund të ofrojë një shkallë mesatare të kompresimit. Kompresimi i snapshots të faqeve WAL do të ofrojë një shkallë mesatare të kompresimit për skedarët WAL, për më tepër, ka të ngjarë ta përmirësojë performancën. Kompaktimi WAL nuk do të ndikojë pozitivisht në performancë, por do të reduktojë sa më shumë që të jetë e mundur madhësinë e skedarëve WAL duke eliminuar regjistrimet fizike.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster