Udostępnij za pośrednictwem


Przegląd platformy Azure Well-Architected Framework — Azure Cosmos DB for NoSQL

W tym artykule opisano najlepsze rozwiązania dotyczące usługi Azure Cosmos DB for NoSQL. Te najlepsze rozwiązania zapewniają, że można wdrażać rozwiązania w usłudze Azure Cosmos DB, które są wydajne, niezawodne, bezpieczne, zoptymalizowane pod kątem kosztów i działają doskonale. Te wskazówki koncentrują się na pięciu filarach doskonałości architektury w dobrze zaprojektowanej strukturze:

W tym przewodniku przeglądu założono, że masz działającą wiedzę na temat usługi Azure Cosmos DB i dobrze znasz jej funkcje. Aby uzyskać więcej informacji, zobacz Azure Cosmos DB for NoSQL.

Wymagania wstępne

Zrozumienie filarów dobrze zaprojektowanej struktury może pomóc w utworzeniu wysokiej jakości, stabilnej i wydajnej architektury chmury. Zalecamy rozpoczęcie od przejrzenia obciążenia przy użyciu oceny przeglądu platformy Azure Well-Architected Framework.

Aby uzyskać więcej kontekstu, zapoznaj się z różnymi architekturami referencyjnymi, które odzwierciedlają zagadnienia z tego przewodnika w ich projekcie. Te architektury obejmują, ale nie są ograniczone do następujących:

Niezawodność

Podobnie jak w przypadku dowolnej usługi w chmurze, awarie mogą wystąpić zarówno po stronie usługi, jak i obciążenia. Nie można zapobiec wszystkim potencjalnym awariom, ale lepszym celem jest zminimalizowanie skutków, jakie może mieć pojedynczy składnik awarii w całym obciążeniu. Ta sekcja zawiera zagadnienia i zalecenia, aby zminimalizować konsekwencje awarii jednorazowej.

Lista kontrolna projektu

  • Zastanów się, jak wybrany poziom spójności i tryb replikacji wpływa na cel punktu odzyskiwania (RPO) w awarii całego regionu.
  • Zaprojektuj wdrożenie konta bazy danych, aby obejmowało co najmniej dwa regiony na platformie Azure. Ponadto możesz dystrybuować konto w wielu strefach dostępności, jeśli są oferowane w regionie świadczenia usługi Azure.
  • 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 w tryb failover 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. Przejrzyj oczekiwania podczas awarii regionalnej dla kont zapisu w jednym regionie i wielu regionach.
  • Włącz tryb failover zarządzany przez usługę dla konta.
  • Projektowanie kompleksowego testu wysokiej dostępności aplikacji.
  • Zapoznaj się z typowymi procesami tworzenia kopii zapasowych, w tym przywracaniem do punktu w czasie, odzyskiwaniem po przypadkowych operacjach destrukcyjnych, przywracaniem usuniętych zasobów i przywracaniem do innego regionu w określonym momencie. Skonfiguruj konto z ciągłą kopią zapasową, wybierając odpowiedni okres przechowywania na podstawie wymagań biznesowych.
  • Zapoznaj się z przewodnikiem projektowania odpornych aplikacji, przejrzyj domyślne zasady ponawiania dla zestawów SDK i zaplanuj niestandardową obsługę określonych błędów przejściowych. Te przewodniki zapewnią najlepsze rozwiązania, aby kod aplikacji był odporny na błędy przejściowe.

Zalecenia

