Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące architektury dla usługi Azure Cosmos DB dla noSQL

Azure Cosmos DB to w pełni zarządzane rozwiązanie bazy danych, które może hostować wiele typów baz danych, takich jak NoSQL, relacyjne, wektorowe i tabele. Może obsłużyć większość przypadków użycia dla obciążenia roboczego. Zalecenia w tym przewodniku koncentrują się na wariancie Azure Cosmos DB for NoSQL. Możesz również zastosować pewne podstawowe zalecenia do innych wariantów.

W tym artykule założono, że jako architekt przejrzeliśmy opcje danych platformy Azure i wybraliśmy usługę Azure Cosmos DB for NoSQL jako magazyn danych dla obciążenia. Wskazówki w tym artykule zawierają zalecenia dotyczące architektury, dopasowane do zasad filarów Well-Architected Framework.

Ważne

Jak używać tego przewodnika

Każda sekcja zawiera listę kontrolną projektu, która przedstawia zagadnienia dotyczące architektury wraz ze strategiami projektowania odpowiednimi dla zakresu technologii.

Dostępne są również zalecenia dotyczące możliwości technologicznych, które mogą pomóc zmaterializować te strategie. Rekomendacje nie reprezentują wyczerpującej listy wszystkich konfiguracji, które są dostępne dla usługi Azure Cosmos DB for NoSQL i jej zależności. Zamiast tego przedstawiają listę kluczowych zaleceń dopasowywanych do perspektyw projektowych. Skorzystaj z zaleceń, aby utworzyć weryfikację koncepcji lub zoptymalizować istniejące środowiska.

Zakres technologii

Ten przegląd koncentruje się na powiązanych decyzjach dotyczących następujących zasobów platformy Azure:

  • Azure Cosmos DB dla baz danych NoSQL

Niezawodność

Celem filaru niezawodności jest zapewnienie ciągłej funkcjonalności dzięki tworzeniu wystarczającej odporności i możliwości szybkiego odzyskiwania po awariach.

Zasady projektowania systemów niezawodnych zapewniają strategię projektową wysokiego poziomu stosowaną do poszczególnych składników, przepływów systemowych i całego systemu.

Lista kontrolna projektu

Rozpocznij strategię projektu na podstawie listy kontrolnej przeglądu niezawodności projektu. Określ jego znaczenie dla wymagań biznesowych, pamiętając o poziomach spójności, replikacji między regionami i aprowizowanej przepływności. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.

  • Wybierz prosty projekt i unikaj niepotrzebnych funkcji. Nie wdrażaj funkcji, która niepotrzebnie zwiększa złożoność obciążenia, takich jak wiele podstawowych operacji zapisu i indeksowania niestandardowego. Usługa Azure Cosmos DB obsługuje te funkcje, ale mogą one zwiększyć znaczną złożoność i obciążenie operacyjne. Dokładnie oceń, czy obciążenie wymaga jakichkolwiek zaawansowanych funkcji.

    Przeniesienie odpowiedzialności za obciążenie i kwestie wspólne dla wielu usług do innych serwisów, takich jak Microsoft Entra ID na potrzeby uwierzytelniania i autoryzacji, lub Azure Monitor i Application Insights na potrzeby monitorowania.

  • Identyfikowanie i określanie priorytetów przepływów obciążeń. Nie wszystkie przepływy w aplikacji są równie ważne. Zidentyfikuj ścieżki krytyczne i przypisz priorytety do każdego przepływu, aby kierować decyzjami projektowymi. Projekt przepływu użytkownika może mieć wpływ na warstwy usług, funkcje i pojemność przydzielaną do bazy danych usługi Azure Cosmos DB.

    Aby ułatwić identyfikowanie przepływów krytycznych, które mogą wymagać specjalnego traktowania, należy przechwycić wymagania dotyczące przetwarzania, które określają je w zakresie możliwości przetwarzania danych. Na przykład niektóre przepływy mogą wymagać wyższej przepływności lub być bardziej wrażliwe na problemy z opóźnieniami. Niektóre przepływy rozwiązań mogą wymagać różnych poziomów spójności transakcji.

  • Użyj analizy trybu awarii, aby zidentyfikować potencjalne błędy w obciążeniu. Planowanie strategii ograniczania ryzyka potencjalnych awarii. W poniższej tabeli przedstawiono przykłady analizy trybu awarii.

    Niepowodzenie Czynności zapobiegawcze
    Duże opóźnienia i przekroczenia limitu czasu po wdrożeniu dla użytkowników w nowym regionie geograficznym Włącz replikację w wielu regionach do regionu świadczenia usługi Azure, który jest bliżej nowych użytkowników.
    Ograniczanie przepustowości z powodu przekroczenia liczby jednostek żądania (RU) Zaimplementuj logikę ponawiania prób. Monitoruj użycie unitów RU i dostosuj ustawienia przepływu według potrzeb.
    Niepowodzenie usługi Azure Cosmos DB w pojedynczej strefie w jednym regionie świadczenia usługi Azure Konfigurowanie obsługi strefy dostępności podczas tworzenia bazy danych.

    Aby uzyskać więcej informacji, zobacz Analiza trybu awarii dla aplikacji platformy Azure.

  • Twórz nadmiarowość, aby zwiększyć odporność i pomóc spełnić cele dotyczące niezawodności. Zaprojektuj wdrożenie konta bazy danych, aby obejmowało co najmniej dwa regiony na platformie Azure. Rozpowszechnij swoje konto w wielu strefach dostępności, jeśli twój region świadczenia usługi Azure go obsługuje.

    Oceń strategie zapisu w wielu regionach i jednym regionie dla obciążenia. W przypadku zapisu w jednym regionie zaprojektuj obciążenie tak, aby miało co najmniej drugi region odczytu na potrzeby trybu failover. Włącz automatyczne przełączanie awaryjne dla scenariuszy zapisu w jednym regionie i odczytu w wielu regionach. W przypadku zapisu w wielu regionach porównaj kompromisy w złożoności i spójności z zaletami zapisu w wielu regionach. Aby uzyskać więcej informacji, zobacz Oczekiwania podczas awarii regionalnej dla kont zapisu w jednym regionie i wielu regionach.

    Zastanów się, w jaki sposób poziom spójności i tryb replikacji wpływają na cel punktu odzyskiwania (RPO) podczas awarii obejmującej cały region.

    Zaprojektuj kompleksowy test wysokiej dostępności dla swojej aplikacji, który obejmuje testowanie failover oraz failback bazy danych.

  • Użyj natywnych funkcji odzyskiwania po awarii i tworzenia kopii zapasowych. Zaimplementuj kopie zapasowe i przywracanie bazy danych i kontenerów , aby spełnić wymagania. Scenariusze przywracania obejmują przywracanie do stanu z określonego punktu w czasie, odzyskiwanie po przypadkowych operacjach destrukcyjnych, przywracanie usuniętych zasobów i przywracanie do innego regionu w określonym momencie czasu. Skonfiguruj konto przy użyciu ciągłej kopii zapasowej. Wybierz odpowiedni okres przechowywania na podstawie wymagań biznesowych.

  • Dopasuj projekt usługi Azure Cosmos DB do standardowych wskazówek i wzorców projektowania aplikacji branżowych. Zapoznaj się z przewodnikiem projektowania odpornych aplikacji, zapoznaj się z domyślnymi zasadami ponawiania dla zestawów SDK i zaplanuj niestandardową obsługę określonych błędów przejściowych. Te przewodniki zawierają najlepsze rozwiązania, aby kod aplikacji był odporny na błędy przejściowe.

Rekomendacje

Rekomendacja Korzyść
Rozpowszechnij konto usługi Azure Cosmos DB w różnych strefach dostępności , gdy jest dostępne. Strefy dostępności zapewniają oddzielne zasilanie, sieć i chłodzenie, co pomaga izolować awarie sprzętu do części replik. Jeśli nie używasz funkcji stref dostępności, usługa Azure Cosmos DB obejmuje wiele replik w jednej, losowo wybranej strefie dostępności.
Skonfiguruj konto usługi Azure Cosmos DB tak, aby obejmowało co najmniej dwa regiony. Łączenie wielu regionów pomaga zapewnić odporność obciążenia na awarie regionalne.
Włącz tryb failover zarządzany przez usługę dla konta. Zapoznaj się z kompromisami z trybem failover zarządzanym przez usługę i zaplanuj wymuszone przejście w tryb failover w razie potrzeby.

Tymczasowo wyłącz tryb failover zarządzany przez usługę, aby zweryfikować kompleksową wysoką dostępność aplikacji. Ręczne przejście w tryb failover można uruchomić przy użyciu skryptu lub portalu Azure.
Tryb failover zarządzany przez usługę umożliwia usłudze Azure Cosmos DB automatyczne zmienianie regionu zapisu konta z wieloma regionami w celu zachowania dostępności. Ta zmiana występuje bez interakcji z użytkownikiem.

Bezpieczeństwo

Celem filaru Zabezpieczenia jest zapewnienie gwarancji dotyczących poufności, integralności i dostępności obciążenia.

Zasady projektowania zabezpieczeń zapewniają strategię projektowania wysokiego poziomu w celu osiągnięcia tych celów, stosując podejścia do projektu technicznego usługi Azure Cosmos DB for NoSQL.

