Az Apache Software Foundation bejelentette az Apache Cassandra 4.0, elosztott adatbázis-kezelő rendszer kiadását, amely a noSQL rendszerek osztályába tartozik, és a rendkívül skálázható és megbízható tárolók létrehozására készült, hatalmas adathalmozók, amelyek asszociatív tömbként (hash) tárolódnak. A Cassandra 4.0 kiadását munkába állásra készen elismerték, és már tesztelték az Amazon, Apple, DataStax, Instaclustr, iland és Netflix cégek infrastruktúrájában, amelyek több mint 1000 csomópontot tartalmazó klasztereket üzemeltetnek. A projekt kódja Java nyelven készült, és az Apache 2.0 licenc keretein belül terjesztik.
Eredetileg a Cassandra adatbázis-kezelőrendszert a Facebook fejlesztette ki, és 2009-ben átadták az Apache Alapítvány felügyelete alá. Ipari megoldásokat a Cassandra alapjain telepítettek, hogy támogassák olyan cégek szolgáltatásait, mint az Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit és Twitter. Például az Apple által telepített Apache Cassandra alapú tárolási infrastruktúra több mint ezer klasztert tartalmaz, 160 ezer csomóponttal, és több mint 100 petabájt adatot tárol. A Huawei 300 klaszterrel használja az Apache Cassandrát, amelyek 30 ezer csomópontot tartalmaznak, míg a Netflix több mint 100 klaszterrel dolgozik, körülbelül 10 ezer csomóponttal, és naponta több mint egy trillió lekérdezést feldolgoz.
A Cassandra adatbázis-kezelő rendszer teljesen elosztott hash-rendszert egyesít a Dynamo révén, lehetővé téve a gyakorlatilag lineáris skálázhatóságot az adatmennyiség növekedésekor. A Cassandra oszlopcsalád (ColumnFamily) alapú adattárolási modellt alkalmaz, amely eltér az olyan rendszerektől, mint a memcachedb, amelyek csak kulcs/érték párban tárolják az adatokat, lehetővé téve a többszintű beágyazott hash tárolását. Az adatbázis egyszerűsített interakciója érdekében támogatja a struktúrált lekérdezési nyelvet, a CQL-t (Cassandra Query Language), amely hasonlít az SQL-hez, de funkciójában csökkentett. A támogatott funkciók közé tartozik a névtér és oszlopcsaládok támogatása, az indexek létrehozása a „CREATE INDEX” kifejezéssel.
Az adatbázis lehetővé teszi a hibatűrő tárolók kialakítását: az adatbázisba helyezett adatok automatikusan sok csomópontra replikálódnak egy elosztott hálózatban, amely különböző adatközpontok. A csomópont hibája esetén annak funkcióit más csomópontok automatikusan átveszik. Új csomópontok hozzáadása a klaszterhez és a Cassandra verzió frissítése valós időben, manuális beavatkozás és más csomópontok újrakonfigurálása nélkül történik. A CQL-t támogató illesztőprogramok elérhetők Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ és JavaScript (Node.js) nyelveken.
Főbb újítások:
- Növelt teljesítmény és skálázhatóság. Növelt a hatékonyság az SSTable (Rendezett Karakterlánc Táblázat) adatok csomópontok közötti cseréjében. Optimalizálták a csomópontok közötti üzenetváltási protokollt (Internode Messaging Protocol). Az adatfolyamok átvitelének sebessége csomópontok között ötszörösére nőtt (főként a Zero Copy technika és az SSTable-k teljes átvitelének köszönhetően), a be- és kiírási műveletek sávszélessége pedig 25%-kal nőtt. Optimalizálták a részleges helyreállítási folyamatot. A szemétgyűjtő leállításából adódó késleltetések néhány milliszekundumra csökkentek.
- Audit naplózás támogatás kerül hozzáadásra, amely lehetővé teszi a felhasználói azonosítási műveletek és az összes végrehajtott CQL lekérdezés nyomon követését.
- Teljes bináris lekérdezési naplózás képessége került bevezetésre, amely lehetővé teszi az összes kérelem és válasz forgalmának megőrzését. Az irányítást a „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog” parancsokkal végezhetjük, a napló elemzésére pedig a fqltool eszköz használható. Parancsokat biztosítanak a napló olvashatóvá tételére (Dump), aktivitási metszetek összehasonlítására (Compare) és a körülmények reprodukálásához szükséges újrajátszásra (Replay).
- Virtuális táblák támogatása került hozzáadásra, amelyek nem az SSTable-ákban tárolt adatokat, hanem az API-n keresztül kiadott információkat tükrözik (teljesítménymutatók, beállítási információk, gyorsítótár tartalma, csatlakozott kliensekről szóló adatok stb.).
- Növelték az adatok tömörített formában történő tárolásának hatékonyságát, amely csökkenti a lemezterület felhasználását és növeli a beolvasási műveletek teljesítményét.
- A rendszerkulcsok (system.*) vonatkozó adatai mostantól alapértelmezés szerint az első könyvtárban helyezkednek el, ahelyett, hogy az összes adatkönyvtárba eloszlottak volna, ami lehetővé teszi a csomópont működésének megőrzését, ha az egyik kiegészítő lemez meghibásodik.
- Kísérleti támogatás került bevezetésre az ideiglenes replikáció (Transient Replication) és a könnyű kvórumok (Cheap Quorums) számára. Az ideiglenes replikák nem tárolják az összes adatot, és az aktuális replikákkal való összehangoláshoz inkrementális helyreállítást használnak. A könnyű kvórumok optimalizálják a írási műveleteket, ahol az ideiglenes replikákra történő írás nem történik meg, amíg elegendő számú teljes replikához nem férünk hozzá.
- Kísérleti támogatás került bevezetésre a Java 11-hez.
- Kísérleti lehetőség került bevezetésre, amely lehetővé teszi az összes Merkle-fa (Merkle Tree) összehasonlítását. Például, ha a 3 csomópontból álló klaszteren, ahol két replika azonos, egy pedig elavult, engedélyezzük a lehetőséget, az elavult replikát csak egy aktuális replika másolásával frissítjük.
- Új függvények kerültek bevezetésre: currentTimestamp, currentDate, currentTime és currentTimeUUID.
- Math műveletek támogatása került bevezetésre a CQL lekérdezésekben.
- Lehetőség nyílik matematikai műveletek végrehajtására "timestamp"/"date" és "duration" típusú adatok között.
- Bevezetésre került egy előnézeti mód a helyreállításhoz szükséges adatfolyamok megtekintéséhez (nodetool repair —preview) és a helyreállított adatok integritásának ellenőrzéséhez (nodetool repair —validate).
- A SELECT lekérdezésekben lehetőség nyílt Map és Set elemek kezelésére.
- A kezdeti materializált nézetek építési fázisának párhuzamosításának támogatása került bevezetésre (cassandra.yaml:concurrent_materialized_view_builders).
- A 'nodetool cfstats' parancsban bevezetésre került a rendezés bizonyos metrikák szerint és a megjelenített sorok számának korlátozása.
- Beállítások kerültek bevezetésre a felhasználó csatlakozásának korlátozására bizonyos adatközpontokra.
- Lehetőség nyílt az operációk intenzitásának (rate limit) korlátozására, amelyek a pillanatképek létrehozásához és törléséhez kapcsolódnak.
- A cqlsh és cqlshlib támogatja a Python 3-at (a Python 2.7 támogatása továbbra is megmarad).
- A Windows platform támogatása megszűnt. A Cassandra Windows alatt történő futtatásához javasolt a WSL2 (Windows Subsystem for Linux 2) alapú Linux környezetek vagy virtualizációs rendszerek használata.

Forrás: opennet.ru