Zalecenie Korzyści
Dystrybuowanie konta usługi Azure Cosmos DB między strefami dostępności (jeśli są dostępne). Strefy dostępności zapewniają odrębną moc, sieć i chłodzenie izolowanie awarii sprzętu w podzestawie replik. Usługa Azure Cosmos DB ma wiele replik obejmujących jedną losową strefę dostępności, gdy funkcja stref dostępności nie jest używana. Jeśli jest używana funkcja strefy dostępności, repliki obejmują wiele stref dostępności.
Skonfiguruj konto usługi Azure Cosmos DB tak, aby obejmowało co najmniej dwa regiony. Łączenie wielu regionów uniemożliwia całkowite niedostępność konta, jeśli wystąpi awaria izolowanego regionu.
Włącz tryb failover zarządzany przez usługę dla konta. Tryb failover zarządzany przez usługę umożliwia usłudze Azure Cosmos DB zmianę regionu zapisu konta z wieloma regionami w celu zachowania dostępności. Ta zmiana występuje bez interakcji z użytkownikiem. Omówienie kompromisów związanych z trybem failover zarządzanym przez usługę i planowanie wymuszonego przejścia w tryb failover w razie potrzeby. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji o wysokiej dostępności.
Zweryfikuj dostępność, testując tryb failover ręcznie przy użyciu tymczasowo wyłączonego trybu failover zarządzanego przez usługę. Tymczasowe wyłączenie trybu failover zarządzania usługą umożliwia zweryfikowanie kompleksowej wysokiej dostępności aplikacji przy użyciu ręcznego przejścia w tryb failover przy użyciu skryptu lub witryny Azure Portal. Następnie można ponownie przywrócić tryb failover zarządzany przez usługę.

Definicje zasad Azure Policy

Zabezpieczenia

Bezpieczeństwo jest krytyczną częścią każdej architektury, którą można łatwo pominąć dla wygody. Wzmocnij bezpieczeństwo końcowego obciążenia, rozważając różne najlepsze rozwiązania w zakresie zabezpieczeń przed utworzeniem pierwszego zasobu lub weryfikacji koncepcji. Ta sekcja zawiera zagadnienia i zalecenia, aby zmniejszyć liczbę luk w zabezpieczeniach dla końcowego obciążenia.

Lista kontrolna projektu

  • Zmniejsz obszar ataków powierzchniowych, projektując użycie prywatnych punktów końcowych zgodnie z punktem odniesienia zabezpieczeń dla usługi Azure Cosmos DB.
  • Tworzenie ról, grup i przypisań na potrzeby dostępu płaszczyzny sterowania i płaszczyzny danych do konta zgodnie z zasadą dostępu do najniższych uprawnień. Rozważ wyłączenie uwierzytelniania opartego na kluczach.
  • Ocena zgodności i certyfikacji na poziomie usług w kontekście bieżących globalnych wymagań dotyczących danych osobowych.
  • Szyfruj dane magazynowane lub w ruchu przy użyciu kluczy zarządzanych przez usługę lub kluczy zarządzanych przez klienta (CMKs).
  • Przeprowadź inspekcję dostępu użytkowników, naruszenia zabezpieczeń i operacje zasobów przy użyciu dzienników płaszczyzny sterowania.
  • Monitorowanie ruchu wychodzącego danych, zmian danych, użycia i opóźnień za pomocą metryk płaszczyzny danych.

Zalecenia

Zalecenie Korzyści
Zaimplementuj co najmniej punkty odniesienia zabezpieczeń ochrony danych i zarządzania tożsamościami. Zapoznaj się z punktem odniesienia zabezpieczeń, w tym zarządzaniem tożsamościami i ochroną danych. Zaimplementuj zalecenia, aby zabezpieczyć konto usługi Azure Cosmos DB.
Wyłącz publiczne punkty końcowe i używaj prywatnych punktów końcowych zawsze, gdy jest to możliwe. Unikaj pozostawiania niepotrzebnych lub nieużywanych publicznych punktów końcowych dostępnych dla ataków obszaru powierzchni na konto.
Użyj kontroli dostępu opartej na rolach, aby ograniczyć dostęp płaszczyzny kontroli do określonych tożsamości i grup oraz w zakresie dobrze zdefiniowanych przypisań. Użyj kontroli dostępu opartej na rolach, aby zapobiec niezamierzonemu dostępowi do konta. Przypisz odpowiednie role i uprawnienia do użytkowników lub aplikacji, które uzyskują dostęp do usługi Azure Cosmos DB.
Utwórz punkty końcowe i reguły sieci wirtualnej, aby ograniczyć dostęp do konta. Zaimplementuj punkty końcowe usługi sieci wirtualnej i reguły zapory, aby ograniczyć dostęp do konta usługi Azure Cosmos DB. Użyj sieciowych grup zabezpieczeń do kontrolowania ruchu przychodzącego i wychodzącego do i z zasobów usługi Azure Cosmos DB. Ograniczenie dostępu do zaufanych sieci i zastosowanie odpowiednich środków zabezpieczeń sieci pomaga chronić dane przed nieautoryzowanym dostępem.
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. Ochrona przed typowymi lukami w zabezpieczeniach, takimi jak ataki iniekcyjne, skrypty między witrynami (XSS) lub niezabezpieczone odwołania do obiektów bezpośrednich (IDOR). 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.
Monitorowanie dzienników płaszczyzny sterowania pod kątem naruszeń. Monitorowanie pomaga śledzić wzorce dostępu i dzienniki inspekcji, zapewniając, ż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ń. Aby uzyskać więcej informacji, zobacz lista kontrolna zabezpieczeń dla baz danych platformy Azure.
Włączanie usługi Microsoft Defender dla usługi Azure Cosmos DB Usługa Microsoft Defender wykrywa próby wykorzystania baz danych na koncie usługi Azure Cosmos DB for NoSQL. Usługa Defender wykrywa potencjalne wstrzyknięcia kodu SQL, podejrzane wzorce dostępu i inne potencjalne wykorzystanie.

