Azure Cosmos DB Conf 2021 – Podsumowanie

Jako że już od dłuższego czasu mam okazję pracować z Cosmos DB, to wydarzenie Azure Cosmos DB Conf wyjątkowo zwróciło moją uwagę. W dużej mierze liczyłem na poznanie ciekawych technik, które usprawnią codzienną pracę z tytułową usługą. Może konferencja nie do końca spełniła te oczekiwania, ale w zamian dowiedziałem się o kilku ciekawych metodach i technologiach, które opiszę w tym wpisie.

Słowo wstępu w postaci wyjaśnienia dla tych z Was, którzy nie mieli jeszcze okazji zapoznać się z Cosmos DB:

Krótka definicja Azure Cosmos DB*

Azure Cosmos DB jest bazą danych typu NoSQL. Od innych systemów bazodanowych tego typu wyróżnia się przede wszystkim możliwością wyboru API dostępu do danych. Aktualnie mamy takie możliwości:

  • SQL API,
  • MongoDB API,
  • Cassandra API,
  • Gremlin API,
  • Table API.

Na szczególną uwagę podczas konferencji zasłużył model MongoDB. Z nowinek można wskazać kilka funkcjonalności dzięki obiecanemu wsparciu MongoDB 4.0. Jeśli jesteście ciekawi więcej szczegółów na ten temat, odsyłam tutaj.

W trakcie prezentacji kilkukrotnie podkreślone zostały zalety używania Cosmos DB API:

  • Automatyczny sharding i nieograniczona skala w przechowywaniu danych. Można powiedzieć, że niejako dowodem prawdziwości tego punktu było wskazanie faktu, że Microsoft Teams z powodzeniem wykorzystuje Cosmosa – przy wzroście średniej ilości dziennych transakcji z 500 miliardów/dzień w roku 2019, do ponad 2 bilionów dziennie w roku 2021 i jednoczesnym wzroście ilości przechowywanych danych – z ok. 800 TB do ponad 5000 TB (5 PB) w tym samym okresie.
  • Automatyczne, natychmiastowe skalowanie,
  • RTO = 0 uzyskane dzięki strefowej redundancji danych,
  • Serverless, cloud-native,
  • Analizy danych real-time dzięki integracji z Azure Synapse Link.

Ostatni punkt, związany z Synapse Link został omówiony nieco szerzej i również moim zdaniem zasługuje na chwilę uwagi:

Architecture diagram for Azure Synapse Analytics integration with Azure Cosmos DB
Integracja analityczna Cosmos DB przez Synapse Link

Celem ogólnym tej technologii jest umożliwienie budowy rozwiązań HTAP (Hybrid transactional/analytical processing), dzięki którym można prowadzić analizy danych czasu rzeczywistego w Azure. Zasada działania wydaje się całkiem prosta – W Cosmos DB przechowujemy operacje transakcyjne w transakcyjnym magazynie danych i replikujemy je poprzez auto-synchronizację do magazynu analitycznego (store kolumnowy), mieszczącego się również w obrębie kontenera Cosmosa. Dzięki takiemu podejściu magazyn analityczny może działać niezależnie od aktualnego natężenia części transakcyjnej – co sprawia, że nie wpływają one na swoją przepustowość, a co za tym idzie – wydajność. Tak przechowywane dane możemy połączyć z innymi usługami platformy Azure Synapse Analytics (takimi jak Apache Spark lub Microsoft Power BI), w celu dalszego przetwarzania lub przygotowania wizualizacji.

Kilka innych obietnic (niezależnie od API):

  • zniesienie limiu RU/GB do końca maja,
  • funkcjonalność rekomendacji wyboru partition key,
  • podpartycje (subpartitions),
  • dostosowywalny zakres skalowalności.

Na konferencji zostało też przedstawionych kilka technik i narzędzi, które mogą zaciekawić:

Striim – rozwiązanie ułatwiające proces migracji danych. Platforma wspiera budowanie pipeline’ów migracyjnych pomiędzy różnymi bazami danych. Szczególnie podkreślona została możliwość migracji danych pochodzących z rozwiązań on-premises do baz danych w chmurze (w szczególności do Cosmos DB). Samo rozwiązanie jest szczególnie użyteczne w procesach synchronizacji danych real-time, a opiera się na mechanizmie Change Data Capture, w celu wykrywania zmian w źródłowych bazach danych.

GraphQL + Cosmos DB – Została zaprezentowana możliwość odpytywania bazy danych przez GraphQL, przy konfiguracji serwera GraphQL (Apollo/HotChocolate) wewnątrz Azure Function.

Konfiguracja GraphQL do Cosmos DB

Cosmos DB ChangeFeed – Temat interesujący, na samej konferencji omówiony po japońsku, przy slajdach w języku angielskim. Celem rozwiązania jest wykrywanie zmian w bazie danych i reakcja na zachodzące zmiany, bez potrzeby odpytywania o aktualny stan danych lub implementacji dodatkowej logiki wykrywającej modyfikację danych. Istnieje kilka możliwości reakcji na ChangeFeed’a, natomiast przedstawione zostało użycie z wykorzystaniem Azure Function i wbudowanego w usługę mechanizmu Cosmos DB Trigger, który bazuje właśnie na ChangeFeed.

Cosmos DB ChangeFeed

Jako dodatkową ciekawostkę warto dodać, że rozwiązanie możemy zastosować na dwa sposoby, przy użyciu jednego z poniższych modeli:

  • model Push – skierowany głównie do rozwiązań strumieniowego przetwarzania danych,
  • model Pull – przeznaczony głównie do potrzeb przetwarzania batchowego.

Architektura Polyglot Persistence – Czyli nic innego jak zastosowanie wielu baz danych dla jednego systemu informatycznego. Temat dobrze znany, ale niektóre rzeczy warto podkreślić:

  • Nie znajdziemy jednej bazy danych, która spełni oczekiwania we wszystkich możliwych sytuacjach.
  • Nie możemy zastosować tego samego modelu bazodanowego we wszystkich możliwych miejscach i spodziewać się, że nie będzie z takim rozwiązaniem żadnych problemów.
  • Rozwiązanie Polyglot Persistence pozwala na wydajniejsze dostosowanie do rosnącej skali problemu (np. rozmiaru danych).
Przykładowe wdrożenie architektury Polyglot Persistence
  • Hackolade – Aplikacja przedstawiona została przy okazji rozwiązań wielobazowych z poprzedniego punktu. Narzędzie służy głównie do projektowania baz danych NoSQL.

Podczas wydarzenia przedstawione zostały również rozwiązania architektoniczne pełnometrażowego przetwarzania danych oraz lead scoring przeprowadzony na danych napływających w czasie rzeczywistym – w obu przypadkach materiały zostały dostarczone przez organizację Adobe. Tematy są raczej zbyt złożone, żeby zawrzeć je w tym krótkim streszczeniu, ale dla zainteresowanych zostawiam linki wideo – Real Time Scoring, System Architectures to Build a Truly Unified View.

* Wszystkie materiały zostały zamieszczone za zgodą organizatora konferencji Azure Cosmos DB Conf 2021.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *