Apache Cassandra 4.0 DBMS tilgængelig

Apache Software Foundation præsenterede udgivelsen af ​​det distribuerede DBMS Apache Cassandra 4.0, som tilhører klassen af ​​noSQL-systemer og er designet til at skabe yderst skalerbar og pålidelig lagring af enorme mængder data, der er lagret i form af et associativt array (hash). Cassandra 4.0-udgivelsen anses for klar til produktionsimplementering og er allerede blevet testet i Amazon, Apple, DataStax, Instaclustr, iland og Netflix infrastrukturer med klynger på mere end 1000 noder. Projektkoden er skrevet i Java og distribueres under Apache 2.0-licensen.

Cassandra DBMS blev oprindeligt udviklet af Facebook og i 2009 overført i regi af Apache Foundation. Industrielle løsninger baseret på Cassandra er blevet implementeret til at drive tjenester fra virksomheder som Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit og Twitter. For eksempel har den Apache Cassandra-baserede lagerinfrastruktur implementeret af Apple mere end tusinde klynger, inklusive 160 tusinde noder og lagring af mere end 100 petabyte data. Huawei bruger mere end 300 Apache Cassandra-klynger, der omfatter 30 tusinde noder, og Netflix bruger mere end 100 klynger, der dækker 10 tusinde noder og behandler mere end en billion anmodninger om dagen.

Cassandra DBMS kombinerer et fuldt distribueret Dynamo hash-system, som giver næsten lineær skalerbarhed, efterhånden som mængden af ​​data stiger. Cassandra bruger en datalagringsmodel baseret på en kolonnefamilie (ColumnFamily), som adskiller sig fra systemer som memcachedb, der kun lagrer data i en nøgle/værdikæde, ved evnen til at organisere lagring af hashes med flere niveauer af nesting. For at forenkle interaktion med databasen understøttes det strukturerede forespørgselssprog CQL (Cassandra Query Language), som minder om SQL, men reduceret i funktionalitet. Funktionerne omfatter understøttelse af navnerum og kolonnefamilier og oprettelse af indekser ved hjælp af udtrykket "CREATE INDEX".

DBMS giver dig mulighed for at oprette fejlbestandigt lager: data placeret i databasen replikeres automatisk til flere noder i et distribueret netværk, som kan spænde over forskellige datacentre. Når en node fejler, bliver dens funktioner opfanget af andre noder. Tilføjelse af nye noder til klyngen og opdatering af Cassandra-versionen sker på et øjeblik, uden yderligere manuel indgriben eller omkonfigurering af andre noder. Drivere med CQL-understøttelse er forberedt til Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ og JavaScript (Node.js).

Vigtigste innovationer:

  • Forbedret ydeevne og skalerbarhed. Effektiviteten af ​​dataudveksling i SSTable-format (Sorted Strings Table) mellem noder er blevet forbedret. Internode Messaging Protocol er blevet optimeret. Hastigheden for overførsel af datastrømme mellem noder er steget op til 5 gange (hovedsageligt på grund af brugen af ​​Zero Copy-teknikken og overførslen af ​​hele SSTables), og gennemløbet for læse- og skriveoperationer er steget til 25 %. Den trinvise gendannelsesproces er blevet optimeret. Forsinkelser på grund af affaldsindsamlingspause reduceres til et par millisekunder.
  • Tilføjet understøttelse af en revisionslog, der giver dig mulighed for at spore brugergodkendelsesoperationer og alle udførte CQL-forespørgsler.
  • Tilføjet muligheden for at opretholde en fuld binær anmodningslog, så du kan gemme al anmodnings- og svartrafik. Til administration foreslås kommandoerne "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog", og fqltool-værktøjet leveres til loganalyse. Kommandoer er tilvejebragt til at konvertere loggen til en læsbar form (Dump), sammenligning af aktivitetsudsnit (Sammenlign) og genudførelse (Replay) til analyse, der gengiver de betingelser, der er iboende i den virkelige belastning.
  • Tilføjet understøttelse af virtuelle tabeller, der ikke afspejler data, der er gemt i SSTables, men informationsoutput via API'et (performance-metrics, indstillingsoplysninger, cacheindhold, information om tilsluttede klienter osv.).
  • Effektiviteten af ​​komprimeret datalagring er blevet forbedret, hvilket reducerer diskpladsforbruget og forbedrer læseydelsen.
  • Data relateret til systemets nøglerum (system.*) placeres nu i den første mappe som standard i stedet for at blive distribueret på tværs af alle datamapper, hvilket gør det muligt for noden at forblive operationel, hvis en af ​​de ekstra diske svigter.
  • Tilføjet eksperimentel støtte til forbigående replikering og billige kvorummer. Midlertidige replikaer gemmer ikke alle data og bruger trinvis gendannelse for at være i overensstemmelse med fulde replikaer. Lette kvorummer implementerer skriveoptimering, hvor der ikke skrives til midlertidige replikaer, før et tilstrækkeligt sæt af fulde replikaer er tilgængeligt.
  • Tilføjet eksperimentel support til Java 11.
  • Tilføjet eksperimentel mulighed for at sammenligne alle Merkle-træer. Aktivering af indstillingen på en 3-node-klynge, hvor to replikaer er identiske, og den ene er forældet, vil f.eks. resultere i en opdatering af den forældede replika, der kun bruger én kopioperation af den aktuelle replika.
  • Tilføjet nye funktioner currentTimestamp, currentDate, currentTime og currentTimeUUID.
  • Tilføjet understøttelse af aritmetiske operationer i CQL-forespørgsler.
  • Muligheden for at udføre aritmetiske operationer mellem data med typerne "tidsstempel"/"dato" og "varighed" er tilvejebragt.
  • Tilføjet en tilstand til forhåndsvisning af datastrømme, der kræves til gendannelse (nodetool repair —preview) og muligheden for at kontrollere integriteten af ​​de data, der gendannes (nodetool reparation —validate).
  • SELECT-forespørgsler har nu mulighed for at behandle kort- og sætelementer.
  • Tilføjet støtte til parallelisering af den indledende konstruktionsfase af materialiserede visninger (cassandra.yaml:concurrent_materialized_view_builders).
  • Kommandoen "nodetool cfstats" har tilføjet understøttelse af sortering efter visse metrikker og begrænsning af antallet af viste rækker.
  • Indstillinger er kun til rådighed for at begrænse brugerens forbindelse til bestemte datacentre.
  • Tilføjet muligheden for at begrænse intensiteten (hastighedsgrænsen) af snapshot-oprettelse og rydningsoperationer.
  • cqlsh og cqlshlib understøtter nu Python 3 (Python 2.7 understøttes stadig).
  • Support til Windows-platformen er afbrudt. For at køre Cassandra på Windows anbefales det at bruge Linux-miljøer, der er oprettet på basis af WSL2-undersystemet (Windows Subsystem for Linux 2) eller virtualiseringssystemer.



Kilde: opennet.ru

Tilføj en kommentar