Definicje zasad Azure Policy

Optymalizacja kosztów

Cechy obciążenia i implementacja rozwiązania mogą mieć wpływ na ostateczny koszt działania na platformie Azure. Podczas projektowania obciążenia należy wziąć pod uwagę główne czynniki, takie jak strategia partycjonowania, poziom spójności, replikacja i typ zapisu. Podczas określania rozmiaru obciążenia należy wziąć pod uwagę charakter odczytu/zapisu danych, rozmiar średnich elementów, normalizacji i czasu wygaśnięcia. Ta sekcja zawiera zagadnienia i zalecenia, które usprawniają koszty obciążenia.

  • Zaprojektuj zasady indeksowania, które są uwzględniane w operacjach i zapytaniach, które są często wykonywane w obciążeniu.
  • Określ klucz partycji lub zestaw kluczy partycji, które mają wartość o wysokiej kardynalności i nie zmieniają się. Skorzystaj z istniejących wskazówek i najlepszych rozwiązań , aby pomóc wybrać odpowiedni klucz partycji. Należy również wziąć pod uwagę zasady indeksowania podczas określania klucza partycji.
  • Wybierz schemat alokacji przepływności odpowiedni dla obciążenia. 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ę bezserwerowe, jeśli jest to konieczne. Przejrzyj wzorce ruchu obciążenia w kontekście wybierania schematu alokacji przepływności.
  • Należy wziąć pod uwagę poziomy spójności, ponieważ odnoszą się one do obciążenia. Należy również rozważyć, czy sesje klienta powinny zmienić domyślny poziom spójności.
  • Oblicz oczekiwany ogólny magazyn danych dla obciążenia. Rozmiar elementów i indeksów wpływa na koszt magazynu danych. Calcuate 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. W razie potrzeby wyeksportuj te elementy do rozwiązania magazynu niższego kosztu przed ich usunięciem.
  • 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.

Zalecenia

