Apache Software Foundation har lansert versjonen 4.0 av den distribuerte databasen Apache Cassandra, som tilhører noSQL-systemers klasse og er designet for å lage høyskalerbare og pålitelige lagring av enorme datamengder lagret i form av assoziative matriser (hash). Utgivelsen av Cassandra 4.0 er ansett som klar for produksjonsimplementeringer og har allerede blitt testet i infrastrukturen til selskaper som Amazon, Apple, DataStax, Instaclustr, iland og Netflix, med klynger som har over 1000 noder. Prosjektkoden er skrevet i Java og distribueres under Apache 2.0-lisensen.
Opprinnelig ble Cassandra-databasen utviklet av Facebook og ble i 2009 overført til Apache-fondets beskyttelse. Industrielle løsninger basert på Cassandra er implementert for å støtte driften av tjenester fra selskaper som Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit og Twitter. For eksempel har Apple bygget et lagringssystem basert på Apache Cassandra som består av over tusen klynger med 160 000 noder, som lagrer mer enn 100 petabyte data. Huawei bruker mer enn 300 klynger av Apache Cassandra, som inkluderer 30 000 noder, mens Netflix har over 100 klynger, dekker 10 000 noder og behandler mer enn en billion forespørsel per dag.
Cassandra-databasen kombinerer et helt distribusjonsbasert hash-system kalt Dynamo, som gir praktisk talt lineær skalerbarhet når datamengden øker. Cassandra bruker en datalagringsmodell basert på kolonnefamilier (ColumnFamily), som skiller seg fra systemer som memcachedb, som bare lagrer data i en nøkkel/verdi-tilknytning, ved muligheten for å organisere lagring av hasher med flere nivåer av innkapsling. For å forenkle interaksjonen med databasen støtter den Cassandra Query Language (CQL), som ligner på SQL, men har begrenset funksjonalitet. Blant funksjonene kan vi nevne støtte for navnerom og kolonnefamilier, opprettelse av indekser gjennom uttrykket "CREATE INDEX".
Databasen tillater opprettelse av feiltolerante lagringssystemer: data som legges inn i databasen replikeres automatisk til flere noder i det distribuerte nettverket, som kan strekke seg over ulike steder. data-sentreVed feil på en node, blir dens funksjoner automatisk overtatt av andre noder. Legging av nye noder i klyngen og oppdatering av versjonen av Cassandra skjer dynamisk, uten behov for ytterligere manuell inngripen og omkonfigurering av andre noder. Drivere med støtte for CQL er tilgjengelige for språkene Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ og JavaScript (Node.js).
Hovudnyhende:
- Ytelsen og skalerbarheten er økt. Effektiviteten av datadeling i SSTable-format (Sorted Strings Table) mellom noder er forbedret. Meldingsprotokollen mellom noder (Internode Messaging Protocol) er optimalisert. Dataoverføringshastigheten mellom nodene har økt med opptil 5 ganger (primært takket være Zero Copy-teknikken og overføring av SSTables i sin helhet), og båndbredden ved lese- og skriveoperasjoner har økt med 25 %. Prosessen for inkrementell gjenoppretting er optimalisert. Forsinkelsene på grunn av pause for søppelrydding er redusert til bare noen millisekunder.
- Støtte for revisjonslogg er lagt til, som gjør det mulig å spore brukerautentisering og alle utførte CQL-forespørsel.
- Muligheten for å opprettholde en full binær forespørselshistorikk er lagt til, som lar deg lagre all forespørsel og svartrafikk. For administrasjon tilbys kommandoene «nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog», og for analyse følger verktøyet fqltool med. Kommandoer for å konvertere loggen til et lesbart format (Dump), sammenligne aktivitetsutsnitt (Compare) og re-spille (Replay) for analyser under forhold typiske for virkelig belastning, er også tilgjengelige.
- Støtte for virtuelle tabeller som ikke reflekterer data lagret i SSTables, men informasjon som er tilgjengelig gjennom API (ytelsesmålinger, konfigurasjonsinformasjon, innhold i hurtigminne, informasjon om tilkoblede klienter, osv.) er lagt til.
- Effektiviteten av datalagring i komprimert format er forbedret, noe som reduserer diskplassforbruket og øker ytelsen ved leseoperasjoner.
- Data relatert til systemnøkkelrom (system.*) blir nå som standard plassert i den første katalogen, i stedet for å være fordelt over alle datakatalogene, noe som opprettholder nodens funksjonalitet i tilfelle en av de ekstra diskene skulle svikte.
- Eksperimentell støtte for midlertidig replikering (Transient Replication) og lette kvorumer (Cheap Quorums) er lagt til. Midlertidige replikater lagrer ikke all data og bruker inkrementell gjenoppretting for å synkronisere med fulle replikater. Lette kvorumer implementerer optimalisering av skriveoperasjoner, der skriving til midlertidige replikater ikke skjer før et tilstrekkelig antall fulle replikater er tilgjengelige.
- Eksperimentell støtte for Java 11 er lagt til.
- En eksperimentell funksjon for sammenligning av alle Merkle-trær (Merkle Tree) er lagt til. For eksempel, å aktivere funksjonen på et klynge med 3 noder, der to replikater er like og en er utdaterte, vil føre til oppdatering av den utdaterte replikaten ved å bruke bare én kopioperasjon fra den aktuelle replikaten.
- Nye funksjoner currentTimestamp, currentDate, currentTime og currentTimeUUID er lagt til.
- Støtte for aritmetiske operasjoner i CQL-spørsmål er lagt til.
- Muligheten for å utføre aritmetiske operasjoner mellom data med typene 'timestamp'/'date' og 'duration' er gitt.
- En modus for å forhåndsvise datastreamene som kreves for gjenoppretting (nodetool repair —preview) og muligheten for å verifisere integriteten til de gjenopprettede dataene (nodetool repair —validate) er lagt til.
- I SELECT-spørsmål er det nå mulig å behandle elementer i Map og Set.
- Støtte for parallellisering av trinnet for initial bygging av materialiserte visninger (cassandra.yaml:concurrent_materialized_view_builders) er lagt til.
- Støtte for sortering etter bestemte målinger og begrensning av antall utgående rader er lagt til i 'nodetool cfstats'-kommandoen.
- Innstillinger for å begrense brukerens tilkobling kun til bestemte datasentre er gitt.
- Muligheten for å begrense intensiteten (rate limit) av operasjoner for oppretting og rensing av snapshots er lagt til.
- Støtte for Python 3 i cqlsh og cqlshlib er implementert (støtte for Python 2.7 er fortsatt bevart).
- Støtte for Windows-plattformen er blitt avsluttet. For å kjøre Cassandra på Windows, anbefales det å bruke Linux-miljøer som er laget på grunnlag av WSL2 (Windows Subsystem for Linux 2) eller virtualiseringssystemer.

Kilde: opennet.ru
