Organizacija Apache Software Foundation je predstavila izdanje distribuirane SSBDB Apache Cassandra 4.0, koja pripada klasi noSQL sistema i namijenjena je stvaranju visoko skalabilnih i pouzdanih skladišta ogromnih količina podataka, pohranjenih u obliku asocijativnog niza (haša). Izdanje Cassandra 4.0 je priznato kao spremno za radna uvođenja i već je testirano u infrastrukturnim sistemima kompanija Amazon, Apple, DataStax, Instaclustr, iland i Netflix s klasterima koji sadrže više od 1000 čvorova. Kod projekta je napisan na jeziku Java i distribuira se pod licencom Apache 2.0.
Izvorno, SSBDB Cassandra je razvijena od strane kompanije Facebook i 2009. godine je prenesena pod okrilje fonda Apache. Industrijska rješenja zasnovana na Cassandri su implementirana za osiguranje rada usluga takvih kompanija kao što su Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit i Twitter. Na primjer, infrastruktura za skladištenje koju je razvila kompanija Apple zasnovana na Apache Cassandri sadrži više od hiljadu klastera, uključujući 160 hiljada čvorova i pohranjuje više od 100 petabajta podataka. U kompaniji Huawei se koristi više od 300 klastera Apache Cassandra, koji uključuju 30 hiljada čvorova, dok Netflix ima više od 100 klastera koji obuhvataju 10 hiljada čvorova i obrađuju više od trilion zahtjeva dnevno.
SSBDB Cassandra objedinjuje potpuno distribuirani hash sistem Dynamo, koji osigurava praktično linearno skaliranje sa povećanjem obima podataka. Cassandra koristi model skladištenja podataka zasnovan na porodici kolona (ColumnFamily), koji se razlikuje od sistema poput memcachedb, koji pohranjuju podatke samo u paru ključ/vrijednost, omogućavajući organizovanje skladištenja haševa sa više nivoa ugniježdenosti. Za olakšavanje interakcije sa DB podržava se jezik za oblikovanje strukturiranih upita CQL (Cassandra Query Language), koji je sličan SQL-u, ali je funkcionalnosti ograničene. Od mogućnosti se može istaknuti podrška za prostore imena i porodice kolona, kao i kreiranje indeksâ putem izraza „CREATE INDEX”.
SSBDB omogućava stvaranje otpornog na kvarove skladišta: podaci pohranjeni u DB automatski se repliciraju na nekoliko čvorova distribuirane mreže, koja može obuhvatati različite centro za obdelavo podatkov. V primeru okvare vozlišča njegove funkcije takoj prevzamejo druga vozlišča. Dodajanje novih vozlišč v grozd in posodabljanje različice Cassandra poteka brez dodatnega ročnega posredovanja in ponovne konfiguracije drugih vozlišč. Gonilniki, ki podpirajo CQL, so na voljo za jezike Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ in JavaScript (Node.js).
Glavne novosti:
- Povečana učinkovitost in razširljivost. Povečana učinkovitost izmenjave podatkov v formatu SSTable (Sorted Strings Table) med vozliščih. Optimiziran je protokol za izmenjavo sporočil med vozliščih (Internode Messaging Protocol). Hitrost prenosa podatkovnih tokov med vozliščih se je povečala do 5-krat (predvsem zahvaljujoč uporabi tehnike Zero Copy in celotnemu prenosu SSTables), medtem ko se je prepustnost pri operacijah branja in pisanja povečala do 25%. Optimiziran je proces inkrementalne obnove. Zamude zaradi začasnega ustavljanja zbiralnika smeti so zmanjšane na nekaj milisekund.
- Dodana je podpora za revizijski dnevnik, ki omogoča sledenje operacijam avtentikacije uporabnikov in vsem izvajanjem CQL poizvedb.
- Dodana je možnost vodenja popolnega binarnega dnevnika poizvedb, ki omogoča shranjevanje celotnega prometa poizvedb in odgovorov. Za upravljanje so na voljo ukazi „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog“, za analizo dnevnika pa je na voljo pripomoček fqltool. Na voljo so ukazi za pretvorbo dnevnika v berljivo obliko (Dump), primerjavo rezin aktivnosti (Compare) in ponovno izvajanje (Replay) za analizo v pogojih, značilnih za obremenitev opravljenega dela.
- Dodana je podpora za virtualne tabele, ki ne predstavljajo podatkov shranjenih v SSTables, temveč informacije, ki jih zagotavlja API (metrike zmogljivosti, informacije o nastavitvah, vsebina predpomnilnika, podatki o povezanih odjemalcih itd.).
- Povečana je učinkovitost shranjevanja podatkov v stisnjeni obliki, kar omogoča zmanjšanje porabe diskovnega prostora in povečanje zmogljivosti operacij branja.
- Podatki, ki se nanašajo na sistemski prostor ključev (system.*), so zdaj privzeto nameščeni v prvi imenik namesto porazdelitve po vseh imenikih s podatki, kar omogoča ohranitev delovanja vozlišča v primeru okvare enega od dodatnih diskov.
- Dodana je eksperimentalna podrška za vremensku replikaciju (Transient Replication) i lagane kvore (Cheap Quorums). Vremenske replike ne čuvaju sve podatke i koriste inkrementalno obnavljanje za usklađivanje s punim replikama. Lagani kvore omogućavaju optimizaciju zapisnih operacija, pri čemu se zapisivanje u vremenske replike ne vrši sve dok nije dostupan dovoljan broj punih replika.
- Dodana je eksperimentalna podrška za Java 11.
- Dodana je eksperimentalna opcija za poređenje svih Merklovih stabala (Merkle Tree). Na primer, aktiviranje opcije na klasteru sa 3 nodova, gde su dve replike identične, a jedna zastarela, dovest će do ažuriranja zastarele replike koristeći samo jednu operaciju kopiranja aktuelne replike.
- Dodate su nove funkcije currentTimestamp, currentDate, currentTime i currentTimeUUID.
- Dodana je podrška za aritmetičke operacije u CQL upitima.
- Omogućeno je izvršavanje aritmetičkih operacija između podataka tipova "timestamp"/"date" i "duration".
- Dodan je režim za prikaz podataka potrebnih za obnovu (nodetool repair —preview) i mogućnost provere integriteta obnavljenih podataka (nodetool repair —validate).
- U SELECT upitima sada je moguća obrada elemenata Map i Set.
- Dodana je podrška za paralelno izvršavanje faze inicijalnog izrade materializovanih prikaza (cassandra.yaml:concurrent_materialized_view_builders).
- U komandi "nodetool cfstats" dodana je podrška za sortiranje prema određenim metrikama i ograničenje broja prikazanih redova.
- Nabavljene su postavke za ograničavanje pristupa korisnika samo određenim centrima podataka.
- Dodana je mogućnost ograničenja intenziteta (rate limit) operacija kreiranja i brisanja snapshot-ova.
- U cqlsh i cqlshlib implementirana je podrška za Python 3 (podrška za Python 2.7 ostaje sačuvana).
- Prekinuta je podrška za Windows platformu. Preporučuje se korišćenje Linux okruženja kreiranih na osnovu WSL2 (Windows Subsystem for Linux 2) ili virtuelizovanih sistema za pokretanje Cassandre na Windows-u.

Izvor: opennet.ru