Zalecenie Korzyści
Monitorowanie wykorzystania jednostek RU/s i wzorców. Użyj metryk, aby monitorować użycie jednostek RU od samego początku rozwiązania. Użyj zapytań i innych technik badań danych, aby znaleźć antywzorzec w kodzie aplikacji.
Dostosuj zasady indeksowania, aby mapować je na obciążenie. Domyślne indeksowanie zasad indeksuje wszystkie ścieżki w elemencie, a te zasady mogą mieć znaczący wpływ na użycie jednostek RU i koszty. Użyj zasad indeksowania zaprojektowanych 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.
Wybierz pozycję Klucz partycji[s], który jest idealny dla obciążenia. Klucz partycji powinien równomiernie dystrybuować użycie przepływności i magazyn danych między partycjami logicznymi. Wybór powinien również zminimalizować liczbę niezwiązanych zapytań obejmujących wiele partycji. Unikaj gorących partycji, które odbierają nieproporcjonalną ilość ruchu, ponieważ partycje niezrównoważone mogą zwiększyć koszty przepływności i błędy przejściowe. Użyj najczęściej używanych zapytań wyszukiwania, aby określić potencjalny klucz partycji[s], który prawdopodobnie wykonuje tylko zapytania obejmujące pojedynczą partycję lub powiązane zapytania obejmujące wiele partycji.
Używaj przepływności bezserwerowej lub aprowizowanej, ręcznej aprowizacji lub automatycznego skalowania na poziomie bazy danych lub kontenera, jeśli jest to odpowiednie dla obciążenia. Porównaj aprowizowane typy przepływności i wybierz odpowiednią opcję dla obciążenia. Ogólnie rzecz biorąc, mniejsze i testowe obciążenia mogą korzystać z przepływności bezserwerowej lub ręcznej udostępnionej przepływności na poziomie bazy danych. Większe obciążenia o znaczeniu krytycznym mogą korzystać z aprowizowanej przepływności przypisanej na poziomie kontenera.
Skonfiguruj domyślny poziom spójności dla aplikacji. W razie potrzeby obniż domyślny poziom spójności w sesjach klienta. Może nie zawsze być konieczne zmianę standardowego domyślnego poziomu spójności lub zastąpienie go w sesjach klienta. Rozważ wyższe koszty związane z operacjami odczytu na silniejszych poziomach spójności.
W przypadku obciążeń tworzenia i testowania użyj emulatora usługi Azure Cosmos DB. Emulator usługi Azure Cosmos DB to opcja tworzenia i testowania i ciągłej integracji, która może zaoszczędzić na kosztach tych typowych obciążeń dla zespołu deweloperskiego. Emulator jest również dostępny jako obraz kontenera platformy Docker.
Korzystanie z transakcyjnych operacji wsadowych Zaprojektuj partycje, aby korzystać z transakcyjnych operacji wsadowych w kluczu partycji logicznej do wstawiania. Operacje wsadowe w zestawach SDK po stronie klienta służą do wstawiania, aktualizowania lub usuwania wielu dokumentów w jednym żądaniu transakcji. Ten krok może zmniejszyć liczbę pojedynczych żądań i ostatecznie prowadzić do lepszej wydajności przepływności.
Użyj projekcji, aby zmniejszyć koszty przepływności dużych zestawów wyników zapytań. Tworzenie zapytań w celu projekcji tylko minimalnej liczby pól wymaganych 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. Ocenianie i tworzenie zapytań w celu upewnienia się, że wyszukują w jednej partycji logicznej zawsze, gdy 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.
Zaimplementuj czas wygaśnięcia (TTL), aby usunąć nieużywane elementy. Użyj czasu wygaśnięcia, aby automatycznie usuwać dane, które nie są już potrzebne. Zarządzanie kosztami magazynowania przez usunięcie wygasłych lub przestarzałych danych. W razie potrzeby wyeksportuj wygasłe dane do rozwiązania magazynu o niższych kosztach.
Rozważ magazyn analityczny dla dużych 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.

Definicje zasad Azure Policy

Doskonałość operacyjna

Obciążenia muszą być monitorowane po ich wdrożeniu, aby upewnić się, że działają zgodnie z oczekiwaniami. Ponadto monitorowanie obciążeń może pomóc w odblokowaniu nowych wydajności, które nie są od razu oczywiste w fazie planowania. W katastroficznych scenariuszach dane diagnostyczne są kluczem do odkrycia przyczyny wystąpienia zdarzenia o wysokiej ważności. Ta sekcja zawiera zagadnienia i zalecenia dotyczące monitorowania zdarzeń i cech obciążeń.

