Coś o Cassandrze

Wstęp

Zanim zaczniemy, powiedzmy czym jest Cassandra? Apache Cassandra to rozproszona, otwartoźródłowa baza danych NoSQL, która pierwotnie została stworzona przez Facebooka. Jest zaprojektowana z myślą o łatwym skalowaniu horyzontalnym, co oznacza, że możemy dodawać nowe węzły do klastra, aby obsłużyć większe obciążenie.

Instalacja Cassandry

1. Przygotowanie środowiska

Zanim zainstalujemy samą cassandrę, będziemy potrzebować javy, a dokładniej openjdk-11. Najprościej użyć komendy:

sudo apt update sudo apt install openjdk-11-jre-headless

2. Instalacja

Można pobrać najnowszą wersję Cassandry ze strony oficjalnej Cassandra Apache lub też dla systemów typu linux można wpisać prostą komendę:

sudo apt install cassandra

3. Uruchomienie 

Po zakończeniu instalacji, Cassandra zostanie uruchomiona automatycznie jako usługa. Można sprawdzić jej status za pomocą komendy:

sudo systemctl status cassandra

Jak działa Apache Cassandra?

Apache Cassandra, rozproszony system zarządzania bazami danych, został stworzony do zarządzania dużą ilością danych w kilku centrach danych w chmurze. Zrozumienie działania Cassandry oznacza zrozumienie trzech podstawowych procesów zachodzących w systemie. Są to komponenty architektury, na których jest zbudowany, system partycjonowania i powtarzalność.

1. Architektura Cassandry

Podstawowa architektura Cassandry składa się z klastra węzłów. Apache Cassandra ma strukturę systemu peer-to-peer i bardzo przypomina DynamoDB i Google Bigtable.

Każdy węzeł w Cassandrze jest równy i ma ten sam poziom ważności, co jest podstawą struktury Cassandry. Każdy węzeł to dokładny punkt, w którym przechowywane są określone dane. Grupa powiązanych ze sobą węzłów tworzy centrum danych. Klaster tworzy kompletny zestaw centrów danych zdolnych do przechowywania danych do przetwarzania.

Ważną cechą architektury Cassandry jest to, że można ją łatwo rozszerzyć, aby pomieścić więcej danych. Dodając więcej węzłów, możesz podwoić ilość danych przesyłanych do systemu, nie przytłaczając go. Ta dynamiczna zdolność skalowania działa w obie strony. Zmniejszając liczbę węzłów, programiści mogą w razie potrzeby zmniejszyć system bazy danych. W porównaniu z poprzednimi bazami danych w ustrukturyzowanym języku zapytań (SQL) i złożonością zwiększania ich pojemności przenoszenia danych, architektura Cassandry daje mu znaczną przewagę.

Innym sposobem, w jaki architektura Cassandry pomaga w jej funkcjonalności, jest zwiększenie bezpieczeństwa danych i ochrona przed ich utratą.

2. System partycji

W Cassandrze dane są przechowywane i pobierane za pośrednictwem systemu partycjonowania. Partycjoner określa miejsce przechowywania podstawowej kopii zestawu danych. Działa to z tokenami węzłowymi w formacie bezpośrednim. Każdy węzeł jest właścicielem zestawu tokenów na podstawie klucza partycji lub jest za niego odpowiedzialny. Klucz partycji odpowiada za określenie miejsca przechowywania danych.

Natychmiast po wejściu danych do klastra do klucza partycji dodawana jest funkcja skrótu. Węzeł koordynujący (węzeł, z którym łączy się klient za pomocą żądania) jest odpowiedzialny za przesłanie danych do węzła z tym samym tokenem w ramach tej partycji.

3. Powtarzalność Cassandry

Innym sposobem działania Cassandry jest replikowanie danych między węzłami. Te węzły wtórne nazywane są węzłami repliki, a liczba węzłów repliki dla danego zestawu danych opiera się na współczynniku replikacji (RF). Współczynnik replikacji równy 3 oznacza, że trzy węzły pokrywają ten sam zakres tokenów i przechowują te same dane. Wiele replik jest kluczem do niezawodności Cassandry.

Nawet jeśli jeden węzeł przestanie działać, tymczasowo lub na stałe, inne węzły przechowują te same dane, co oznacza, że prawie nigdy nie są one całkowicie tracone. Co więcej, jeśli tymczasowo zakłócony węzeł wraca na właściwe tory, otrzymuje aktualizację dotyczącą działań związanych z danymi, które mógł przeoczyć, a następnie nadrabia zaległości, aby móc dalej funkcjonować.

Zalety

1. Skalowalność Horyzontalna: Cassandra umożliwia łatwe dodawanie nowych węzłów do klastra, co pozwala na skalowanie horyzontalne w miarę wzrostu danych.

2. Wysoka Dostępność: Dzięki replikacji danych i rozproszonej architekturze Cassandra zapewnia wysoką dostępność nawet w przypadku awarii węzłów.

3. Elastyczność Modelu Danych: Model danych oparty na kolumnach oferuje elastyczność w projektowaniu schematów danych, co umożliwia dostosowanie do różnych potrzeb aplikacji.

4. Odporność na Awarie: Cassandra automatycznie zarządza replikacją danych, co sprawia, że jest odporna na awarie pojedynczych węzłów.

Podsumowanie

Apache Cassandra to narzędzie, które dobrze sprawdza się w projektach wymagających obsługi dużych ilości danych i równoczesnego skalowania. Warto rozważyć jej użycie, jeśli zależy komuś na niezawodności i wydajności w środowisku rozproszonym. Aby dowiedzieć się więcej zachęcam do skorzystania z oficjalnej dokumentacji https://cassandra.apache.org/doc/latest/

Komentarze

Popularne posty z tego bloga

Jak zrobić aplikację REST-ową w Spring Boot

Wprowadzenie do Reacta