O usłudze
PrzetłumaczoneProjektuję i obsługuję rozproszone bazy danych o szerokich kolumnach na Apache Cassandra i ScyllaDB, a zawsze zaczynam od jednej rzeczy: twoich zapytań. Zanim uruchomię węzeł, mapuję wszystkie ścieżki odczytu i zapisu, których twoja aplikacja rzeczywiście potrzebuje, a następnie buduję model danych wokół tych wzorców dostępu. W przechowywaniu kolumnowym tabela podąża za zapytaniem, więc celowo denormalizuję, wybieram klucze partycji z równomiernym rozkładem pierścienia i wybieram kolumny klastrowania, które umieszczają gorące odczyty w jednej partycji.
Następnie dostrajam klaster, aby obsługiwał rzeczywisty ruch. Ustalam współczynnik replikacji i poziomy spójności zgodnie z twoim budżetem na niezawodność i opóźnienie, ograniczam rozmiar partycji, wybieram strategię kompresji dla twojego obciążenia — szereg czasowy, dziennik zdarzeń lub klucz-wartość o wysokim churnie. Utrzymuję potoki zapisu na poziomie dziesiątek tysięcy operacji/sekundę bez zastoju podczas opróżniania i kompresji, a opóźnienie końcowe jest przewidywalne: szerokie partycje, nagrobki i gorące fragmenty łapię wcześnie. W ScyllaDB używam architektury shard-per-core i uzyskuję znacznie większą przepustowość z tego samego sprzętu.
Posiadam również zadania, które psują klastry o 3 nad ranem: harmonogram napraw, wymiana węzłów, replikacja między DC, planowanie pojemności i migracje z relacyjnych baz danych, które przestały się skalować. W drodze wyjścia — baza danych, która absorbuje szczyty i rośnie poprzez dodawanie węzłów.
— Modelowanie danych z zapytań i projektowanie partycji
— Replikacja, spójność i dostrajanie kompresji
— Wysoka przepustowość zapisu i przewidywalne opóźnienie
— Naprawa, wymiana węzłów i konfiguracja multi-DC
Następnie dostrajam klaster, aby obsługiwał rzeczywisty ruch. Ustalam współczynnik replikacji i poziomy spójności zgodnie z twoim budżetem na niezawodność i opóźnienie, ograniczam rozmiar partycji, wybieram strategię kompresji dla twojego obciążenia — szereg czasowy, dziennik zdarzeń lub klucz-wartość o wysokim churnie. Utrzymuję potoki zapisu na poziomie dziesiątek tysięcy operacji/sekundę bez zastoju podczas opróżniania i kompresji, a opóźnienie końcowe jest przewidywalne: szerokie partycje, nagrobki i gorące fragmenty łapię wcześnie. W ScyllaDB używam architektury shard-per-core i uzyskuję znacznie większą przepustowość z tego samego sprzętu.
Posiadam również zadania, które psują klastry o 3 nad ranem: harmonogram napraw, wymiana węzłów, replikacja między DC, planowanie pojemności i migracje z relacyjnych baz danych, które przestały się skalować. W drodze wyjścia — baza danych, która absorbuje szczyty i rośnie poprzez dodawanie węzłów.
— Modelowanie danych z zapytań i projektowanie partycji
— Replikacja, spójność i dostrajanie kompresji
— Wysoka przepustowość zapisu i przewidywalne opóźnienie
— Naprawa, wymiana węzłów i konfiguracja multi-DC