Lista kontrolna projektu

  • Utwórz wersję roboczą strategii monitorowania dzienników i metryk, aby odróżnić różne obciążenia, oznaczyć wyjątkowe scenariusze, śledzić wzorce wyjątków/błędów i śledzić wydajność maszyny hosta.
  • Zaprojektuj duże obciążenia, aby używać operacji zbiorczych zawsze, gdy jest to możliwe.
  • Zdefiniuj wiele alertów w celu monitorowania ograniczania przepustowości, analizowania alokacji przepływności i śledzenia rozmiaru danych.
  • Projektowanie strategii monitorowania pod kątem dostępności rozwiązania w różnych regionach.
  • Tworzenie i wymuszanie najlepszych rozwiązań dotyczących automatyzowania wdrażania konta i zasobów usługi Azure Cosmos DB for NoSQL.
  • Zaplanuj oczekiwane progi metryk na podstawie projektu partycji i indeksu. Upewnij się, że istnieje plan monitorowania tych metryk w celu określenia, jak blisko są one do planowanych progów.

Zalecenia

Zalecenie Korzyści
Upewnij się, że deweloperzy aplikacji korzystają z najnowszej wersji zestawu SDK dla deweloperów. Każdy zestaw SDK usługi Azure Cosmos DB for NoSQL ma minimalną zalecaną wersję. Aby uzyskać więcej informacji, zobacz Zestaw .NET SDK i zestaw Java SDK.
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.
Przechwyć diagnostykę uzupełniającą przy użyciu zestawu SDK dla deweloperów. Użyj technik iniekcji diagnostyki dla każdego zestawu SDK, aby dodać dodatkowe informacje o obciążeniu wraz z domyślnymi metrykami i dziennikami. Aby uzyskać więcej informacji, zobacz Zestaw .NET SDK i zestaw Java SDK.
Utwórz alerty skojarzone z zasobami maszyny hosta. Połączenie ivity i problemy z dostępnością mogą wystąpić z powodu problemów z maszyną hosta po stronie klienta. Monitorowanie zasobów, takich jak procesor CPU, pamięć i magazyn na maszynach hostów przy użyciu aplikacji klienckich przy użyciu zestawów SDK usługi Azure Cosmos DB for NoSQL.
Użyj zbiorczych funkcji zestawów SDK klienta na potrzeby dużych operacji. Scenariusze wymagające wysokiego stopnia przepływności korzystają z funkcji zbiorczej zestawu SDK. Funkcja zbiorcza automatycznie zarządza operacjami i wykonuje operacje wsadowe w celu zmaksymalizowania przepływności.
Utwórz alerty dotyczące ograniczania przepływności. Użyj alertów, aby śledzić ograniczanie przepływności poza oczekiwanymi progami. W miarę upływu czasu przejrzyj i dostosuj alerty, aby dowiedzieć się więcej o obciążeniu w odniesieniu do usługi Azure Cosmos DB. Metryka Znormalizowane użycie jednostek RU to metryka, która mierzy procentowe wykorzystanie aprowizowanej przepływności w bazie danych lub kontenerze. Jeśli ta metryka jest spójna na poziomie 100%, żądania prawdopodobnie zwracają błąd przejściowy.
Śledzenie wydajności zapytań przy użyciu metryk. Użyj metryk, aby śledzić wydajność najważniejszych zapytań w czasie. Oceń, czy można znaleźć wydajność, aktualizując zasady indeksowania lub zmieniając zapytania. Jeśli wydajność zapytań jest niska, rozwiąż problemy z wydajnością i zastosuj najlepsze rozwiązania dotyczące zapytań. Aby uzyskać więcej informacji, zobacz porady dotyczące wydajności 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. Upewnij się, że twój zespół używa tych samych szablonów do wdrożenia w innych środowiskach nieprodukcyjnych.
Śledź kluczowe metryki, aby zidentyfikować typowe problemy w obciążeniu. Użyj określonych metryk, aby znaleźć typowe problemy w obciążeniu, w tym, ale nie tylko; Wykorzystanie jednostek RU, wykorzystanie jednostek RU według partycji, ograniczanie przepustowości i woluminy żądań według typu. Aby uzyskać więcej informacji, zobacz monitorowanie dokumentacji danych.

Definicje zasad Azure Policy

