Disponibile il DBMS Apache Cassandra 4.0

La Apache Software Foundation ha presentato il rilascio del DBMS distribuito Apache Cassandra 4.0, che appartiene alla classe dei sistemi noSQL ed è progettato per creare un'archiviazione altamente scalabile e affidabile di enormi quantità di dati archiviati sotto forma di array associativo (hash). La versione Cassandra 4.0 è considerata pronta per l'implementazione in produzione ed è già stata testata nelle infrastrutture di Amazon, Apple, DataStax, Instaclustr, iland e Netflix con cluster di oltre 1000 nodi. Il codice del progetto è scritto in Java ed è distribuito sotto la licenza Apache 2.0.

Il DBMS Cassandra è stato originariamente sviluppato da Facebook e nel 2009 trasferito sotto gli auspici della Apache Foundation. Soluzioni industriali basate su Cassandra sono state implementate per alimentare servizi di aziende come Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit e Twitter. Ad esempio, l’infrastruttura di storage basata su Apache Cassandra distribuita da Apple ha più di mille cluster, inclusi 160mila nodi e archivia più di 100 petabyte di dati. Huawei utilizza più di 300 cluster Apache Cassandra, comprendenti 30mila nodi, e Netflix utilizza più di 100 cluster, coprendo 10mila nodi ed elaborando più di un trilione di richieste al giorno.

Il DBMS Cassandra combina un sistema hash Dynamo completamente distribuito, che fornisce una scalabilità quasi lineare all'aumentare del volume dei dati. Cassandra utilizza un modello di archiviazione dei dati basato su una famiglia di colonne (ColumnFamily), che differisce da sistemi come memcachedb, che archiviano i dati solo in una catena chiave/valore, per la capacità di organizzare l'archiviazione degli hash con diversi livelli di nidificazione. Per semplificare l'interazione con la banca dati, viene supportato il linguaggio di query strutturato CQL (Cassandra Query Language), che ricorda SQL, ma con funzionalità ridotte. Le funzionalità includono il supporto per spazi dei nomi e famiglie di colonne e la creazione di indici utilizzando l'espressione "CREATE INDEX".

Il DBMS consente di creare storage resistente ai guasti: i dati inseriti nel database vengono automaticamente replicati su più nodi di una rete distribuita, che può estendersi su diversi data center. Quando un nodo fallisce, le sue funzioni vengono riprese al volo da altri nodi. L'aggiunta di nuovi nodi al cluster e l'aggiornamento della versione Cassandra vengono eseguiti al volo, senza ulteriori interventi manuali o riconfigurazione di altri nodi. I driver con supporto CQL sono preparati per Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ e JavaScript (Node.js).

Principali innovazioni:

  • Prestazioni e scalabilità migliorate. È stata migliorata l'efficienza dello scambio dati in formato SSTable (Sorted Strings Table) tra i nodi. Il protocollo di messaggistica internode è stato ottimizzato. La velocità di trasferimento dei flussi di dati tra i nodi è aumentata fino a 5 volte (principalmente grazie all'uso della tecnica Zero Copy e al trasferimento di intere SSTable) e il throughput per le operazioni di lettura e scrittura è aumentato al 25%. Il processo di ripristino incrementale è stato ottimizzato. Le latenze dovute alla pausa della garbage collection sono ridotte a pochi millisecondi.
  • Aggiunto il supporto per un registro di controllo che consente di tenere traccia delle operazioni di autenticazione dell'utente e di tutte le query CQL eseguite.
  • Aggiunta la possibilità di mantenere un registro completo delle richieste binarie, consentendo di salvare tutto il traffico di richieste e risposte. Per la gestione vengono proposti i comandi “nodetool abilitafullquerylog|disablefullquerylog|resetfullquerylog” e viene fornita l'utility fqltool per l'analisi dei log. Sono forniti comandi per convertire il log in una forma leggibile (Dump), confrontare sezioni di attività (Compare) e rieseguire (Replay) per l'analisi riproducendo le condizioni inerenti al carico reale.
  • Aggiunto supporto per tabelle virtuali che riflettono non i dati archiviati in SSTables, ma l'output delle informazioni tramite l'API (metriche delle prestazioni, informazioni sulle impostazioni, contenuto della cache, informazioni sui client connessi, ecc.).
  • L'efficienza dell'archiviazione dei dati compressi è stata migliorata, riducendo il consumo di spazio su disco e migliorando le prestazioni di lettura.
  • I dati relativi allo spazio delle chiavi di sistema (system.*) vengono ora inseriti nella prima directory per impostazione predefinita invece di essere distribuiti in tutte le directory di dati, il che consente al nodo di rimanere operativo se uno dei dischi aggiuntivi si guasta.
  • Aggiunto il supporto sperimentale per la replica transitoria e i quorum economici. Le repliche temporanee non archiviano tutti i dati e utilizzano il ripristino incrementale per essere coerenti con le repliche complete. I quorum leggeri implementano l'ottimizzazione della scrittura in cui non vengono eseguite scritture su repliche temporanee finché non è disponibile un set sufficiente di repliche complete.
  • Aggiunto supporto sperimentale per Java 11.
  • Aggiunta un'opzione sperimentale per confrontare tutti gli alberi Merkle. Ad esempio, abilitando l'opzione su un cluster a 3 nodi in cui due repliche sono identiche e una è obsoleta, si otterrà un aggiornamento della replica obsoleta utilizzando solo un'operazione di copia della replica corrente.
  • Aggiunte nuove funzioni currentTimestamp, currentDate, currentTime e currentTimeUUID.
  • Aggiunto il supporto per le operazioni aritmetiche nelle query CQL.
  • Viene fornita la possibilità di eseguire operazioni aritmetiche tra dati con i tipi “timestamp”/”data” e “durata”.
  • Aggiunta una modalità per visualizzare in anteprima i flussi di dati richiesti per il ripristino (nodetool Repair —preview) e la possibilità di verificare l'integrità dei dati da ripristinare (nodetool Repair —validate).
  • Le query SELECT ora hanno la capacità di elaborare elementi Map e Set.
  • Aggiunto il supporto per parallelizzare la fase di costruzione iniziale delle viste materializzate (cassandra.yaml:concurrent_materialized_view_builders).
  • Il comando "nodetool cfstats" ha aggiunto il supporto per l'ordinamento in base a determinati parametri e la limitazione del numero di righe visualizzate.
  • Vengono fornite impostazioni per limitare la connessione dell'utente solo a determinati data center.
  • Aggiunta la possibilità di limitare l'intensità (limite di velocità) delle operazioni di creazione e cancellazione degli snapshot.
  • cqlsh e cqlshlib ora supportano Python 3 (Python 2.7 è ancora supportato).
  • Il supporto per la piattaforma Windows è stato interrotto. Per eseguire Cassandra su Windows, si consiglia di utilizzare ambienti Linux creati sulla base del sottosistema WSL2 (Windows Subsystem for Linux 2) o sistemi di virtualizzazione.



Fonte: opennet.ru

Aggiungi un commento