Azure Cosmos DB
Azure Cosmos DB (dawniej DocumentDB) to globalnie rozproszona, wielomodelowa usługa bazy danych w chmurze oferowana przez firmę Microsoft w ramach platformy Azure. System został zaprojektowany jako w pełni zarządzana baza danych NoSQL, ale obsługuje także interfejsy zgodne z SQL, MongoDB, Cassandra, Gremlin oraz Table API. Dzięki temu deweloperzy mogą wybierać model danych najbardziej odpowiadający ich aplikacjom, nie rezygnując przy tym z jednego, scalonego środowiska.
Historia
Usługa została uruchomiona w listopadzie 2017 roku pod nazwą DocumentDB. W 2018 roku, w ramach strategicznej rozbudowy oferty chmurowej, Microsoft wprowadził nową nazwę – Azure Cosmos DB – podkreślając jej zdolności do globalnej replikacji i obsługę wielu modeli danych.
Kluczowe cechy
- Globalna dystrybucja – dane mogą być replikowane do dowolnej liczby regionów Azure, co zapewnia niskie opóźnienia i wysoką dostępność.
- Poziomy spójności – pięć wbudowanych poziomów spójności (Strong, Bounded Staleness, Session, Consistent Prefix, Eventual), które można dostosować do wymagań aplikacji.
- Wielomodelowość – obsługa modeli dokumentowych, klucz-wartość, grafowego i kolumnowego.
- Automatyczne partycjonowanie – baza automatycznie dzieli dane na partycje (ang. partitions) w oparciu o klucz partycjonowania, zapewniając skalowalność przy rosnącym obciążeniu.
- SLAs – gwarancje 99,999% dostępności, 99 % opóźnień w latency oraz 99,999% spójności wybranej konfiguracji.
- Strategie cenowe – model płatności za zużycie (RU/s – Request Units per second) oraz opcja provisioned throughput i serverless.
Model danych i interfejsy API
Azure Cosmos DB umożliwia pracę z różnymi modelami danych przy użyciu dedykowanych interfejsów API:
| API | Model danych | Typowe zastosowanie |
|---|---|---|
| SQL API | Dokumenty JSON | Aplikacje webowe, analizy danych |
| MongoDB API | Dokumenty BSON/JSON | Migracje z istniejących klastrów MongoDB |
| Cassandra API | Model kolumnowy | Systemy czasu rzeczywistego, telemetryka |
| Gremlin API | Grafy | Rekomendacje, analizy sieci społeczne |
| Table API | Klucz‑wartość | Proste przechowywanie metadanych, cache |
Poziomy spójności
Jednym z wyróżniających elementów Azure Cosmos DB jest możliwość wyboru spośród pięciu poziomów spójności, co pozwala zbalansować pomiędzy latency a gwarancją najnowszych danych:
- Strong – pełna spójność, wszystkie odczyty zwracają najnowsze zapisane dane.
- Bounded Staleness – odczyty mogą być opóźnione o określoną liczbę operacji lub czasu.
- Session – spójność w ramach sesji użytkownika (domyślny poziom).
- Consistent Prefix – odczyty zwracają dane w kolejności zapisu, bez przerw.
- Eventual – najniższe opóźnienia, brak gwarancji co do najnowszych danych.
Architektura i skalowalność
System działa w modelu multi‑master, co oznacza, że każdy region może pełnić rolę jednocześnie zarówno odczytu, jak i zapisu. Dane są replikowane przy użyciu globalnej replikacji, a podział na partycje odbywa się automatycznie w oparciu o klucz partycjonowania zdefiniowany przez programistę.
Zastosowania
Azure Cosmos DB znajduje zastosowanie w różnych scenariuszach:
- Systemy IoT i telemetryczne – konieczność przyjmowania dużej liczby zdarzeń w czasie rzeczywistym.
- Aplikacje mobilne i webowe – wymóg niskich opóźnień i globalnej dostępności.
- Analizy grafowe – modele danych oparte na relacjach (np. rekomendacje).
- Platformy e‑commerce – dynamiczne skalowanie przy szczytowych obciążeniach.
Bezpieczeństwo i zgodność
Usługa spełnia wymagania wielu standardów branżowych, w tym ISO/IEC 27001, HIPAA, RODO i SOC‑2. Zapewnione są mechanizmy szyfrowania danych w spoczynku oraz w tranzycie, a także integracja z Azure Active Directory w celu kontroli dostępu.
Krytyka i ograniczenia
Mimo licznych zalet, usługa ma także pewne wady:
- Model cenowy oparty na Request Units może być trudny do przewidzenia przy zmiennym obciążeniu.
- Wymaga starannego doboru klucza partycjonowania – niewłaściwy wybór może prowadzić do tzw. hot partitions.
- Nie wszystkie funkcje dostępne w natywnych bazach NoSQL (np. pełne wsparcie transakcji wielodokumentowych) są w pełni obsługiwane.
Powiązane pojęcia
Więcej informacji można znaleźć w następujących artykułach:
Źródła
Informacje przedstawione w artykule pochodzą z oficjalnej dokumentacji Microsoft oraz publikacji branżowych dostępnych w języku polskim i angielskim.