Efektywność wydajności

  • 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 najbardziej typowe i najbardziej 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 liczbę oczekiwanych wyników na stronę. Ten numer pomoże sformalizować liczbę buforowanych elementów dla wstępnie pobranych wyników.
  • Zbadaj użytkowników docelowych. Ustal, które regiony platformy Azure znajdują się najbliżej nich.
  • 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.
  • Zaprojektuj elementy tak, aby odpowiadające im dokumenty JSON miały możliwie najmniejsze rozmiary. Rozważ podzielenie danych między wiele elementów w razie potrzeby.
  • Zidentyfikuj zapytania dotyczące tablic podrzędnych i ustal, czy są one kandydatami do bardziej wydajnych podzapytania.
  • Ustal, czy obciążenie wymaga magazynu analitycznego. Rozważ magazyny analityczne i usługi, takie jak Azure Synapse Link , w przypadku niezwykle złożonych zapytań.
Zalecenie Korzyści
Skonfiguruj przepływność na podstawie punktu odniesienia wydajności. 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, takich jak autoskalowanie , aby skalować rzeczywistą przepływność w celu dokładniejszego dopasowania rzeczywistego obciążenia. Następnie monitoruj rzeczywiste zużycie przepływności i wprowadź zmiany.
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ć tym, ile elementów jest wstępnie pobieranych (buforowanych) i zwracanych dla każdej strony.
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. Skorzystaj z replikacji odczytu, aby zapewnić wydajną wydajność odczytu niezależnie od sposobu konfigurowania zapisu (pojedynczego lub wielu regionów). Skonfiguruj zestaw SDK (.NET/Java), aby preferować regiony bliżej użytkownika końcowego.
Skonfiguruj zestaw SDK dla trybu bezpośredniego. Tryb bezpośredni jest preferowaną opcją dla najlepszej wydajności. Ten tryb umożliwia klientowi otwieranie połączeń TCP bezpośrednio z partycjami w usłudze i wysyłanie żądań bezpośrednio bez bramy pośredniczącej. Ten tryb zapewnia lepszą wydajność, ponieważ istnieje mniej przeskoków sieciowych.
Wyłącz indeksowanie dla operacji zbiorczych. Jeśli istnieje wiele operacji wstawiania/zastępowania/upsert, wyłącz indeksowanie, aby zwiększyć szybkość operacji przy użyciu zbiorczej obsługi odpowiedniego zestawu SDK. Indeksowanie może zostać natychmiast ponownie włączone później.
Utwórz indeksy złożone dla pól używanych w złożonych operacjach. Indeksy złożone mogą zwiększyć wydajność operacji na wielu polach według liczby rzędów wielkości. W wielu przypadkach użyj indeksów złożonych dla ORDER BY instrukcji z wieloma polami.
Optymalizowanie maszyn klienckich hosta dla zestawów SDK. W przypadku najbardziej typowych przypadków użyj co najmniej 4 rdzeni i 8 GB pamięci na maszynach hostów 64-bitowych przy użyciu zestawów SDK (.NET/Java). Ponadto włącz przyspieszoną sieć na maszynach hosta.
Użyj wzorca pojedynczego CosmosClient dla klasy w większości zestawó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 rozpowszechnianie wystąpień może spowodować zmniejszenie wydajności.
Zachowaj rozmiar elementu mniejszy 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ż mieć znaczny koszt przepływności.
Użyj podzapytania strategicznie, aby zoptymalizować zapytania, które łączą duże zestawy danych. Zapytania, które łączą tablice podrzędne, mogą zwiększyć złożoność, jeśli wiele tablic jest zaangażowanych i nie jest filtrowanych. Na przykład zapytanie, które łączy więcej niż dwie tablice z co najmniej 10 elementami, może rozwinąć się do 1000 krotek i więcej. Zoptymalizuj wyrażenia samosprzężenia przy użyciu podzapytania, aby filtrować tablice przed dołą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.
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.

Definicje zasad Azure Policy

Dodatkowe zasoby

Rozważ więcej zasobów związanych z usługą Azure Cosmos DB for NoSQL.

Wskazówki dotyczące centrum architektury platformy Azure

Wytyczne w przewodniku Cloud Adoption Framework

Następne kroki