Lista kontrolna projektu

Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektu pod kątem zabezpieczeń i identyfikowania luk w zabezpieczeniach i mechanizmów kontroli w celu poprawy stanu zabezpieczeń. Rozszerz strategię w celu uwzględnienia większej liczby podejść zgodnie z potrzebami.

  • Przejrzyj punkty odniesienia zabezpieczeń. Aby zwiększyć poziom zabezpieczeń obciążenia, zapoznaj się z listą kontrolną zabezpieczeń baz danych platformy Azure i punktem odniesienia zabezpieczeń dla usługi Azure Cosmos DB. W celu zabezpieczenia konta usługi Azure Cosmos DB należy wdrożyć co najmniej punkty odniesienia zabezpieczeń ochrony danych i zarządzania tożsamościami .

    Ocena zgodności i certyfikacji na poziomie usług w kontekście bieżących globalnych wymagań dotyczących danych osobowych.

  • Zaimplementuj ścisłe, warunkowe i audytowalne zarządzanie tożsamościami i dostępem. Użyj identyfikatora Entra firmy Microsoft na potrzeby uwierzytelniania i autoryzacji obciążenia. Identyfikator Entra firmy Microsoft zapewnia scentralizowane zarządzanie autoryzacją i dostępem.

    Aby uzyskać dostęp płaszczyzny sterowania i płaszczyzny danych do konta, utwórz role, grupy i przypisania na podstawie zasady dostępu z najniższymi uprawnieniami. Rozważ wyłączenie uwierzytelniania opartego na kluczach.

  • Szyfruj dane.Szyfruj dane magazynowane lub dane w ruchu przy użyciu kluczy zarządzanych przez usługę lub kluczy zarządzanych przez klienta.

  • Stosowanie segmentacji sieci i mechanizmów kontroli zabezpieczeń. Twórz zamierzone segmentacje i obwody w projekcie sieci i stosuj szczegółowe zasady ochrony przy użyciu zlokalizowanych mechanizmów kontroli sieci we wszystkich granicach sieci.

    Zmniejsz obszar ataku na powierzchnię, używając prywatnych punktów końcowych zgodnie z punktem odniesienia zabezpieczeń dla usługi Azure Cosmos DB.

  • Zaimplementuj całościową strategię monitorowania zabezpieczeń. Przeprowadź inspekcję dostępu użytkowników, naruszenia zabezpieczeń i operacje zasobów przy użyciu dzienników płaszczyzny sterowania.

    Monitoruj wychodzące dane, zmiany danych, użycie i opóźnienia, korzystając z metryk płaszczyzny danych.

  • Używaj bezpiecznych rozwiązań programistycznych i testowych. Postępuj zgodnie z najlepszymi rozwiązaniami w zakresie tworzenia oprogramowania, aby zapewnić bezpieczny dostęp do danych. Postępuj zgodnie z bezpiecznymi praktykami kodowania i przeprowadzaj bezpieczne przeglądy kodu podczas tworzenia aplikacji korzystających z usługi Azure Cosmos DB.

Rekomendacje

Rekomendacja Korzyść
Wyłącz publiczne punkty końcowe i używaj prywatnych punktów końcowych zawsze, gdy jest to możliwe. Korzystanie z sieci prywatnej za pośrednictwem prywatnych punktów końcowych zmniejsza obszar powierzchni podatny na ataki na konto.
Użyj kontroli dostępu opartej na rolach (RBAC), aby ograniczyć dostęp płaszczyzny kontroli do określonych tożsamości i grup w ramach dobrze zdefiniowanych przypisań. Korzystanie z RBAC (kontroli dostępu opartej na rolach) pomaga zapobiegać nieautoryzowanemu dostępowi do Twojego konta. Przypisz odpowiednie role i uprawnienia do użytkowników lub aplikacji, które uzyskują dostęp do usługi Azure Cosmos DB, na podstawie zasady najniższych uprawnień.
Utwórz punkty końcowe i reguły sieci wirtualnej , aby ograniczyć dostęp do konta. Użyj sieciowych grup zabezpieczeń do kontrolowania ruchu do i z zasobów usługi Azure Cosmos DB. Punkty końcowe usługi sieci wirtualnej, sieciowe grupy zabezpieczeń i reguły zapory pomagają ograniczyć dostęp do konta usługi Azure Cosmos DB i chronić dane przed nieautoryzowanym dostępem.
Ochrona przed typowymi lukami w zabezpieczeniach, takimi jak ataki iniekcyjne, wykonywanie skryptów między witrynami lub niezabezpieczone odwołania do obiektów bezpośrednich. Zaimplementuj walidację danych wejściowych, sparametryzowane zapytania i odpowiednią obsługę błędów dla typowych kodów stanu HTTP , aby zapobiec zagrożeniom bezpieczeństwa. Walidacja danych wejściowych pomaga zapobiec przetwarzaniu złośliwych danych przez aplikację. Takie podejście blokuje potencjalnie szkodliwe dane, które mogą prowadzić do naruszenia zabezpieczeń lub uszkodzenia danych.

Właściwa obsługa błędów umożliwia aplikacji reagowanie na błędy w kontrolowany sposób i uniemożliwia ujawnienie poufnych informacji.
Monitorowanie dzienników płaszczyzny sterowania w celu wykrywania nieautoryzowanych modyfikacji konta usługi Azure Cosmos DB. Monitorowanie ułatwia śledzenie wzorców dostępu i dzienników inspekcji w celu zapewnienia, że baza danych pozostaje bezpieczna i zgodna z odpowiednimi przepisami dotyczącymi ochrony danych. Monitorowanie metryk płaszczyzny danych może również pomóc zidentyfikować nieznane wzorce, które mogą ujawnić naruszenie zabezpieczeń.
Włącz usługę Microsoft Defender dla usługi Azure Cosmos DB , aby wyzwalać alerty zabezpieczeń w przypadku wystąpienia nietypowych działań. Usługa Microsoft Defender wykrywa próby wykorzystania baz danych na twoim koncie. Usługa Defender wykrywa potencjalne wstrzyknięcia kodu SQL, podejrzane wzorce dostępu i inne potencjalne działania związane z wykorzystaniem.

Optymalizacja kosztów

Optymalizacja kosztów koncentruje się na wykrywaniu wzorców wydatków, określaniu priorytetów inwestycji w krytycznych obszarach i optymalizacji w innych w celu spełnienia budżetu organizacji przy jednoczesnym spełnieniu wymagań biznesowych.

