Plan Szkolenia
a:8:{i:0;a:2:{s:7:"content";s:105:"
Dzień 1: Teoria i wprowadzenie do systemów rozproszonych
";s:9:"timestamp";i:1730117513;}i:1;a:2:{s:7:"content";s:1315:"
- 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.
";s:9:"timestamp";i:1730117513;}i:2;a:2:{s:7:"content";s:103:"
Dzień 2: Praktyczne aspekty projektowania systemów rozproszonych
";s:9:"timestamp";i:1730117513;}i:3;a:2:{s:7:"content";s:2779:"
- 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.
";s:9:"timestamp";i:1730117513;}i:4;a:2:{s:7:"content";s:95:"
Dzień 3: Praktyczne ćwiczenia i optymalizacja baz danych
";s:9:"timestamp";i:1730117513;}i:5;a:2:{s:7:"content";s:2693:"
- 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ń.
";s:9:"timestamp";i:1730117513;}i:6;a:2:{s:7:"content";s:110:"
Szkolenie nie omawia baz relacyjnych, Elasticsearch, Apache Kafka, Prometheus, Cassandra.
";s:9:"timestamp";i:1730117513;}i:7;a:2:{s:7:"content";s:30:"
";s:9:"timestamp";i:1730117513;}}
Opinie uczestników (1)
Połączenie teorii z ćwiczeniami