Stichting Apache Software Foundation heeft de release van de gedistribueerde database Apache Cassandra 4.0 gepresenteerd, die behoort tot de noSQL-systemen en is ontworpen voor het creƫren van hoogwaardige schaalbare en betrouwbare opslag van enorme hoeveelheden gegevens, opgeslagen in de vorm van een associatieve array (hash). De release van Cassandra 4.0 wordt erkend als klaar voor productie-implementaties en is al getest in de infrastructuren van bedrijven zoals Amazon, Apple, DataStax, Instaclustr, iland en Netflix met clusters van meer dan 1000 knooppunten. De code van het project is geschreven in Java en wordt verspreid onder de Apache 2.0-licentie.
Oorspronkelijk werd de database Cassandra ontwikkeld door Facebook en in 2009 overgedragen aan de bescherming van de Apache Foundation. Industriële oplossingen op basis van Cassandra zijn geïmplementeerd voor de dienstverlening van bedrijven zoals Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit en Twitter. Bijvoorbeeld, de door Apple geïmplementeerde infrastructuur voor opslag op basis van Apache Cassandra omvat meer dan duizend clusters, bestaande uit 160.000 knooppunten en opslaan van meer dan 100 petabyte gegevens. In het bedrijf Huawei worden meer dan 300 clusters van Apache Cassandra gebruikt, die 30.000 knooppunten omvatten, terwijl Netflix meer dan 100 clusters heeft die 10.000 knooppunten bestrijken en meer dan een triljoen verzoeken per dag verwerken.
De database Cassandra combineert een volledig gedistribueerd hash-systeem Dynamo, dat vrijwel lineaire schaalbaarheid biedt bij een toename van de hoeveelheid gegevens. Cassandra gebruikt een datamodel op basis van kolomfamilies (ColumnFamily), dat verschilt van systemen zoals memcachedb, die gegevens alleen in een sleutel/waarde-paar opslaan, door de mogelijkheid om hashes met meerdere niveaus van geneste structuren op te slaan. Voor het vereenvoudigen van de interactie met de database wordt de gestructureerde querytaal CQL (Cassandra Query Language) ondersteund, die lijkt op SQL, maar beperkt is in functionaliteit. Onder de mogelijkheden bevinden zich de ondersteuning voor namespaces en kolomfamilies, evenals het maken van indexen met de instructie "CREATE INDEX".
De database maakt het mogelijk om foutbestendige opslagruimtes te creƫren: gegevens die in de database worden geplaatst, worden automatisch gerepliceerd over meerdere knooppunten in een gedistribueerd netwerk, dat verschillende. datacenters. Bij uitval van een knooppunt worden de functies onmiddellijk overgenomen door andere knooppunten. Nieuwe knooppunten kunnen tijdens runtime aan de cluster worden toegevoegd en de versie van Cassandra kan worden bijgewerkt zonder handmatige ingrepen en zonder andere knooppunten opnieuw te configureren. Stuurprogramma's die CQL ondersteunen zijn beschikbaar voor de programmeertalen Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ en JavaScript (Node.js).
Belangrijkste vernieuwingen:
- Verbeterde prestaties en schaalbaarheid. De efficiƫntie van gegevensuitwisseling in het SSTable-formaat (Sorted Strings Table) tussen knooppunten is verhoogd. Het berichtprotocol tussen knooppunten (Internode Messaging Protocol) is geoptimaliseerd. De snelheid van datastreams tussen knooppunten is tot vijf keer verhoogd (voornamelijk dankzij de Zero Copy-techniek en de overdracht van SSTables in hun geheel), terwijl de bandbreedte voor lees- en schrijfoperaties met 25% is toegenomen. Het proces van incrementeel herstel is geoptimaliseerd. Vertragingen door het pauzeren van de garbage collector zijn teruggebracht tot enkele milliseconden.
- Ondersteuning voor logboekregistratie is toegevoegd, waarmee de authenticatie van gebruikers en alle uitgevoerde CQL-query's kunnen worden gevolgd.
- De mogelijkheid om een volledig binaire log van query's bij te houden is toegevoegd, waarmee al het traffic van verzoeken en antwoorden kan worden opgeslagen. Voor beheer zijn de commando's "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog" beschikbaar, en voor analyse is de fqltool utility inbegrepen. Er zijn commando's opgesteld voor het omzetten van het log in leesbare vorm (Dump), het vergelijken van activiteitssnits (Compare) en het opnieuw uitvoeren (Replay) voor analyse met herhaling van situaties die kenmerkend zijn voor de echte belasting.
- Ondersteuning voor virtuele tabellen is toegevoegd, die niet de gegevens in SSTables weergeven, maar informatie die via de API wordt weergegeven (prestatiestatistieken, configuratie-informatie, inhoud van de cache, gegevens over aangesloten cliƫnten, enz.).
- De efficiƫntie van de opslag van gegevens in gecomprimeerde vorm is verhoogd, wat de schijfruimte vermindert en de prestaties van leesoperaties verbetert.
- Gegevens met betrekking tot de system keyspace (system.*) worden nu standaard in de eerste directory geplaatst in plaats van verspreid over alle gegevensdirectories, wat de functionaliteit van het knooppunt behoudt in het geval dat een van de extra schijven faalt.
- Experimentele ondersteuning voor tijdelijke replicatie (Transient Replication) en goedkope quorum (Cheap Quorums) is toegevoegd. Tijdelijke replica's slaan niet alle gegevens op en gebruiken incrementeel herstel om af te stemmen met volledige replica's. Goedkope quorum implementeren een optimalisatie van schrijfoperaties, waarbij er geen schrijven naar tijdelijke replica's plaatsvindt totdat er een voldoende aantal volledige replica's beschikbaar is.
- Experimentele ondersteuning voor Java 11 is toegevoegd.
- Een experimentele optie voor het vergelijken van alle Merkle-bomen (Merkle Tree) is toegevoegd. Bijvoorbeeld, het inschakelen van deze optie op een cluster met 3 knooppunten, waarin twee replica's identiek zijn en ƩƩn verouderd, zal leiden tot een update van de verouderde replica met gebruik van slechts ƩƩn kopieeroperatie van de actuele replica.
- De nieuwe functies currentTimestamp, currentDate, currentTime en currentTimeUUID zijn toegevoegd.
- Ondersteuning voor wiskundige bewerkingen in CQL-query's is toegevoegd.
- De mogelijkheid om wiskundige bewerkingen uit te voeren tussen gegevens van de types 'timestamp'/'date' en 'duration' is geboden.
- Er is een modus toegevoegd voor het bekijken van datastromen die nodig zijn voor herstel (nodetool repair āpreview) en de mogelijkheid om de integriteit van de te herstellen gegevens te controleren (nodetool repair āvalidate).
- In SELECT-query's is het mogelijk geworden om elementen van Map en Set te verwerken.
- Ondersteuning voor het paralleliseren van de fase van de initiƫle opbouw van gematerialiseerde visies (cassandra.yaml:concurrent_materialized_view_builders) is toegevoegd.
- In het commando 'nodetool cfstats' is ondersteuning voor sorteren op bepaalde metrische gegevens en het beperken van het aantal weergegeven rijen toegevoegd.
- Instellingen zijn geboden om de verbinding van gebruikers te beperken tot bepaalde datacentra.
- De mogelijkheid om de intensiteit (rate limit) van de creatie en opschoning van snapshots te beperken is toegevoegd.
- In cqlsh en cqlshlib is ondersteuning voor Python 3 gerealiseerd (ondersteuning voor Python 2.7 blijft voorlopig behouden).
- De ondersteuning voor het Windows-platform is stopgezet. Voor het draaien van Cassandra in Windows wordt aangeraden om Linux-omgevingen te gebruiken die zijn gebaseerd op de WSL2 (Windows Subsystem for Linux 2) of virtualisatiesystemen.

Bron: opennet.ru
