Organizace Apache Software Foundation představila vydání distribuovaného databázového systému Apache Cassandra 4.0, který spadá do kategorie noSQL systémů a je navržen pro vytváření vysoce škálovatelných a spolehlivých úložišť obrovských objemů dat, uchovávaných ve formě asociativního pole (haše). Vydání Cassandra 4.0 bylo uznáno jako připravené pro pracovní nasazení a již bylo testováno v infrastrukturách společností jako Amazon, Apple, DataStax, Instaclustr, iland a Netflix s clustery obsahujícími více než 1000 uzlů. Kód projektu je napsán v programovacím jazyce Java a je distribuován na základě licence Apache 2.0.
Původně byla databáze Cassandra vyvinuta společností Facebook a v roce 2009 byla předána pod patronát Apache Foundation. Průmyslová řešení založená na Cassandře jsou nasazena pro zajištění provozu služeb takových společností jako Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit a Twitter. Například infrastruktura pro ukládání dat založená na Apache Cassandře, kterou nasadila společnost Apple, zahrnuje více než tisíc clusterů, které obsahují 160 tisíc uzlů a uchovávají více než 100 petabajtů dat. Společnost Huawei používá více než 300 clusterů Apache Cassandra, zahrnujících 30 tisíc uzlů, zatímco Netflix má více než 100 clusterů pokrývajících 10 tisíc uzlů a zpracovávajících více než trilion dotazů denně.
Databázový systém Cassandra kombinuje zcela distribuovaný hash systém Dynamo, který zajišťuje prakticky lineární škálovatelnost při zvyšování objemu dat. Cassandra využívá model ukládání dat založený na rodině sloupců (ColumnFamily), který se liší od systémů jako memcachedb, které ukládají data pouze v párech klíč/hodnota, tím, že umožňuje organizaci uchovávání hašů s několika úrovněmi vnoření. Pro zjednodušení interakce s databází je podporován jazyk pro vytváření strukturovaných dotazů CQL (Cassandra Query Language), který připomíná SQL, ale je omezen funkcionalitou. Z funkcí můžeme zmínit podporu prostorů názvů a rodin sloupců, vytváření indexů prostřednictvím výrazu „CREATE INDEX“.
Databázový systém umožňuje vytvářet odolná úložiště: data ukládaná v databázi se automaticky replikují na několik uzlů distribuované sítě, která může pokrývat různé datových center. Při selhání uzlu jeho funkce okamžitě přebírají jiné uzly. Přidávání nových uzlů do clustera a aktualizace verze Cassandra probíhá za chodu, bez dalšího ručního zásahu a překonfigurování ostatních uzlů. Ovladače s podporou CQL jsou připraveny pro jazyky Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ a JavaScript (Node.js).
Hlavní novinky:
- Zvýšena výkonnost a škálovatelnost. Zvýšena účinnost výměny dat ve formátu SSTable (Sorted Strings Table) mezi uzly. Optimalizován protokol pro výměnu zpráv mezi uzly (Internode Messaging Protocol). Rychlost přenosu datových proudů mezi uzly se zvýšila až 5krát (především díky použití techniky Zero Copy a přenosu SSTables jako celku), zatímco propustnost při operacích čtení a zápisu vzrostla o 25 %. Optimalizován proces inkrementálního obnovení. Zpoždění způsobená pozastavením prováděním garbage collector byla snížena na několik milisekund.
- Přidána podpora pro auditní protokol, který umožňuje sledovat operace autentizace uživatelů a všechny vykonávané dotazy CQL.
- Přidána možnost vedení úplného binárního protokolu dotazů, což umožňuje uchovávat veškerý provoz dotazů a odpovědí. Pro správu byly navrženy příkazy „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog“, a pro analýzu protokolu je dodávána utilita fqltool. Poskytovány příkazy pro převod protokolu do čitelné podoby (Dump), porovnání výřezů aktivity (Compare) a opětovné provedení (Replay) pro analýzu s reprodukcí podmínek typických pro skutečné zatížení.
- Přidána podpora virtuálních tabulek, které neodrážejí data uložená v SSTables, ale informace poskytované prostřednictvím API (metriky výkonu, informace o nastavení, obsah cache, údaje o připojených klientech atd.).
- Zvýšena účinnost ukládání dat v komprimované podobě, což umožňuje snížit spotřebu diskového prostoru a zvýšit výkon čtecích operací.
- Data týkající se systémového prostoru klíčů (system.*) jsou nyní ve výchozím nastavení umístěna v první adresáři, namísto rozložení po všech adresářích s daty, což umožňuje zachovat funkčnost uzlu v případě selhání jednoho z přídavných disků.
- Byla přidána experimentální podpora dočasné replikace (Transient Replication) a lehkých kvorumů (Cheap Quorums). Dočasné repliky neukládají všechna data a používají inkrementální obnovu pro synchronizaci s úplnými replikami. Lehké kvory optimalizují zápisové operace, kdy se zápis do dočasných replik neprovádí, dokud není dostupná dostatečná sada úplných replik.
- Byla přidána experimentální podpora pro Java 11.
- Byla přidána experimentální volba pro porovnání všech Merklových stromů (Merkle Tree). Například aktivace této volby na clusteru se 3 uzly, kde jsou dvě repliky shodné a jedna je zastaralá, povede k provedení aktualizace zastaralé repliky pomocí pouze jedné operace kopírování aktuální repliky.
- Byly přidány nové funkce currentTimestamp, currentDate, currentTime a currentTimeUUID.
- Byla přidána podpora aritmetických operací v dotazech CQL.
- Byla poskytnuta možnost provádět aritmetické operace mezi datovými typy „timestamp“/„date“ a „duration“.
- Byl přidán režim pro náhled datových proudů potřebných pro obnovu (nodetool repair —preview) a možnost ověření integrity obnovovaných dat (nodetool repair —validate).
- V dotazech SELECT byla přidána možnost zpracování prvků Map a Set.
- Byla přidána podpora paralelizace fáze počátečního sestavení materializovaných pohledů (cassandra.yaml:concurrent_materialized_view_builders).
- V příkazu „nodetool cfstats“ byla přidána podpora řazení podle konkrétních metrik a omezení počtu vyprodukovaných řádků.
- Byly poskytnuty nastavení pro omezení připojení uživatele pouze k určitým datovým centrům.
- Byla přidána možnost omezení intenzity (rate limit) operací vytváření a čištění snapshotů.
- V cqlsh a cqlshlib byla implementována podpora Python 3 (podpora Python 2.7 je zatím zachována).
- Byla ukončena podpora platformy Windows. Pro spuštění Cassandry ve Windows se doporučuje používat prostředí Linux založené na subsystému WSL2 (Windows Subsystem for Linux 2) nebo virtualizační systémy.

Zdroj: opennet.ru
