Apache Software Foundation har slÀppt version 4.0 av den distribuerade databashanteraren Apache Cassandra, som tillhör klassen noSQL-system och Àr avsedd för att skapa högskalerbara och pÄlitliga lagringslösningar för stora mÀngder data, lagrad i form av en associativ array (hash). UtgÄvan av Cassandra 4.0 anses vara redo för produktionsanvÀndning och har redan testats i infrastrukturen hos företag som Amazon, Apple, DataStax, Instaclustr, iland och Netflix med kluster som har över 1000 noder. Projektkoden Àr skriven i Java och distribueras under Apache 2.0-licensen.
Databashanteraren Cassandra utvecklades ursprungligen av Facebook och överlÀmnades 2009 under Apache-fondens beskydd. Industriella lösningar baserade pÄ Cassandra Àr implementerade för att stödja tjÀnster frÄn företag som Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit och Twitter. Till exempel har Apples distribuerade lagringsinfrastruktur baserad pÄ Apache Cassandra över tusen kluster som inkluderar 160 000 noder och lagrar mer Àn 100 petabyte data. Huawei anvÀnder mer Àn 300 kluster av Apache Cassandra, som inkluderar 30 000 noder, medan Netflix har över 100 kluster som omfattar 10 000 noder och hanterar mer Àn en biljon förfrÄgningar per dag.
Databashanteraren Cassandra kombinerar ett helt distribuerat hash-system, Dynamo, som möjliggör nÀstan linjÀr skalbarhet nÀr datamÀngden ökar. Cassandra anvÀnder en datalagringsmodell baserad pÄ kolumnfamiljer (ColumnFamily), olika frÄn system som memcachedb, som lagrar data enbart som nyckel/vÀrde-par, genom att möjliggöra lagring av hash med flera nivÄer av inbÀddning. För att förenkla interaktionen med databasen stöds ett strukturerat frÄgesprÄk, CQL (Cassandra Query Language), som liknar SQL men har minskad funktionalitet. Bland funktionerna kan stöd för namnrymd och kolumnfamiljer, samt skapande av index med uttrycket "CREATE INDEX", nÀmnas.
Databashanteraren möjliggör skapande av felfria lagringslösningar: data som placeras i databasen replikerar automatiskt till flera noder inom det distribuerade nÀtverket, vilket kan omfatta olika datacenter. Vid nodfel tar andra noder automatiskt över dess funktioner. TillÀgg av nya noder till klustret och uppgradering av Cassandra-versionen sker automatiskt, utan ytterligare manuell intervention och omkonfigurering av andra noder. Drivrutiner med stöd för CQL finns tillgÀngliga för sprÄk som Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ och JavaScript (Node.js).
Huvudsakliga nyheter:
- Prestanda och skalbarhet har ökats. Effektiviteten vid datautbyte i SSTable-format (Sorted Strings Table) mellan noder har förbÀttrats. Protokollet för meddelandeutbyte mellan noder (Internode Messaging Protocol) har optimerats. Hastigheten för datastreaming mellan noder har ökat upp till 5 gÄnger (frÀmst tack vare anvÀndningen av Zero Copy-teknik och hel överföring av SSTables), medan bandbredden vid lÀs- och skrivoperationer har ökat med upp till 25%. Processen för inkrementell ÄterstÀllning har optimerats. Fördröjningar pÄ grund av pausning orsakad av skrÀpsamlaren har minskats till nÄgra millisekunder.
- Stöd för revisionslogg har lagts till, vilket möjliggör spÄrning av anvÀndarautentisering och alla utförda CQL-frÄgor.
- Möjlighet att föra en fullstĂ€ndig binĂ€r logg över frĂ„gor har lagts till, vilket gör att all trafik av frĂ„gor och svar kan sparas. Kommandona ânodetool enablefullquerylog|disablefullquerylog|resetfullquerylogâ erbjuds för styrning, och för logganalys tillhandahĂ„lls verktyget fqltool. Kommandon finns för att konvertera loggen till ett lĂ€sbart format (Dump), jĂ€mföra aktivitetsavsnitt (Compare) och Ă„terköra (Replay) för analys med Ă„terskapande av förhĂ„llanden typiska för verklig belastning.
- Stöd för virtuella tabeller har lagts till, som speglar inte data lagrat i SSTables, utan information som tillhandahÄlls via API (prestandametrik, instÀllningsinformation, cacheinnehÄll, information om anslutna klienter etc.).
- Effektiviteten vid lagring av data i komprimerad form har ökats, vilket medger minskad diskplatsanvÀndning och ökad prestanda vid lÀsoperationer.
- Data som rör systemets nyckelrum (system.*) placeras nu som standard i den första katalogen istÀllet för att spridas över alla kataloger med data, vilket gör det möjligt att upprÀtthÄlla nodens funktionalitet vid ett fel pÄ en av de ytterligare diskarna.
- Experimentellt stöd för temporÀr replikation (Transient Replication) och lÀtta kvorum (Cheap Quorums) har lagts till. TemporÀra replikat lagrar inte all data och anvÀnder inkrementell ÄterstÀllning för att synkronisera med fullstÀndiga replikat. LÀtta kvorum implementerar optimering av skrivoperationer, dÀr skrivning till temporÀra replikat inte görs förrÀn ett tillrÀckligt antal fullstÀndiga replikat Àr tillgÀngliga.
- Experimentellt stöd för Java 11 har lagts till.
- En experimentell funktion för att jÀmföra alla Merkle-trÀd (Merkle Tree) har lagts till. Till exempel, om funktionen aktiveras i en kluster med 3 noder, dÀr tvÄ replikat Àr identiska och ett Àr förÄldrat, kommer det att leda till att det förÄldrade replikatet uppdateras med endast en kopieringsoperation av det aktuella replikatet.
- Nya funktioner currentTimestamp, currentDate, currentTime och currentTimeUUID har lagts till.
- Stöd för aritmetiska operationer i CQL-frÄgor har lagts till.
- Möjlighet att utföra aritmetiska operationer mellan data av typen "timestamp"/"date" och "duration" har tillhandahÄllits.
- LÀget för förhandsgranskning av datastreams som behövs för ÄterstÀllning (nodetool repair --preview) och möjlighet att kontrollera integriteten hos de ÄterstÀllda uppgifterna (nodetool repair --validate) har lagts till.
- I SELECT-frÄgor har möjligheten att bearbeta Map- och Set-element lagts till.
- Stöd för parallellisering av det initiala bygget av materialiserade vyer (cassandra.yaml:concurrent_materialized_view_builders) har lagts till.
- I kommandot "nodetool cfstats" har stöd för sortering efter vissa mÄtt och begrÀnsning av antalet utdata rader lagts till.
- InstÀllningar för att begrÀnsa anvÀndarens anslutning till specifika datacenter har tillhandahÄllits.
- Möjlighet att begrÀnsa intensiteten (rate limit) av operationer för skapande och rensning av snapshots har lagts till.
- Stöd för Python 3 har implementerats i cqlsh och cqlshlib (stöd för Python 2.7 bevaras fortfarande).
- Stödet för Windows-plattformen har upphört. För att köra Cassandra pÄ Windows rekommenderas anvÀndning av Linux-miljöer skapade pÄ grundval av WSL2 (Windows Subsystem for Linux 2) eller virtualiseringssystem.

KĂ€lla: opennet.ru
