Cassandra - model danych
Model danych Cassandry znacznie różni się od tego, co normalnie widzimy w RDBMS. Ten rozdział zawiera omówienie sposobu, w jaki Cassandra przechowuje swoje dane.
Grupa
Baza danych Cassandra jest rozproszona na kilka współpracujących ze sobą maszyn. Najbardziej zewnętrzny pojemnik jest nazywany klastrem. W celu obsługi awarii każdy węzeł zawiera replikę, aw przypadku awarii replika przejmuje kontrolę. Cassandra układa węzły w klastrze, w formacie pierścienia i przypisuje do nich dane.
Przestrzeń klucza
Keyspace to najbardziej zewnętrzny kontener danych w Cassandrze. Podstawowe atrybuty Keyspace w Cassandrze to -
- Replication factor - Jest to liczba komputerów w klastrze, które otrzymają kopie tych samych danych. 
- Replica placement strategy- To nic innego jak strategia umieszczania replik w ringu. Mamy strategie takie jaksimple strategy (strategia zorientowana na szafy), old network topology strategy (strategia uwzględniająca stelaż) oraz network topology strategy (strategia współdzielona w centrum danych). 
- Column families- Przestrzeń klucza to kontener na listę jednej lub więcej rodzin kolumn. Z kolei rodzina kolumn jest kontenerem zbioru wierszy. Każdy wiersz zawiera uporządkowane kolumny. Rodziny kolumn reprezentują strukturę danych. Każda przestrzeń kluczowa ma co najmniej jedną, a często wiele rodzin kolumn. 
Składnia tworzenia przestrzeni kluczy jest następująca -
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};Poniższa ilustracja przedstawia schematyczny widok obszaru kluczy.
 
                Rodzina kolumn
Rodzina kolumn jest kontenerem dla uporządkowanej kolekcji wierszy. Z kolei każdy wiersz jest uporządkowanym zbiorem kolumn. W poniższej tabeli wymieniono punkty, które odróżniają rodzinę kolumn od tabeli relacyjnych baz danych.
| Tabela relacyjna | Cassandra column Rodzina | 
|---|---|
| Schemat w modelu relacyjnym został naprawiony. Po zdefiniowaniu określonych kolumn do tabeli, podczas wstawiania danych, w każdym wierszu wszystkie kolumny muszą być wypełnione co najmniej wartością null. | W Cassandrze, mimo że rodziny kolumn są zdefiniowane, kolumny nie. W dowolnym momencie możesz dowolnie dodać dowolną kolumnę do dowolnej rodziny kolumn. | 
| Tabele relacyjne definiują tylko kolumny, a użytkownik wypełnia tabelę wartościami. | W Cassandrze tabela zawiera kolumny lub może być zdefiniowana jako super rodzina kolumn. | 
Rodzina kolumn Cassandra ma następujące atrybuty -
- keys_cached - Reprezentuje liczbę lokalizacji do przechowywania w pamięci podręcznej na SSTable. 
- rows_cached - Reprezentuje liczbę wierszy, których cała zawartość będzie przechowywana w pamięci. 
- preload_row_cache - Określa, czy chcesz wstępnie wypełnić pamięć podręczną wierszy. 
Note − W przeciwieństwie do tabel relacyjnych, w których schemat rodziny kolumn nie jest ustalony, Cassandra nie wymusza na poszczególnych wierszach wszystkich kolumn.
Poniższy rysunek przedstawia przykład rodziny kolumn Cassandra.
 
                Kolumna
Kolumna to podstawowa struktura danych Cassandry z trzema wartościami, a mianowicie nazwą klucza lub kolumny, wartością i znacznikiem czasu. Poniżej podano strukturę kolumny.
 
                SuperColumn
Superkolumna to specjalna kolumna, dlatego też jest parą klucz-wartość. Ale super kolumna przechowuje mapę kolumn podrzędnych.
Generalnie rodziny kolumn są przechowywane na dysku w osobnych plikach. Dlatego też, aby zoptymalizować wydajność, ważne jest, aby przechowywać kolumny, które prawdopodobnie będziesz wyszukiwać razem w tej samej rodzinie kolumn, a superkolumna może być tutaj pomocna. Poniżej przedstawiono strukturę superkolumny.
 
                Modele danych Cassandry i RDBMS
W poniższej tabeli wymieniono punkty, które odróżniają model danych Cassandry od modelu RDBMS.
| RDBMS | Cassandra | 
|---|---|
| RDBMS obsługuje dane strukturalne. | Cassandra ma do czynienia z nieustrukturyzowanymi danymi. | 
| Ma ustalony schemat. | Cassandra ma elastyczny schemat. | 
| W RDBMS tabela jest tablicą tablic. (ROW x COLUMN) | W Cassandrze tabela to lista „zagnieżdżonych par klucz-wartość”. (Klucz ROW x COLUMN x wartość COLUMN) | 
| Baza danych to najbardziej zewnętrzny kontener zawierający dane odpowiadające aplikacji. | Przestrzeń klucza to najbardziej zewnętrzny kontener zawierający dane odpowiadające aplikacji. | 
| Tabele to jednostki bazy danych. | Tabele lub rodziny kolumn są elementami przestrzeni kluczowej. | 
| Wiersz to pojedynczy rekord w RDBMS. | Wiersz jest jednostką replikacji w Cassandrze. | 
| Kolumna reprezentuje atrybuty relacji. | Kolumna to jednostka magazynowa w Cassandrze. | 
| RDBMS obsługuje koncepcje kluczy obcych, złączeń. | Relacje są reprezentowane za pomocą kolekcji. |