Zasady projektowania optymalizacji kosztów zapewniają strategię projektowania o wysokim poziomie, umożliwiającą osiągnięcie tych celów oraz dokonywanie kompromisów w miarę potrzeb w technicznym projektowaniu związanym z usługą Cosmos DB dla baz Bez SQL i jej środowiska.

Lista kontrolna projektu

Rozpocznij strategię projektową, opierając się na liście kontrolnej przeglądu projektu dla optymalizacji kosztów związanych z inwestycjami. Dostosuj projekt tak, aby obciążenie było dostosowane do budżetu przydzielonego dla obciążenia. Projekt powinien korzystać z odpowiednich możliwości platformy Azure, monitorować inwestycje i znajdować możliwości optymalizacji w czasie.

  • Zoptymalizuj strategię skalowania usługi Azure Cosmos DB. Dowiedz się, jak usługa Azure Cosmos DB obsługuje skalowanie magazynu i przepływności. Określ właściwą równowagę wydajności i kosztów, aby spełnić wymagania.

    Wybierz schemat alokacji przepływności, który odpowiada twojemu obciążeniu. Przejrzyj korzyści wynikające ze standardowej i automatycznej przepływności rozproszonej na poziomie bazy danych lub kontenera. Ponadto należy wziąć pod uwagę opcje bezserwerowe, jeśli jest to konieczne. Przeanalizuj wzorce ruchu obciążenia , aby wybrać najbardziej odpowiedni schemat alokacji przepływności.

    Określ klucz partycji lub zestaw kluczy partycji, które mają wysoką kardynalność i pozostają niezmienione. Skorzystaj z istniejących wskazówek i najlepszych rozwiązań , aby pomóc wybrać odpowiedni klucz partycji. Ponadto podczas określania klucza partycji należy wziąć pod uwagę zasady indeksowania .

  • Optymalizowanie kosztów danych usługi Azure Cosmos DB. Sporządź inwentaryzację danych i oblicz oczekiwaną ogólną pojemność przechowywania danych dla Twojego obciążenia roboczego. Rozmiar elementów i indeksów wpływa na koszt magazynu danych. Oblicz wpływ replikacji i kopii zapasowej na koszty magazynu.

    Utwórz strategię automatycznego usuwania starszych elementów, które nie są już używane ani konieczne. Jeśli to konieczne, wyeksportuj te elementy do tańszego rozwiązania magazynowego przed ich usunięciem.

  • Optymalizowanie zapytań pod kątem kosztów. Oceń najbardziej typowe zapytania, które minimalizują wyszukiwanie między partycjami. Te informacje służą do informowania o procesie wybierania klucza partycji lub dostosowywania zasad indeksowania.

    Użyj projekcji, aby zmniejszyć koszty przepływności dużych zestawów wyników zapytań. Autor tworzy zapytania w celu wyświetlania tylko minimalnej liczby wymaganych pól z zestawu wyników. Jeśli obliczenia w polach są niezbędne, oceń koszt przepływności wykonywania tych obliczeń po stronie serwera i po stronie klienta.

    Unikaj używania niezwiązanych zapytań obejmujących wiele partycji. Oceń i stwórz zapytania w celu zapewnienia, że wyszukują w pojedynczej partycji logicznej, gdy tylko jest to możliwe. Użyj filtrów zapytań, aby kontrolować, które partycje logiczne są przeznaczone dla zapytań. Jeśli zapytanie musi przeszukiwać partycje logiczne, należy powiązać zapytanie tylko z podzbiorem partycji logicznych zamiast pełnego skanowania.

    Zaprojektuj zasady indeksowania, które uwzględnia typowe operacje i zapytania w obciążeniu.

Rekomendacje

Rekomendacja Korzyść
Monitoruj użycie i wzorce RU na sekundę. Użyj zapytań i innych technik badań danych, aby znaleźć antywzorzec w kodzie aplikacji. Używanie metryk do monitorowania użycia jednostek RU na wczesnym etapie wdrażania usługi Azure Cosmos DB pomaga zidentyfikować nieefektywne zapytania i operacje, które zużywają nadmierne jednostki RU. Zapytania można zoptymalizować, aby obniżyć koszty.
Dostosuj zasady indeksowania , aby dostosować je do obciążenia. Użyj zasad indeksowania na podstawie tylko ścieżek, które należy indeksować dla typowych zapytań.

W przypadku obciążeń z dużym obciążeniem zapisu wyłącz automatyczne indeksowanie kolumn, które nie są używane w zapytaniach.
Domyślna polityka indeksowania indeksuje wszystkie ścieżki w dokumencie i może znacząco wpłynąć na zużycie jednostek obliczeniowych RU i koszty. Dostosowanie zasad indeksowania umożliwia dostosowanie strategii indeksowania do określonych wymagań. Takie podejście pomaga zapewnić optymalną wydajność i użycie zasobów.
Wybierz klucze partycji dla obciążenia, które równomiernie rozkładają użycie przepustowości i przechowywanie danych między partycjami logicznymi. Unikaj gorących partycji, które otrzymują nieproporcjonalnie dużą ilość ruchu sieciowego. Partycje niezrównoważone mogą zwiększyć koszty przepływności i błędy przejściowe.

