Organizata Apache Software Foundation paraqiti lëshimin e bazës së të dhënave të shpërndara Apache Cassandra 4.0, e cila i përket klasës së sistemeve noSQL dhe është e dizajnuar për të krijuar depo të shkallëzuara dhe të besueshme për grumbuj të mëdhenj të dhënash, të ruajtura si një tavë hash (asociative array). Lëshimi i Cassandra 4.0 është njohur si i gatshëm për implementime në punë dhe është testuar tashmë në infrastrukturat e kompanive si Amazon, Apple, DataStax, Instaclustr, iland dhe Netflix me klasterë që numërojnë më shumë se 1000 nyje. Kodi i projektit është shkruar në gjuhën Java dhe shpërndahet në kuadër të licencës Apache 2.0.
Fillimisht, baza e të dhënave Cassandra u zhvillua nga kompania Facebook dhe në vitin 2009 i u dorëzua fondit Apache. Zgjidhjet industriale mbi bazën e Cassandra janë vendosur 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 Apple mbi bazën e Apache Cassandra përfshin më shumë se një mijë klasterë, që përfshijnë 160 mijë nyje dhe ruajnë më shumë se 100 petabajt të dhënash. Kompania Huawei përdor më shumë se 300 klasterë Apache Cassandra, që përfshijnë 30 mijë nyje, ndërsa Netflix ka më shumë se 100 klasterë, që përfshijnë 10 mijë nyje dhe përpunojnë më shumë se një trilion kërkesash në ditë.
Baza e të dhënave Cassandra bashkon një sistem hash të shpërndarë plotësisht, Dynamo, që siguron shkallëzim praktikisht linear me rritjen e volumit të të dhënave. Cassandra përdor modelin e ruajtjes së të dhënave të bazuar në familjet e kolonave (ColumnFamily), që dallohet nga sistemet si memcachedb, të cilat ruajnë të dhëna vetëm në lidhje çelës/vlerë, duke ofruar mundësinë për të organizuar ruajtjen e hash-eve me disa nivele thellësie. Për të lehtësuar ndërveprimin me bazën e të dhënave, mbështetet gjuha e formës së kërkesave të strukturuara CQL (Cassandra Query Language), që ngjan me SQL, por që është e reduktuar në funksionalitet. Nga mundësitë, mund të përmendim mbështetje për hapësira emri dhe familje kolonash, krijimin e indekseve përmes shprehjes 'CREATE INDEX'.
Baza e të dhënave lejon krijimin e depozita të qëndrueshme ndaj dështimeve: të dhënat e vendosura në bazën e të dhënave riplikohen automatikisht në disa nyje të rrjetit të shpërndarë, i cili mund të mbulojë zona të ndryshme. qendra të përpunimit të të dhënave. Në rast të një dështimi të nyjës, funksionet e saj kapen në fluks nga nyje të tjera. Shtimi i nyjeve të reja në kluster dhe përditësimi i versionit të Cassandra bëhet në fluks, pa ndërhyrje të tjera manuale dhe riparime të nyjeve të tjera. Të drejtorët me mbështetje për CQL janë përgatitur për gjuhët Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ dhe JavaScript (Node.js).
Novitetet kryesore:
- Rritet performanca dhe shkallĂ«zueshmĂ«ria. ĂshtĂ« rritur efikasiteti i shkĂ«mbimit tĂ« tĂ« dhĂ«nave nĂ« formatin SSTable (Tabela e FjalĂ«ve tĂ« Renditur) midis nyjeve. Protokolli i shkĂ«mbimit tĂ« mesazheve midis nyjeve (Protokolli i Mesazheve NdĂ«rnyjesh) Ă«shtĂ« optimizuar. ShpejtĂ«sia e transferimit tĂ« rrjedhave tĂ« tĂ« dhĂ«nave midis nyjeve Ă«shtĂ« rritur deri nĂ« 5 herĂ« (kryesisht pĂ«r shkak tĂ« pĂ«rdorimit tĂ« teknikĂ«s Zero Copy dhe transferimit tĂ« SSTable-ve nĂ« tĂ«rĂ«si), dhe kapaciteti pĂ«r operacionet e leximit dhe shkrimit deri nĂ« 25%. Procesi i rikuperimit tĂ« inkrementuar Ă«shtĂ« optimizuar. Vonesat pĂ«r shkak tĂ« pezullimit tĂ« ekzekutimit nga mbledhĂ«si i plehrave janĂ« reduktuar nĂ« disa milisekonda.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r regjistrin e auditi, i cili lejon tĂ« ndiqen operacionet e autentifikimit tĂ« pĂ«rdoruesve dhe tĂ« gjitha kĂ«rkesat e kryera CQL.
- ĂshtĂ« shtuar mundĂ«sia e mbajtjes sĂ« njĂ« regjistri tĂ« plotĂ« binar tĂ« kĂ«rkesave, i cili lejon ruajtjen e gjithĂ« trafikut tĂ« kĂ«rkesave dhe pĂ«rgjigjeve. PĂ«r menaxhim ofrohen komandat «nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog», dhe pĂ«r analizĂ«n e regjistrit ofrohet utilitari fqltool. JanĂ« ofruar komanda pĂ«r transformimin e regjistrit nĂ« njĂ« formĂ« tĂ« lexueshme (Dump), krahasimin e aktiviteteve (Compare) dhe ripĂ«rsĂ«ritjen (Replay) pĂ«r analizĂ« me riprodhimin e kushteve tipike tĂ« ngarkesĂ«s reale.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r tabela virtuale, tĂ« cilat pasqyrojnĂ« jo tĂ« dhĂ«nat e ruajtura nĂ« SSTable, por informacionin e nxjerrĂ« pĂ«rmes API-it (metrikat e performancĂ«s, informacion mbi konfigurimet, pĂ«rmbajtjen e caches, tĂ« dhĂ«na mbi klientĂ«t e lidhur etj.).
- ĂshtĂ« rritur efikasiteti i ruajtjes sĂ« tĂ« dhĂ«nave nĂ« formĂ« tĂ« kompresuar, duke lejuar reduktimin e konsumit tĂ« hapĂ«sirĂ«s sĂ« diskut dhe rritjen e performancĂ«s sĂ« operacioneve tĂ« leximit.
- Të dhënat që i përkasin hapësirës së çelësit të sistemit (system.*) tani vendosen për default në direktorinë e parë në vend që të shpërndahen në të gjitha direktoritë me të dhëna, duke lejuar ruajtjen e funksionalitetit të nyjës në rast dështimi të ndonjë prej disqeve shtesë.
- ĂshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r replikimin transient dhe kuorumet e lehta. Replikat transient nuk ruajnĂ« tĂ« dhĂ«na tĂ« plota dhe pĂ«rdorin rikuperimin inkremental pĂ«r tĂ« u harmonizuar me replikat e plota. Kuorumet e lehta zbatojnĂ« optimizimin e operacioneve tĂ« shkrimit, ku shkrimi nĂ« replikat transient nuk bĂ«het derisa tĂ« jetĂ« nĂ« dispozicion njĂ« grup i mjaftueshĂ«m i replikave tĂ« plota.
- ĂshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r Java 11.
- ĂshtĂ« shtuar njĂ« mundĂ«si eksperimentale pĂ«r krahasimin e tĂ« gjitha pemĂ«ve Merkla. PĂ«r shembull, aktivizimi i opsionit nĂ« njĂ« klaster me 3 nyje, ku dy replikat janĂ« identike dhe njĂ« Ă«shtĂ« e vjetruar, do tĂ« sjellĂ« nĂ« pĂ«rfundimin e rinovimit tĂ« replikĂ«s sĂ« vjetruar duke pĂ«rdorur vetĂ«m njĂ« operacion kopjimi tĂ« replikĂ«s aktuale.
- Janë shtuar funksione të reja currentTimestamp, currentDate, currentTime dhe currentTimeUUID.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r operacionet aritmetike nĂ« kĂ«rkesat CQL.
- ĂshtĂ« ofruar mundĂ«sia e kryerjes sĂ« operacioneve aritmetike midis tĂ« dhĂ«nave me tipet âtimestampâ/âdateâ dhe âdurationâ.
- ĂshtĂ« shtuar njĂ« mod pĂ«r parashikimin e rrjedhave tĂ« tĂ« dhĂ«nave tĂ« nevojshme pĂ«r rikuperimin (nodetool repair âpreview) dhe mundĂ«sia e verifikimit tĂ« integritetit tĂ« tĂ« dhĂ«nave tĂ« rikuperuara (nodetool repair âvalidate).
- Në kërkesat SELECT është mundësuar përpunimi i elementeve Map dhe Set.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r paralelizimin e fazĂ«s fillestare tĂ« ndĂ«rtimit tĂ« shfaqjeve tĂ« materializuara (cassandra.yaml:concurrent_materialized_view_builders).
- NĂ« komandĂ«n ânodetool cfstatsâ Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r renditjen sipas metrikeve tĂ« caktuara dhe pĂ«r kufizimin e numrit tĂ« rreshtave tĂ« paraqitur.
- Janë ofruar cilësime për kufizimin e lidhjes së përdoruesit vetëm në qendra të dhënash të caktuara.
- ĂshtĂ« shtuar mundĂ«sia e kufizimit tĂ« intensitetit (rate limit) tĂ« operacioneve tĂ« krijimit dhe pastrimit tĂ« snapshot-eve.
- Në cqlsh dhe cqlshlib është realizuar mbështetje për Python 3 (mbështetja për Python 2.7 akoma ruhet).
- ĂshtĂ« ndalur mbĂ«shtetja pĂ«r platformĂ«n Windows. PĂ«r tĂ« ekzekutuar Cassandra nĂ« Windows, rekomandohet pĂ«rdorimi i mjediseve Linux tĂ« krijuar mbi nĂ«n-sistemin WSL2 (Windows Subsystem for Linux 2) ose sistemet e virtualizimit.

Burimi: opennet.ru
