Course Code: apachecass
Duration: 21 hours
Prerequisites:
  • comfortable with Java programming language
  • comfortable in Linux environment (navigating command line, editing files with vi / nano)
Overview:

Apache Cassandra - szkolenie dedykowane

Course Outline:

Modelowanie danych w bazach kolumnowych

1. Wprowadzenie do skalowalnych baz danych NoSQL

2. NoSQL vs klasyczne podejście

• Przetłumaczenie wierszy na kolumny

• Zmiana bazy z SQL na NoSQL na poziomie biznesu

3. Sposoby modelowania w kolumnowych bazach danych

• przechowywanie zdarzeń i danych time-series

• płaskie agregaty

• normalizowanie danych

• duplikowanie danych do struktur read-modelu

4. Wyzwania wynikające ze stosowania baz rozproszonych

• Eventual consistency i teoria CAP

• Stabilność infrastruktury sieciowej a koszt rozproszenia danych

     • Problemy analizy dużych zbiorów danych

Dlaczego Apache Cassandra?

• Złote zasady doboru odpowiedniej technologii do rozwiązywania

• Kiedy unikać stosowania Cassandry?

• Alternatywne rozwiązania tej klasy

Korzystanie z Apache Cassandra

1. Instalacja i konfiguracja klastra 2. Modelowanie struktur danych

• Wbudowane oraz własne typy danych

• Obsługa danych w formacie JSON

• Tworzenie, modyfikacja oraz usuwanie przestrzeni i tabel

• Właściwe tworzenie kluczy danych

3. Metody tworzenia i modyfikacji dokumentów

• Zapis, aktualizacja i usuwanie danych

• Sposoby rozwiązywania konfliktów

4. Wyszukiwanie danych

• Możliwości i ograniczenia wyszukiwania danych

• Funkcje skalarne i agregujące

5. Wyzwalacze (triggery)

• Mechanika działania oraz przykładowe przypadki użycia?

• Implementacja własnego wyzwalacza na przykładzie zbierania alertów

6. Komunikacja z poziomu aplikacji

• Wykorzystanie natywnego sterownika DataStax

• Dostęp do danych poprzez Spring Data

Architektura rozwiązania

1. Keyspace, Column Family

2. CommitLog, Memtables oraz SSTables

3. Dystrybucja danych w klastrze token-ring

• Vnodes vs. statyczny podział

4. Konfigurowalna gwarancja spójności

• Consistency Levels

• Read repair

• Wydajność - czyli na co się nastawiać?

Modele replikacji danych

• Składowanie danych w jednej serwerowni

• Dystrybucja danych pomiędzy wieloma lokalizacjami fizycznymi

• Konfiguracja polityki replikacji

Wyszukiwanie

1. Język zapytań CQL

2. Denormalizacja danych pod wydajne zapytania

• Widoki zmaterializowane vs. indeksy drugiego rzędu

• Wyzwalacze (triggery)

3. Separacja modelu odczytu na przykładzie symbiozy z Elasticsearch

Analiza danych składowanych w Cassandrze

• Eksport danych do SQL z wykorzystaniem CDC

• Wprowadzenie do Apache Spark

Performance tuning

• Metody namierzania problemów wydajnościowych

• Jak radzić sobie ze zbyt wolnymi zapytaniami?

• Podkręcenie wydajności poprzez cache

• Separacja commit logu oraz danych

• Tuning wydajności poprzez modyfikację parametrów pamięci

• Modyfikacja architektury klastra w celu zwiększenia wydajności

Planowanie produkcyjnej architektury klastra Apache Cassandra

• Dobre praktyki

 • Określanie produkcyjnego obciążenia

• Dobór właściwego sprzętu

• Zalecane ustawienia

Utrzymanie i rozwój infrastruktury klastra Apache Cassandra

1. Zabezpieczanie klastra i danych (autoryzacja i uwierzytelnianie - użytkownicy oraz role) 2. Utrzymywanie spójności klastra (incremental/full repair): jak skutecznie zapobiegać utracie danych

3. Kompaktowanie i kompresja danych w celu zwiększenia wydajności i zmniejszenia kosztów składowania danych

4. Aktualizacja oprogramowania

5. Monitorowanie klastra

  • Grafana
  • DataStax
  • NewRelic
  • DataDog
  • Nagios

6. Kopie zapasowe i przywracanie danych

7. Najważniejsze narzędzia przydatne w codziennej pracy

• cqlsh

• nodetool

• cassandra_stress