Wybór powinien również zminimalizować liczbę niezwiązanych zapytań obejmujących wiele partycji. Użyj najczęściej używanych zapytań wyszukiwania, aby określić potencjalne klucze partycji, które prawdopodobnie uruchamiają tylko zapytania obejmujące pojedynczą partycję lub powiązane zapytania obejmujące wiele partycji.
Wybranie odpowiedniego klucza partycji równomiernie dystrybuuje dane, co zmniejsza prawdopodobieństwo gorących partycji i optymalizuje zużycie przepływności. Takie podejście może znacznie poprawić wydajność i obniżyć koszty.
Wybierz odpowiednią opcję przydzielonej przepływności dla wystąpienia usługi Azure Cosmos DB. Wybierz przepływność bezserwerową lub aprowizowaną oraz ręczną aprowizację lub autoskalowanie. Zastosuj te opcje na poziomie bazy danych lub kontenera w zależności od konkretnych potrzeb obciążenia.

Ogólnie rzecz biorąc, niewielkie obciążenia robocze oraz obciążenia deweloperskie/testowe korzystają z bezserwerowej lub ręcznej udostępnionej wydajności na poziomie bazy danych. Większe, kluczowe obciążenia mogą korzystać z zapewnianej przepustowości na poziomie kontenera.
Wybór odpowiedniej opcji przepływności przydzielonych zasobów pomaga zoptymalizować koszty, unikając ich nadmiernego lub niedostatecznego przydziału. Zmniejsza również koszty operacyjne przy jednoczesnym zapewnieniu, że aplikacja może efektywnie obsługiwać różne wzorce ruchu.
Skonfiguruj domyślny poziom spójności dla aplikacji. W razie potrzeby obniż domyślny poziom spójności w sesjach klienta.

Rozważ wyższe koszty związane z operacjami odczytu na silniejszych poziomach spójności. Może nie zawsze być konieczne zmianę standardowego domyślnego poziomu spójności lub zastąpienie go w sesjach klienta.
Wybranie odpowiedniego poziomu spójności dla aplikacji gwarantuje osiągnięcie żądanej równowagi między spójnością danych, dostępnością, wydajnością i kosztami.
W przypadku obciążeń deweloperskich/testowych użyj emulatora usługi Azure Cosmos DB, który jest również dostępny jako obraz kontenera platformy Docker. Emulator zmniejsza koszty przypadków użycia dewelopmentu/testowania oraz ciągłej integracji.
Użyj transakcyjnych operacji wsadowych. Zaprojektuj partycje, aby korzystać z transakcyjnych operacji wsadowych w kluczu partycji logicznej do wstawiania danych.

Operacje wsadowe w zestawach SDK po stronie klienta umożliwiają wstawianie, aktualizowanie lub usuwanie wielu dokumentów w jednym żądaniu transakcji.
Użycie transakcyjnych operacji wsadowych w usłudze Azure Cosmos DB może pomóc zmniejszyć ilość pojedynczych zapytań. Takie podejście pomaga zmniejszyć opóźnienie i zwiększyć wydajność przepływności.
Zaimplementuj czas wygaśnięcia (TTL), aby automatycznie usunąć niepotrzebne dane. W razie potrzeby wyeksportuj wygasłe dane do tańszego rozwiązania pamięci masowej. Użycie TTL gwarantuje, że baza danych pozostaje niezaśmiecona, co optymalizuje koszty przechowywania. Eksportowanie wygasłych danych do rozwiązania magazynu o niższych kosztach może jeszcze bardziej zmniejszyć wydatki, zachowując dane historyczne na potrzeby zgodności.
Rozważ magazyn analityczny dla ciężkich agregacji. Magazyn analityczny usługi Azure Cosmos DB automatycznie synchronizuje dane z oddzielnym magazynem kolumn w celu optymalizacji pod kątem dużych agregacji, raportowania i zapytań analitycznych.

Doskonałość operacyjna

Doskonałość operacyjna koncentruje się przede wszystkim na procedurach dotyczących praktyk programistycznych, możliwości obserwacji i zarządzania wydaniami.

Zasady projektowania doskonałości operacyjnej zapewniają ogólną strategię projektowania w celu osiągnięcia tych celów, uwzględniając wymagania operacyjne pracy.

Lista kontrolna projektu

Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektu dla doskonałości operacyjnej , aby zdefiniować procesy umożliwiające obserwowanie, testowanie i wdrażanie związane z usługą Azure Cosmos DB for NoSQL.

  • Monitorowanie wystąpień usługi Azure Cosmos DB. Uwzględnij wystąpienia usługi Azure Cosmos DB w różnych regionach w rozwiązaniu do monitorowania obciążenia.

    Tworzenie identyfikatorów w aplikacji klienckiej w celu odróżnienia obciążeń. Rozważ flagi, takie jak sufiks agenta użytkownika, aby zidentyfikować obciążenie, z jakim powinien być skojarzony każdy wpis dziennika lub metryka.

    Opracuj strategię monitorowania dzienników i metryk, aby rozróżniać różne obciążenia, identyfikować wyjątkowe scenariusze, analizować wzorce wyjątków i błędów oraz monitorować wydajność maszyny hosta.

    Zdefiniuj wiele alertów w celu monitorowania limitowania przepustowości, analizowania alokacji przepustowości i śledzenia rozmiaru danych.

    Zaplanuj oczekiwane progi metryk na podstawie projektu partycji i indeksu. Utwórz plan monitorowania tych metryk, aby określić, jak blisko są one do planowanych progów.

  • Automatyzowanie wdrożeń za pomocą infrastruktury jako kodu (IaC). Uwzględnij wszystkie zmiany usługi Azure Cosmos DB, w tym wdrożenia infrastruktury i zmiany konfiguracji, w praktykach wdrażania kodu.

    Tworzenie i wymuszanie najlepszych rozwiązań w celu zautomatyzowania wdrażania konta i zasobów usługi Azure Cosmos DB for NoSQL.

    Upewnij się, że twój zespół używa tych samych szablonów do wdrożenia w innych środowiskach nieprodukcyjnych.

