Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Plan Szkolenia
Dzień 1: Teoria i wprowadzenie do systemów rozproszonych
- Wstęp
- Wprowadzenie do struktury szkolenia i agendy, omówienie środowiska szkoleniowego.
- Podstawowe pojęcia systemów rozproszonych
- Definicja systemów rozproszonych i ich znaczenie we współczesnych aplikacjach.
- Kluczowe wyzwania: skalowalność, dostępność, spójność, odporność na błędy.
- Modele spójności danych
- Omówienie Strong Consistency i Eventual Consistency.
- Zarządzanie spójnością w systemach rozproszonych: quorum, Read-Write Quorums, Read Your Own Writes.
- Systemy rozproszonych logów i komunikacja
- Wzorzec pub/sub i dualizm strumień-tablica.
- Kompaktowanie danych i procesowanie danych w czasie rzeczywistym.
- Case Study 1: Przykład wysoko wydajnych aplikacji
- Analiza architektury systemu komunikacyjnego (np. WhatsApp, Signal).
- Wyzwania związane ze spójnością i odzyskiwaniem danych.
Dzień 2: Praktyczne aspekty projektowania systemów rozproszonych
- Projektowanie aplikacji odpornych na błędy
- Omówienie wzorców CQRS, Inbox/Outbox, Two-Phase Commit (2PC), Saga, Change Data Capture (CDC), Circuit Breaker, Read Repair.
- Przykłady zastosowania w praktyce.
- Przykłady nierelacyjnych baz danych
- Bazy dokumentowe (np. MongoDB, CouchDB):
- Bazy klucz-wartość (np. Redis):
- Bazy grafowe (np. Neo4j, OrientDB):
- Bazy kolumnowe (np. HBase):
- Bazy obiektowe (np. GridGain):
- Bazy time-series (np. TimescaleDB, InfluxDB):
- Search Engine (np. Apache Solr):
- In-Memory Grid (np. Hazelcast, GridGain):
- Nowoczesne bazy danych: Partycjonowanie, sharding i replikacja
- Partycjonowanie i sharding: Omówienie technik dzielenia danych na mniejsze fragmenty w celu poprawy wydajności i skalowalności systemów.
- Replikacja danych: Różne typy replikacji (synchroniczna, asynchroniczna), korzyści i wyzwania związane z replikowaniem danych w rozproszonych środowiskach.
- Indeksy wtórne (Secondary Indexes): Tworzenie i optymalizacja zapytań z wykorzystaniem indeksów wtórnych dla poprawy wydajności.
- Case Study 2: Projektowanie systemu opartego na grafach
- Projektowanie i modelowanie grafowe w systemach rozproszonych z użyciem Neo4j lub OrientDB.
- Ćwiczenie praktyczne: modelowanie grafowe.
- Zarządzanie danymi w czasie rzeczywistym vs klasyczne hurtownie danych
- Wprowadzenie do przetwarzania danych w czasie rzeczywistym oraz batch processing.
- Przykład wykorzystania Timescale w monitorowaniu danych czasowych.
- NewSQL – nowoczesne podejście do relacyjnych baz danych
- Omówienie koncepcji NewSQL jako połączenia zalet relacyjnych baz danych z elastycznością i skalowalnością rozwiązań NoSQL.
- Zadanie dla NewSQL: Uczestnicy zapoznają się z najpopularniejszymi bazami NewSQL, a w zadaniu praktycznym będą pracować z CockroachDB. Celem zadania będzie implementacja transakcji z zachowaniem gwarancji ACID w środowisku rozproszonym.
Dzień 3: Praktyczne ćwiczenia i optymalizacja baz danych
- Zadania praktyczne na przykładzie nierelacyjnych baz danych:
- Zadanie dla MongoDB: Tworzenie złożonych zapytań z agregacją danych.
- Uczestnicy będą pracować nad tworzeniem zapytań z wykorzystaniem pipeline MongoDB, grupowaniem i filtrowaniem danych w czasie rzeczywistym.
- Zadanie dla Redis: Implementacja mechanizmu cache'owania przy użyciu Redis.
- Uczestnicy zbudują system przechowywania wyników zapytań w Redis, aby zoptymalizować wydajność odczytów.
- Zadanie dla CouchDB: Synchronizacja danych w CouchDB przy użyciu funkcji replikacji.
- Zadanie obejmuje konfigurację replikacji pomiędzy dwoma instancjami CouchDB i analizę konfliktów danych.
- Zadanie dla Neo4j: Optymalizacja zapytań z Cypher w bazie grafowej.
- Uczestnicy przeanalizują duży graf i zbudują optymalizacje zapytań wyszukujących zależności między węzłami.
- Zadanie dla InfluxDB: Przetwarzanie danych czasowych i optymalizacja retencji danych.
- Ćwiczenia z użyciem InfluxQL do analizy przepływu danych oraz ustalania strategii retencji.
- Zadanie dla GridGain: Przetwarzanie danych z wykorzystaniem GridGain, budowanie i optymalizacja zapytań w środowisku obiektowym.
- Uczestnicy będą optymalizować przechowywanie i odczyt dużych obiektów.
- Zadanie dla Apache Solr: Implementacja pełnotekstowego wyszukiwania z użyciem Solr.
- Tworzenie indeksów i optymalizacja zapytań wyszukiwawczych na dużych zestawach danych.
- Zadanie dla MongoDB: Tworzenie złożonych zapytań z agregacją danych.
- Zadanie: Transakcje rozproszone
- Uczestnicy zapoznają się z koncepcją transakcji rozproszonych, w tym mechanizmami zapewniającymi spójność w systemach rozproszonych.
- Praktyczne ćwiczenie: Implementacja transakcji rozproszonych z wykorzystaniem wzorców takich jak Two-Phase Commit (2PC) lub Saga.
- Odzyskiwanie danych po awarii i kopie zapasowe
- Wzorce Last-Writer-Wins, Vector Clocks, CRDT.
- Strategie odzyskiwania danych po awarii.
- Podsumowanie i dyskusja
- Sesja Q&A i wymiana doświadczeń.
Szkolenie nie omawia baz relacyjnych, Elasticsearch, Apache Kafka, Prometheus, Cassandra.
21 godzin
Opinie uczestników (1)
Połączenie teorii z ćwiczeniami