Organizata Apache Software Foundation ka prezantuar publikimin e sistemit të menaxhimit të të dhënave të shpërndara Apache Cassandra 4.0, e cila i përket klasës noSQL dhe ka për qëllim krijimin e depozita të shkallëzuara dhe të besueshme për sasi të mëdha të dhënash, të ruajtura në formën e një matrice asociative (hash). Publikimi i Cassandra 4.0 është konsideruar i gatshëm për zbatime të punës dhe është testuar tashmë në infrastruktura të kompanive si Amazon, Apple, DataStax, Instaclustr, iland dhe Netflix me klasterë që përfshijnë më shumë se 1000 nyje. Kodi i projektit është shkruar në gjuhën Java dhe shpërndahet nën licencën Apache 2.0.
Fillimisht, sistemit të menaxhimit të të dhënave Cassandra i është zhvilluar nga kompania Facebook dhe në vitin 2009 u dorëzua nën mbikëqyrjen e fondit Apache. Zgjidhjet industriale të bazuara në Cassandra janë implementuar për të siguruar funksionimin e shërbimeve të kompanive si Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit dhe Twitter. Për shembull, infrastruktura e ruajtjes e zhvilluar nga kompania Apple mbi bazën e Apache Cassandra ka më shumë se një mijë klasterë, duke përfshirë 160 mijë nyje dhe që ruajnë më shumë se 100 petabajt të dhënash. Kompania Huawei përdor më shumë se 300 klasterë Apache Cassandra, përfshirë 30 mijë nyje, ndërsa në Netflix ka më shumë se 100 klasterë, duke përfshirë 10 mijë nyje dhe duke përpunuar më shumë se një trilion kërkesa në ditë.
Sistemi i menaxhimit të të dhënave Cassandra kombinon një sistem të plotë të shpërndarë të hashes Dynamo, që ofron praktisht shkallëzim linear me rritjen e volumit të të dhënave. Cassandra përdor një model ruajti të dhënash të bazuar në familjet e kolonave (ColumnFamily), e cila dallon nga sistemet si memcachedb, të cilat ruajnë të dhënat vetëm në lidhje çelës/valë, duke ofruar mundësinë për të organizuar ruajtjen e hash-eve me disa nivele të thellësisë. Për të lehtësuar ndërveprimin me bazën e të dhënave mbështetet gjuha e formimit të kërkesave të strukturuara CQL (Cassandra Query Language), që i ngjan SQL, por është e kufizuar në funksionalitet. Nga mundësitë, mund të përmendet mbështetjes për hapësirat e emrave dhe familjet e kolonave, krijimin e indekseve nëpërmjet shprehjes 'CREATE INDEX'.
Sistemi i menaxhimit të të dhënave lejon krijimin e ruajtjeve të qëndrueshme ndaj dështimeve: të dhënat e vendosura në bazën e të dhënave automatikisht kopjohen në disa nyje të rrjetit të shpërndarë, i cili mund të mbulojë të ndryshme qendra të përpunimit të të dhënave. Në rast të një dështimi të nyjës, funksionet e saj kapen në kohë reale nga nyje të tjera. Shtimi i nyjeve të reja në klaster dhe azhurnimi i versionit të Cassandra bëhet në kohë reale, pa ndërhyrje manuale shtesë dhe pa rikonfigurimin e nyjeve të tjera. Të dyjat me mbështetje për CQL janë përgatitur për gjuhët Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ dhe JavaScript (Node.js).
TĂ« rejat kryesore:
- Ka rritur performancën dhe shkallëzimin. Ka rritur efikasitetin e shkëmbimit të të dhënave në formatin SSTable (Sorted Strings Table) midis nyjeve. Protokolli i shkëmbimit të mesazheve midis nyjeve është optimizuar (Internode Messaging Protocol). Shpejtësia e transferimit të rrjedhave të dhënash midis nyjeve është rritur deri në 5 herë (në mënyrë të kryesore për shkak të aplikimit të teknikës Zero Copy dhe transferimit të SSTable-ve të tëra), dhe kapaciteti për operacione leximi dhe shkruajtur deri në 25%. Procesi i rikuperimit inkremental është optimizuar. Vonesat për shkak të pezullimit të mbledhësit të mbeturinave janë reduktuar në disa milisekonda.
- Ka shtuar mbështetje për logun e auditit, i cili lejon ndjekjen e operacioneve të autentifikimit të përdoruesve dhe të gjitha kërkesat që kryhen CQL.
- Ka shtuar mundësinë e mbajtjes së një logu binar të plotë të kërkesave, i cili lejon ruajtjen e gjithë trafikut të kërkesave dhe përgjigjeve. Për menaxhimin janë ofruar komandat 'nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog', ndërsa për analizën e logut ofrohet utilitari fqltool. Komandat janë ofruar për të transformuar logun në një format të lexueshëm (Dump), krahasimin e aktiviteteve (Compare) dhe rinisjen (Replay) për analizë me riprodhimin e kushteve që janë karakteristike për ngarkesën reale.
- Ka shtuar mbështetje për tabela virtuale, të cilat nuk pasqyrojnë të dhënat e ruajtura në SSTables, por informacionin e paraqitur përmes API-t (metrika e performancës, informacion mbi cilësimet, përmbajtja e caches, informacion mbi klientët e lidhur, etj.).
- Ka rritur efikasitetin e ruajtjes së të dhënave në formë të comprimit, duke lejuar uljen e konsumit të hapësirës në disqet dhe rritjen e performancës së operacioneve të leximit.
- Të dhënat që i përkasin hapësirës sistemike të çelësave (system.*) tani vendosen automatikisht në direktorinë e parë në vend të shpërndarjes në të gjitha direktoritë me të dhëna, duke ruajtur funksionalitetin e nyjës në rast të dështimit të një nga disqet shtesë.
- Këtu është shtuar mbështetje eksperimentale për replikimin e përkohshëm (Transient Replication) dhe kuorumet e lehta (Cheap Quorums). Replikat e përkohshme nuk ruajnë të dhëna të plota dhe përdorin rikuperim inkremental për t'u koordinuar me replikat e plota. Kuorumet e lehta realizojnë optimizimin e operacioneve të shkruar, ku shkrimi në replikat e përkohshme nuk bëhet derisa të jetë i disponueshëm një set i mjaftueshëm i replikave të plota.
- Këtu është shtuar mbështetje eksperimentale për Java 11.
- Këtu është shtuar një opsion eksperimental për të krahasuar të gjitha pemët Merkle (Merkle Tree). Për shembull, aktivizimi i opsionit në një klaster me 3 nyje, në të cilin dy replikat janë të njëjta dhe një është e vjetruar, do të rezultojë në përditësimin e replikës së vjetruar duke përdorur vetëm një operacion kopjimi të replikës aktuale.
- Këtu janë shtuar funksionet e reja currentTimestamp, currentDate, currentTime dhe currentTimeUUID.
- Këtu është shtuar mbështetje për operacionet aritmetike në pyetjet CQL.
- Këtu është ofruar mundësia për të kryer operacione aritmetike midis të dhënave me llojet "timestamp"/"date" dhe "duration".
- KĂ«tu Ă«shtĂ« shtuar njĂ« modalitet pĂ«r tĂ« parashikuar rrjedhat e tĂ« dhĂ«nave qĂ« nevojiten pĂ«r rikuperimin (nodetool repair âpreview) dhe mundĂ«sia pĂ«r tĂ« verifikuar integritetin e tĂ« dhĂ«nave tĂ« rikuperuara (nodetool repair âvalidate).
- Në pyetjet SELECT është bërë e mundur përpunimi i elementeve Map dhe Set.
- Këtu është shtuar mbështetje për paralelizimin e fazës fillestare të ndërtimit të pamjeve materializuese (cassandra.yaml:concurrent_materialized_view_builders).
- Në komandën «nodetool cfstats» është shtuar mbështetje për renditjen sipas metrikave të caktuara dhe kufizimin e numrit të rreshtave të shfaqur.
- Këtu janë ofruar cilësime për të kufizuar qasjen e përdoruesit vetëm në qendra të caktuara të të dhënave.
- Këtu është shtuar mundësia për të kufizuar intensitetin (rate limit) e operacioneve të krijimit dhe pastrimit të kopjeve rezervë.
- Në cqlsh dhe cqlshlib është realizuar mbështetje për Python 3 (mbështetja për Python 2.7 vazhdon të ruhet).
- Këtu është ndërprerë mbështetje për platformën Windows. Për të ekzekutuar Cassandra në Windows, rekomandohet përdorimi i mjediseve Linux, të krijuara në përputhje me nën-sistemin WSL2 (Windows Subsystem for Linux 2) ose sistemet e virtualizimit.

Burimi: opennet.ru