Rekomendacje

Rekomendacja Korzyść
Upewnij się, że deweloperzy aplikacji używają najnowszej wersji zestawu SDK dla deweloperów. Aby uzyskać więcej informacji, zobacz .NET SDK i Java SDK. Każdy zestaw SDK usługi Azure Cosmos DB for NoSQL ma minimalną zalecaną wersję. Korzystanie z najnowszych wersji zestawów SDK deweloperów pomaga zachować wydajność, bezpieczeństwo i zgodność aplikacji.
Przechwyć diagnostykę uzupełniającą przy użyciu technik wstrzykiwania diagnostyki dla każdego SDK. Te techniki dodają dodatkowe informacje o obciążeniu wraz z domyślnymi metrykami i dziennikami. Aby uzyskać więcej informacji, zobacz .NET SDK i Java SDK. Wprowadzając diagnostykę, można przechwytywać niestandardowe metryki, ślady i dzienniki, aby ulepszyć rozwiązywanie problemów i optymalizację aplikacji. Możesz monitorować konkretne aspekty obciążenia, które nie obejmują domyślnych metryk i dzienników.
Utwórz alerty dla zasobów maszyny hosta. Problemy z łącznością i dostępnością mogą wystąpić z powodu problemów z maszyną hosta po stronie klienta. Monitoruj zasoby, takie jak procesor CPU, pamięć i magazyn na maszynach hostów, przy użyciu aplikacji klienckich korzystających z zestawów SDK usługi Azure Cosmos DB for NoSQL.
Utwórz alerty dotyczące ograniczania przepływności przy użyciu metryk, takich jak znormalizowane zużycie jednostek RU. Ta metryka mierzy procentowe użycie aprowizowanej przepływności w bazie danych lub kontenerze.

Użyj alertów, aby śledzić, kiedy ta metryka przekracza oczekiwane progi. W miarę upływu czasu przejrzyj i dostosuj alerty, aby dowiedzieć się więcej o obciążeniu.
Jeśli ograniczanie przepływności stale wynosi 100%, żądania prawdopodobnie zwracają błąd przejściowy. Tworząc alerty na podstawie tej metryki, możesz otrzymywać powiadomienia, gdy użycie przekroczy zdefiniowane progi. Możesz wykonać akcje naprawcze, zanim wpłynie to na wydajność aplikacji.
Użyj metryk wydajności zapytań, aby śledzić wydajność najważniejszych zapytań w czasie. Jeśli wydajność zapytań jest niska, rozwiąż problemy z wydajnością i zastosuj najlepsze rozwiązania dotyczące zapytań. Metryki wydajności pozwalają lepiej zrozumieć, jak działają zapytania i gdzie istnieją potencjalne wąskie gardła. Te informacje ułatwiają podejmowanie świadomych decyzji dotyczących zasad indeksowania i optymalizacji zapytań.
Użyj szablonów, aby automatycznie wdrażać zasoby konta. Rozważ użycie szablonów usługi Azure Resource Manager, Bicep lub Terraform , aby zautomatyzować wdrażanie konta i kolejnych zasobów. Szablony IaC ułatwiają definiowanie infrastruktury w modelu opisowym. Ułatwiają powtarzalność i spójność oraz pomagają zachować jednolite i przewidywalne środowiska obciążeń.
Śledź kluczowe metryki, aby zidentyfikować typowe problemy w obciążeniu pracą, takie jak użycie RU według partycji, ograniczanie przepustowości i wolumeny żądań według typu. Monitorowanie tych kluczowych metryk pomaga zrozumieć, jak baza danych działa w różnych warunkach. Monitorowanie pomaga również identyfikować typowe problemy, dzięki czemu można podjąć działania naprawcze.

Efektywność operacyjna

Efektywność wydajności polega na utrzymywaniu doświadczenia użytkownika nawet wtedy, gdy występuje wzrost obciążenia dzięki zarządzaniu wydajnością. Strategia obejmuje skalowanie zasobów, identyfikowanie i optymalizowanie potencjalnych wąskich gardeł oraz optymalizowanie pod kątem szczytowej wydajności.

Zasady projektowania wydajności operacyjnej zapewniają ogólną strategię projektowania w celu osiągnięcia tych celów wydajności w stosunku do oczekiwanego użycia.

Lista kontrolna projektu

