Apache Software Foundation esitles vĂ€lja jaotatud andmebaasi Apache Cassandra 4.0, mis kuulub noSQL-sĂŒsteemide klassi ning on mĂ”eldud tohutu andmemahtude kĂ”rge skaleeritavuse ja usaldusvÀÀrsuse tagamiseks, salvestatuna assotsiatiivsete massiividena (hash). Cassandra 4.0 vĂ€ljaandmine tunnistati valmis tööalaste rakenduste jaoks ning seda on juba testitud ettevĂ”tete Amazon, Apple, DataStax, Instaclustr, iland ja Netflix infrastruktuurides, mille klastrid sisaldavad rohkem kui 1000 sĂ”lme. Projekti kood on kirjutatud Java keeles ja seda levitatakse Apache 2.0 litsentsi alusel.
Alguses arendas andmebaasi Cassandra Facebook ja 2009. aastal anti see Apache fondi hoolde. Tööstuslikud lahendused Cassandra baasil on juurutatud teenuste toetamiseks sellistes ettevĂ”tetes nagu Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit ja Twitter. NĂ€iteks ettevĂ”tte Apple juurutatud Apache Cassandra andmesalvestuse infrastruktuur koosneb rohkem kui tuhandest klastrist, mis sisaldab 160 000 sĂ”lme ja salvestab ĂŒle 100 petabaidi andmeid. EttevĂ”ttes Huawei kasutatakse rohkem kui 300 Apache Cassandra klastrit, mis hĂ”lmavad 30 000 sĂ”lme, ja Netflixis on rohkem kui 100 klastrit, mis katab 10 000 sĂ”lme ja töötleb rohkem kui triljon pĂ€ringut pĂ€evas.
Cassandra andmebaas ĂŒhendab endas tĂ€ielikult jaotatud hash-sĂŒsteemi Dynamo, mis tagab praktiliselt lineaarsed skaleerimisvĂ”imalused andmemahtude suurenedes. Cassandra kasutab andmete salvestamise mudelit, mis pĂ”hineb veergude kogumitel (ColumnFamily), mis eristub sĂŒsteemidest nagu memcachedb, mis salvestavad andmeid ainult vĂ”tme/vÀÀrtuse paaridena, vĂ”imaldades organiseerida andmete salvestamist mitme tasemega hashides. Andmebaasiga suhtlemise lihtsustamiseks toetatakse struktureeritud pĂ€ringute keelt CQL (Cassandra Query Language), mis sarnaneb SQL-iga, kuid on funktsionaalsuse poolest piiratuma. Toetatakse nimesĂŒsteeme ja veergude gruppe, samuti indeksite loomine vĂ€ljendiga "CREATE INDEX".
Andmebaas vĂ”imaldab luua tĂ”rketaluvate salvestusruumide: andmebaasi sisestatud andmed replikatakse automaatselt mitmele sĂ”lmele jaotatud vĂ”rgus, mis vĂ”ib ulatuda erinevatesse andmekeskustes.. Kui sĂ”lme ebaĂ”nnestub, vĂ”tavad teised sĂ”lmed selle funktsioonid kohe ĂŒle. Uute sĂ”lmede lisamine klastrisse ja Cassandra versiooni vĂ€rskendamine toimuvad reaalajas, ilma tĂ€iendava kĂ€sitsi sekkumise ja muude sĂ”lmede ĂŒmberkonfigureerimiseta. CQL-i toetavad draiverid on valmis keeltele Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ ja JavaScript (Node.js).
Peamised uuendused:
- Paranenud on jĂ”udlus ja skaleeritavus. Andmete vahetamine SSTable (Sorted Strings Table) formaadis sĂ”lmede vahel on muutunud tĂ”husamaks. SĂ”lmede vahelise sĂ”numivahetuse protokoll (Internode Messaging Protocol) on optimeeritud. Andmevoogude edastamise kiirus sĂ”lmede vahel on kasvanud kuni 5 korda (peamiselt tĂ€nu Zero Copy tehnikale ja SSTable'ide tĂ€ielikule edastamisele), samas kui lugemis- ja kirjutamisoperatsioonide lĂ€bilaskevĂ”ime on kasvanud kuni 25%. Inkrementaalse taastamise protsess on optimeeritud. Praegused katkestused prĂŒgi koristaja tĂ”ttu on vĂ€henenud mĂ”ne millisekundini.
- Lisatud on auditi logi tugi, mis vÔimaldab jÀlgida kasutaja autentimise operatsioone ja kÔiki teostatavaid CQL-pÀringuid.
- Lisatud on vĂ”imalus pidada tĂ€iendavat binaarset pĂ€ringulogi, mis vĂ”imaldab salvestada kogu pĂ€ringu ja vastuse liiklust. Halduseks on ette nĂ€htud kĂ€sud ânodetool enablefullquerylog|disablefullquerylog|resetfullquerylogâ ning logi analĂŒĂŒsimiseks on saadaval tööriist fqltool. Pakutakse kĂ€ske logi lugemiseks (Dump), tegevuse lĂ”ikude vĂ”rdlemiseks (Compare) ja taasesitamiseks (Replay), et analĂŒĂŒsida ja simuleerida realistlikke koormustingimusi.
- Lisatud on virtuaaltabelite tugi, mis ei peegelda mitte SSTable'ides salvestatud andmeid, vaid API kaudu edastatavat teavet (sooritusmeetmed, seadistuste teave, vahemĂ€lu sisu, klientide ĂŒhenduste andmed jne).
- Andmete salvestamise efektiivsus on paranenud koostöös, mis vÔimaldab vÀhendada kettaruumi tarbimist ja suurendada lugemise operatsioonide jÔudlust.
- SĂŒsteemi vĂ”tme ruumi (system.*) andmed paigutatakse nĂŒĂŒd vaikimisi esimesse katalooge, selle asemel et jaotuda kĂ”ikidesse andmekataloogidesse, mis aitab sĂ€ilitada sĂ”lme töövĂ”imet juhul, kui ĂŒks tĂ€iendavatest ketastest ebaĂ”nnestub.
- Lisatud katsejĂ€rgus toimetamine ajutise replikatsiooni (Transient Replication) ja odavate kvoorumite (Cheap Quorums) toetamine. Ajutised replikad ei hoia kĂ”iki andmeid ja kasutavad inkrementaalset taastamist, et sĂŒnkroniseerida tĂ€ielike replikatega. Odavad kvoorumid viivad sisse optimeerimise kirjutamistegevuse, kus kirjutamine ajutistesse replikatesse ei toimu, kuni piisav arv tĂ€ielikke replikasid on saadaval.
- Lisatud katsejÀrgus Java 11 toe toetamine.
- Lisatud katsejĂ€rgus valik kĂ”ikide Merkle puude (Merkle Tree) vĂ”rdlemiseks. NĂ€iteks kolme sĂ”lmega klastris, kus kaks replikat on identsed ja ĂŒks on aegunud, toob valiku aktiveerimine kaasa aegunud replikate uuendamise ainult ĂŒhe aktiivse replikaga kopeerimise operatsiooni abil.
- Lisatud uued funktsioonid currentTimestamp, currentDate, currentTime ja currentTimeUUID.
- Lisatud aritmeetiliste tehete tugi CQL pÀringutes.
- Antud on vĂ”imalus teostada aritmeetilisi tehteid 'timestamp'/'date' ja 'duration' tĂŒĂŒpi andmete vahel.
- Lisatud reĆŸiim andmevoogude eelvaate jaoks, mis on vajalik taastamiseks (nodetool repair âpreview) ja vĂ”imalus kontrollida taastatavate andmete terviklikkust (nodetool repair âvalidate).
- SELECT pĂ€ringutes on nĂŒĂŒd vĂ”imalik töödelda Map ja Set elemente.
- Lisatud tugi algse materjaliseeritud vaadete ehitamise etapi paralleelsetele töödele (cassandra.yaml:concurrent_materialized_view_builders).
- KÀskluses 'nodetool cfstats' on lisatud tugi sorteerimiseks teatud mÔÔdikute jÀrgi ja vÀljundiridade arvu piiramiseks.
- Pakutud on seadistused, et piirata kasutaja ĂŒhendust ainult teatud andmekeskustega.
- Lisatud vÔimalus piirata (rate limit) loomise ja kustutamise operatsioonide intensiivsust (snaipshotide loomine ja kustutamine).
- cqlsh ja cqlshlib toetavad nĂŒĂŒd Python 3 (Python 2.7 tugi on endiselt sĂ€ilitatud).
- Toetamine Windows platvormile on lĂ”petatud. Cassandra kĂ€itamiseks Windowsis soovitatakse kasutada Linuxi keskkondi, mis on loodud WSL2 (Windows Subsystem for Linux 2) vĂ”i virtualiseerimise sĂŒsteemide baasil.

Allikas: opennet.ru
