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. |