Rozpocznij strategię projektowania na podstawie listy kontrolnej przeglądu projektowania pod kątem wydajności, aby zdefiniować punkt odniesienia na podstawie kluczowych wskaźników wydajności dla Azure Cosmos DB for NoSQL.

  • Planowanie pojemności usługi Azure Cosmos DB i proaktywne zarządzanie nią. Zdefiniuj punkt odniesienia wydajności dla aplikacji. Mierzenie liczby równoczesnych użytkowników i transakcji, które mogą być potrzebne do obsługi. Rozważ charakterystyki obciążeń, takie jak średni przepływ użytkownika, typowe operacje i skoki użycia.

    Zbadaj użytkowników docelowych. Ustal, które regiony platformy Azure znajdują się najbliżej nich.

  • Zoptymalizuj projekt danych. Zaprojektuj elementy tak, aby odpowiadające im dokumenty JSON miały możliwie najmniejsze rozmiary. W razie potrzeby rozważ podzielenie danych między wiele elementów.

    Zachowaj rozmiar elementów mniejszych niż 100 KB . Większe elementy zużywają większą przepływność dla typowych operacji odczytu i zapisu. Zapytania dotyczące większych elementów, które projektują wszystkie pola, mogą również zwiększyć koszt przepływności.

  • Wybierz odpowiedni poziom, funkcje i model płatności. Określ, czy obciążenie wymaga analitycznego magazynu danych. Rozważ magazyny analityczne i usługi, takie jak Azure Synapse Link, w przypadku złożonych zapytań.

  • Optymalizowanie modelu wdrażania. Wdróż usługę Azure Cosmos DB for NoSQL w regionach najbliższych użytkownikom końcowym. | Zmniejsz opóźnienie, wdrażając usługę Azure Cosmos DB for NoSQL w regionach najbliższych użytkownikom końcowym, jak to możliwe.

  • Optymalizowanie zapytań pod kątem wydajności. Zapoznaj się z poradami dotyczącymi wydajności zapytań i zastosuj strategie, które mają zastosowanie do przypadków użycia.

    Identyfikowanie zapytań używających co najmniej jednego pola porządkowania. Ponadto zidentyfikuj operacje wpływające na wiele pól. Dołącz te pola jawnie do projektu zasad indeksowania.

    Projektując duże obciążenia, używaj operacji zbiorczych zawsze, gdy jest to możliwe.

    Zidentyfikuj zapytania dotyczące tablic podrzędnych i ustal, czy są one kandydatami do bardziej wydajnych podzapytania.

    Zbadaj najczęstsze i złożone zapytania. Zidentyfikuj zapytania korzystające z wielu wyszukiwań, sprzężeń lub agregacji. Należy wziąć pod uwagę te zapytania we wszystkich zagadnieniach projektowych dotyczących klucza partycji lub zasad indeksowania.

    W przypadku najbardziej typowych zapytań określ oczekiwaną liczbę wyników dla każdej strony. Ta liczba ułatwia sformalizowanie buforowanej liczby elementów dla wstępnie pobranych wyników.

  • Optymalizowanie logiki kodu. Użyj wzorca pojedynczego dla klasy CosmosClient w większości pakietów SDK. Użyj klasy klienta w większości zestawów SDK jako pojedynczej. Klasa klienta zarządza własnym cyklem życia i została zaprojektowana tak, aby nie została usunięta. Ciągłe tworzenie i usuwanie wystąpień może spowodować zmniejszenie wydajności.

Rekomendacje

Rekomendacja Korzyść
Użyj narzędzi, takich jak kalkulator pojemności , aby określić ilość przepływności wymaganej dla punktu odniesienia wydajności. Użyj funkcji autoskalowania, aby dostosować rzeczywistą wydajność do obciążenia roboczego. Następnie monitoruj rzeczywiste zużycie przepływności i wprowadź zmiany. Korzystanie z kalkulatora pojemności ułatwia wstępne podejmowanie świadomych decyzji dotyczących aprowizacji zasobów. Możesz mieć pewność, że baza danych może obsłużyć oczekiwane obciążenie bez niepotrzebnych kosztów. Przepływność autoskalowania automatycznie dostosowuje przydzieloną przepływność, aby dopasować ją do rzeczywistych potrzeb związanych z obciążeniem.
W razie potrzeby należy użyć technik optymalizacji po stronie klienta i serwera. Korzystaj z wbudowanej zintegrowanej pamięci podręcznej. Skonfiguruj zestaw SDK, aby zarządzać liczbą elementów wstępnie pobranych lub buforowanych i zwracanych dla każdej strony. Techniki optymalizacji kodu mogą poprawić środowisko użytkownika i zwiększyć wydajność aplikacji po stronie klienta i serwera, pomagając zmniejszyć opłaty za jednostki RU dla powtarzających się operacji odczytu i zapytań. Te korzyści mogą obniżyć koszty.
Wdróż wystąpienia usługi Azure Cosmos DB w regionach najbliższych docelowym użytkownikom. Skonfiguruj .NET lub Java SDK, aby preferować regiony bliższe użytkownikom końcowym.

