Este disponibil cadrul de gestionare a bazelor de date Apache Cassandra 4.0.

Organizația Apache Software Foundation a lansat versiunea bazei de date distribuite Apache Cassandra 4.0, care face parte din categoria sistemelor noSQL și este destinată creării de stocări scalabile și de încredere pentru cantități mari de date, stocate sub formă de tablou asociativ (hash). Lansarea Cassandra 4.0 a fost recunoscută ca fiind pregătită pentru implementări de producție și a fost deja testată în infrastructurile companiilor Amazon, Apple, DataStax, Instaclustr, iland și Netflix cu clustere ce conțin peste 1000 de noduri. Codul proiectului este scris în limbajul Java și este distribuit sub licența Apache 2.0.

Inițial, baza de date Cassandra a fost dezvoltată de compania Facebook și, în 2009, a fost cedată sub tutela fundației Apache. Soluții industriale bazate pe Cassandra sunt implementate pentru a susține serviciile unor companii precum Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit și Twitter. De exemplu, infrastructura de stocare implementată de Apple, bazată pe Apache Cassandra, numără peste o mie de clustere, incluzând 160 de mii de noduri și stocând peste 100 de petabyte de date. Compania Huawei folosește peste 300 de clustere Apache Cassandra, incluzând 30 de mii de noduri, iar Netflix are peste 100 de clustere, acoperind 10 mii de noduri și procesând mai mult de un trilion de cereri pe zi.

Baza de date Cassandra combină în sine un sistem hash complet distribuit, Dynamo, care oferă scalabilitate practic liniară cu creșterea volumului de date. Cassandra folosește un model de stocare a datelor bazat pe familii de coloane (ColumnFamily), diferit de sisteme precum memcachedb, care stochează date doar în perechi cheie/valore, având capacitatea de a organiza stocarea hash-urilor cu mai multe niveluri de imbricare. Pentru a simplifica interacțiunea cu baza de date, este suportată limbajul de interogare CQL (Cassandra Query Language), similar cu SQL, dar redus ca funcționalitate. Dintre funcționalități, se pot menționa suportul pentru spații de nume și familii de coloane, precum și crearea indexurilor prin expresia "CREATE INDEX".

Baza de date permite crearea de stocări rezistente la defecțiuni: datele introduse în baza de date sunt replicate automat pe mai multe noduri ale rețelei distribuite, care poate acoperi diferite centre de date. În cazul unei defecțiuni a nodului, funcțiile acestuia sunt preluate în timp real de către alte noduri. Adăugarea de noduri noi în cluster și actualizarea versiunii Cassandra se realizează în timp real, fără intervenții manuale suplimentare și reconfirmarea altor noduri. Driverii cu suport CQL sunt pregătiți pentru limbile Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ și JavaScript (Node.js).

Noutăți principale:

  • Performanța și scalabilitatea au fost îmbunătățite. Eficiența schimbului de date în format SSTable (Sorted Strings Table) între noduri a crescut. Protocolul de schimb de mesaje între noduri (Internode Messaging Protocol) a fost optimizat. Viteza de transfer a fluxurilor de date între noduri a crescut de până la 5 ori (în principal datorită aplicării tehnicii Zero Copy și transferului complet al SSTables), iar lățimea de bandă în operațiunile de citire și scriere a crescut cu până la 25%. Procesul de restaurare incrementală a fost optimizat. Întârzierile cauzate de pauzele din activitatea colectorului de gunoi au fost reduse la câteva milisecunde.
  • A fost adăugată suportul pentru jurnalul de audit, care permite urmărirea operațiunilor de autentificare a utilizatorilor și a tuturor cererilor CQL efectuate.
  • A fost adăugată posibilitatea de a menține un jurnal binar complet al cererilor, care permite salvarea întregului trafic de cereri și răspunsuri. Pentru gestionare sunt propuse comenzile „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog”, iar pentru analiza jurnalului este livrată utilitarul fqltool. Sunt oferite comenzi pentru a transforma jurnalul într-o formă ușor de citit (Dump), compararea tăierilor de activitate (Compare) și reluarea (Replay) pentru analiza cu reproducerea condițiilor caracteristice unei încărcări reale.
  • A fost adăugată suportul pentru tabele virtuale, care reflectă nu datele stocate în SSTables, ci informații furnizate prin API (metrice de performanță, informații despre setări, conținutul cache-ului, date despre clienții conectați etc.).
  • Eficiența stocării datelor în formă comprimată a fost îmbunătățită, ceea ce permite reducerea consumului de spațiu pe disc și creșterea performanței operațiunilor de citire.
  • Datele referitoare la spațiul de cheie de sistem (system.*) sunt acum în mod implicit plasate în prima directoare, în loc de a fi distribuite în toate directoarele cu date, ceea ce permite menținerea funcționalității nodului în cazul defectării uneia dintre unitățile suplimentare.
  • A fost adăugată suport experimental pentru replicarea temporară (Transient Replication) și quorumuri ușoare (Cheap Quorums). Replicile temporare nu stochează toate datele și folosesc recuperarea incrementală pentru a se sincroniza cu replicile complete. Quorumurile ușoare implementează optimizarea operațiunilor de scriere, prin care scrierea în replicile temporare nu se efectuează până când un set suficient de replici complete nu este disponibil.
  • A fost adăugat suport experimental pentru Java 11.
  • A fost adăugată o opțiune experimentală pentru compararea tuturor arborilor Merkle (Merkle Tree). De exemplu, activarea opțiunii pe un cluster cu 3 noduri, în care două replici sunt identice, iar una este învechită, va duce la actualizarea replicii învechite folosind doar o operațiune de copiere a replicii actuale.
  • Au fost adăugate noi funcții currentTimestamp, currentDate, currentTime și currentTimeUUID.
  • A fost adăugat suport pentru operații aritmetice în interogările CQL.
  • A fost oferită posibilitatea de a efectua operații aritmetice între datele de tip "timestamp"/"date" și "duration".
  • A fost adăugat un mod de a previzualiza fluxurile de date necesare pentru recuperare (nodetool repair —preview) și posibilitatea de a verifica integritatea datelor restaurate (nodetool repair —validate).
  • În interogările SELECT a fost adăugată posibilitatea de a procesa elemente Map și Set.
  • A fost adăugat suport pentru paralelizarea etapei inițiale de construire a vizualizărilor materializate (cassandra.yaml:concurrent_materialized_view_builders).
  • În comanda "nodetool cfstats" a fost adăugat suport pentru sortarea în funcție de anumite metrici și limitarea numărului de linii afișate.
  • Au fost oferite setări pentru a limita conexiunea utilizatorului doar la anumite centre de date.
  • A fost adăugată posibilitatea de a limita intensitatea (rate limit) operațiunilor de creare și curățare a snapshot-urilor.
  • În cqlsh și cqlshlib a fost implementat suport pentru Python 3 (suportul pentru Python 2.7 rămâne disponibil).
  • Suportul pentru platforma Windows a fost întrerupt. Pentru a rula Cassandra pe Windows, se recomandă utilizarea mediilor Linux create pe baza subsystemului WSL2 (Windows Subsystem for Linux 2) sau a sistemelor de virtualizare.

Redați video


Sursa: opennet.ro
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster