Apache Cassandra je open-sourcový, distribuovaný databázový systém. Jedná se o takzvaný NoSQL systém a ukládá široké sloupce. Slouží ke zpracování velkých objemů dat napříč komoditními servery. Nabízí vysokou dostupnost s absencí pádu skrze jeden bod. Cassandra nabízí robustní podporu klustrů napříč různými datovými centry s asynchronní replikací bez řídícího počítače. To umožňuje nízkou latenci operací pro všechny klienty.

Hlavní vlastnosti

Distribuovatelná

Každý uzel v klusteru má stejnou roli. Neexistuje jediný bod pádu. Data jsou rozložená napříč klusterem, takže každý uzel obsahuje odlišná data, ale neexistuje žádný řídící uzel, protože každý z uzlů může obsloužit libovolný request.

Podpora replikace a replikace napříč datovými centry

Replikační strategie je možné konfigurovat. Cassandra je navržena tak, aby byla distribuovaným systémem pro deployment velkého množství uzlů napříč různými datovými centry. Klíčovými vlastnostmi distribuované architektury Cassandry jsou, že je specificky navržená pro využití většího množství datových center, přepad a obnovu v případě pádu.

Škálovatelnost

Cassandra je navržena tak, aby bylo možné rozšířit čtení i psaní lineárně, tak jak jsou přidávány nové stroje. Cílem je nulový downtime a absence přerušení chodu aplikace.

Tolerance k pádu

Data jsou automaticky replikována na více uzlů. Uzly, které jsou chybové je možné nahradit bez přerušení chodu aplikace.

Konzistence

Cassandra je řazená mezi AP systémy, což znamená, že dostupnost a tolerance partition je obecně považována za důležitější, nežli konzistence. Zápis i čtení nabízí nastavitelnou úroveň konzistence, kdekoliv na škále od „zápis nikdy neselže“ až po „blokovat všechny repliky, aby byly dostupné pro čtení“.

Podpora MapReduce

Cassandra má integraci Hadoopu s podporou MapReduce. Podporuje zároveň Apache Pig a Apache Hive.

Dotazovací jazyk

Cassandra má vlastní Cassandra Query Language nebo CQL. CQL je jednoduchým interface pro přístup do Cassandry. Přidává úroveň abstrakce a skrývá detaily implementace struktury.

Výhody použití Apache Cassandra

  • Dostupnost. Replikace znamená, že data jsou dostupná na více uzlech nebo datových centrech. Tuto funkci je možné konfigurovat. Detaily tohoto mechanismu jsou před uživatelem skryté a díky tomu je jednoduché ji používat.
  • Jednoduché manipulace s uzly. Přidávání a odebírání uzlů je za pomoci Cassadry snadné. I nahradit uzly v případě katastrofických selhání je relativně jednoduché. Uzly nemají řídící uzel, proto nemají model řídícího uzlu a otroků pro replikaci. To znamená, že všechny uzly jsou si rovné.
  • Dostupnost materiálů. Je relativně jednoduché s Cassandrou začít, protože je pro ni dostupná spousta materiálů. Uživatelská báze roste, proto je jednodušší získat tipy nebo pomoc.

Nevýhody použití Apache Cassandra

  • Replikace. Replikace znamená, že se stejně jako správné informace replikují i chyby.
  • Opravy. Jedná se o specifický koncept použitý pouze v případě Cassandry. Většina uživatelů nechá opravy databázi. Jedná se o případ, kdy některý z uzlů selže a v definovaném časovém okně se neobnoví jeho funkcionalita. V době, kdy je uzel nedostupný, ostatní uzly si rozdělují data, která na tento uzel měla být uložena. Pokud je uzel obnoven v definovaném časovém okně, data se přesunou zpět na původně zamýšlený uzel. V opačném případě je potřeba spustit režim opravy. V žádném z případů nedochází ke ztrátě dat, jde spíše o změnu v uspořádání dat.
  • Vyhledávání. Není možné spouštět neočekávané dotazy, protože není možné vyhledávat libovolný sloupec. Je nutné explicitně přidat indexy.