Skorzystaj z replikacji odczytu, aby zapewnić zoptymalizowaną wydajność odczytu niezależnie od sposobu konfigurowania operacji zapisu w jednym lub wielu regionach.
Wdrażanie bazy danych w regionach najbliższych użytkownikom końcowym pomaga zmniejszyć opóźnienia i poprawić środowisko użytkownika. Replikacja odczytu pozwala na sprawne operacje odczytu, niezależnie od sposobu skonfigurowania operacji zapisu.
Skonfiguruj zestaw SDK dla trybu bezpośredniego , aby uzyskać najlepszą wydajność. Ten tryb umożliwia klientowi otwieranie połączeń protokołu TCP (Transmission Control Protocol) bezpośrednio z partycjami w usłudze i wysyłanie żądań bezpośrednio bez bramy pośredniczącej. Tryb bezpośredni zapewnia lepszą wydajność, ponieważ istnieje mniej przeskoków sieciowych.
Skorzystaj z funkcjonalności zbiorczej pakietów SDK klientów w scenariuszach wymagających wysokiej przepustowości. Funkcja zbiorcza automatycznie zarządza operacjami i wykonuje operacje wsadowe w celu zmaksymalizowania przepływności. Użycie funkcji zbiorczej zmniejsza liczbę żądań serwera i efektywnie przydziela zadania między partycjami. Takie podejście zwiększa wydajność i użycie zasobów.
Wyłącz indeksowanie dla operacji zbiorczych. Jeśli istnieje kilka operacji wstawiania, zastępowania lub operacji upsert, wyłącz indeksowanie, aby poprawić szybkość operacji, korzystając z zbiorczej obsługi odpowiedniego zestawu SDK. Indeksowanie można od razu przywrócić później. Wyłączenie indeksowania podczas operacji zbiorczych zmniejsza obciążenie związane z konserwowaniem indeksu. Możesz lepiej wykorzystać zasoby na potrzeby operacji zbiorczych, co przyspiesza wstawianie i aktualizacje danych.
Tworzenie indeksów złożonych dla pól w złożonych operacjach. Rozważ użycie indeksów złożonych dla ORDER BY instrukcji, które mają wiele pól. Indeksy złożone mogą zwiększyć wydajność operacji na wielu polach, co sprawia, że pobieranie danych jest szybkie i wydajne.
Optymalizuj komputery klienckie hostowane dla zestawów SDK. W większości typowych przypadków należy użyć co najmniej czterech rdzeni i ośmiu GB pamięci na 64-bitowych maszynach hosta korzystających z zestawów SDK dla platformy .NET lub Java.

Włącz przyspieszoną sieć na maszynach hostów.
Korzystanie z maszyn, które mają wyższe specyfikacje, gwarantuje, że zestawy SDK mogą obsługiwać więcej operacji jednocześnie. Przyspieszona sieć może pomóc zmniejszyć opóźnienie, co zwiększa czas odpowiedzi.
Użyj podzapytania strategicznie, aby zoptymalizować zapytania, które łączą duże zestawy danych. Zoptymalizuj wyrażenia autosprzężenia za pomocą podzapytań, aby filtrować tablice przed połączeniem tablic w elemencie.

W przypadku zapytań obejmujących wiele partycji zoptymalizuj zapytanie, aby uwzględnić filtr w kluczu partycji, aby zoptymalizować routing zapytania do najmniejszej możliwej ilości partycji.
Zapytania, które łączą tablice podrzędne, mogą zwiększyć poziom złożoności, gdy wiele tablic jest zaangażowanych i pozostają nieprzefiltrowane. Stosując podzapytania, tablice można filtrować przed ich dołączeniem, co zwiększa wydajność wyrażeń sprzężenia samodzielnego.
Korzystanie z obciążeń analitycznych w przypadku najbardziej złożonych zapytań.

Jeśli uruchamiasz częste agregacje lub dołączasz zapytania do dużych kontenerów, rozważ włączenie magazynu analitycznego i wykonywanie zapytań w usłudze Azure Synapse Analytics.
Obciążenia analityczne są odizolowane od obciążeń transakcyjnych i zoptymalizowane pod kątem obsługi złożonych zapytań, co zapobiega pogorszeniu wydajności i zapewnia szybsze wyniki.

Zasady platformy Azure

Platforma Azure udostępnia obszerny zestaw wbudowanych zasad związanych z usługą Azure Cosmos DB for NoSQL i jej zależnościami. Niektóre z wcześniejszych zaleceń można poddawać audytowi za pomocą usługi Azure Policy. Możesz na przykład sprawdzić, czy:

  • Konto usługi Azure Cosmos DB jest wdrażane w co najmniej dwóch regionach.

  • Konta bazy danych usługi Azure Cosmos DB są odpowiednio skonfigurowane pod kątem redundancji strefy.

  • Konta baz danych usługi Azure Cosmos DB powinny mieć wyłączone lokalne metody uwierzytelniania, tak aby wymagać uwierzytelniania za pomocą tożsamości Microsoft Entra.

  • Dostęp do sieci publicznej jest wyłączony, aby twoje konto usługi Azure Cosmos DB nie było widoczne w publicznym Internecie.

  • Maksymalna przepływność powinna być ograniczona podczas tworzenia baz danych i kontenerów usługi Azure Cosmos DB za pośrednictwem dostawcy zasobów.

Aby uzyskać kompleksowe zarządzanie, przejrzyj wbudowane definicje Azure Policy dla Azure Cosmos DB dla NoSQL oraz inne zasady, które mogą mieć wpływ na bezpieczeństwo przechowywania danych.

Rekomendacje usługi Azure Advisor

Azure Advisor to spersonalizowany konsultant ds. chmury, który pomaga stosować najlepsze rozwiązania w celu zoptymalizowania wdrożeń platformy Azure.

Aby uzyskać więcej informacji, zobacz Azure Advisor.