Osvědčené postupy architektury pro Azure Cosmos DB for NoSQL

Azure Cosmos DB je plně spravované databázové řešení, které může hostovat více typů databází, jako jsou NoSQL, relační, vektorové a tabulkové databáze. Může pojmout většinu případů použití pro vaši úlohu. Doporučení v této příručce se zaměřují na variantu Azure Cosmos DB for NoSQL . Můžete také použít některá základní doporučení pro jiné varianty.

Tento článek předpokládá, že jste jako architekt zkontrolovali možnosti dat Azure a jako úložiště dat pro vaše úlohy zvolili Azure Cosmos DB for NoSQL. Pokyny v tomto článku poskytují architektonická doporučení, která odpovídají principům pilířů Well-Architected Framework.

Rozsah technologií

Tato kontrola se zaměřuje na vzájemně nesouvisející rozhodnutí pro následující prostředky Azure:

  • Azure Cosmos DB for NoSQL

Reliability

Účelem pilíře spolehlivosti je zajistit nepřetržitou funkčnost budováním dostatečné odolnosti a schopnosti rychle se zotavit ze selhání.

principy návrhu spolehlivosti poskytují základní strategii návrhu použitou pro jednotlivé komponenty, systémové toky a systém jako celek.

Kontrolní seznam návrhu úloh

Zahajte strategii návrhu na základě kontrolního seznamu pro kontrolu návrhů z hlediska spolehlivosti. Určete její význam pro vaše obchodní požadavky a mějte na paměti úrovně konzistence, replikaci mezi oblastmi a zřízenou propustnost. Rozšiřte strategii tak, aby podle potřeby zahrnovala více přístupů.

  • Zvolte jednoduchý návrh a vyhněte se zbytečným funkcím. Nepřijímejte funkce, které zbytečně přidávají složitost vaší práci, jako jsou zápisy na více primárních míst a vlastní indexování. Azure Cosmos DB tyto funkce podporuje, ale mohou významně přidat na složitosti a provozní zátěži. Pečlivě vyhodnoťte, jestli vaše úloha vyžaduje nějaké pokročilé funkce.

    Přesměrujte odpovědnost za úlohy a průřezové aspekty do jiných služeb, jako je ID Microsoft Entra pro ověřování a autorizaci nebo Azure Monitor a Application Insights pro monitorování.

  • Identifikace a stanovení priorit toků úloh Ne všechny toky v aplikaci jsou stejně důležité. Identifikujte kritické cesty a přiřaďte jednotlivým tokům priority, které vám pomůžou při rozhodování o návrhu. Návrh toku uživatele může ovlivnit úrovně služeb, funkce a kapacitu, kterou přidělujete databázi Azure Cosmos DB.

    Aby bylo možné identifikovat kritické toky, které by mohly potřebovat zvláštní zacházení, zachyťte požadavky na zpracování, které je rozlišují z hlediska možností zpracování dat. Některé toky můžou například vyžadovat vyšší propustnost nebo být citlivější na problémy s latencí. A některé toky řešení můžou vyžadovat různé úrovně konzistence transakcí.

  • Pomocí analýzy režimu selhání identifikujte potenciální selhání ve vaší úloze. Naplánujte strategie zmírnění rizik pro potenciální selhání. Následující tabulka uvádí příklady analýzy režimu selhání.

    Failure Mitigation
    Vysoká latence a vypršení časových limitů po zavedení uživatelům v nové geografické oblasti Povolte replikaci více oblastí do oblasti Azure, která je blíže novým uživatelům.
    Omezování kvůli překročení požadovaných jednotek (RU) Implementujte logiku opakování. Monitorujte spotřebu RU a podle potřeby upravte nastavení propustnosti.
    Selhání služby Azure Cosmos DB v jedné zóně v jedné oblasti Azure Při vytváření databáze nakonfigurujte podporu zóny dostupnosti.
  • K přístupu k databázím vždy používejte sadu SDK. Pro přístup ke službě Cosmos DB použijte sadu Cosmos DB SDK ve vašich klientech a vylaďte parametry zpracování chyb na straně klienta pro čtení i zápisy. Sada SDK má integrované zpracování přechodných chyb, které minimalizuje vlastní logiku. Pokud integrované zpracování nestačí, sada SDK podporuje vlastní implementace zpracování chyb, jako je zpracování chyb omezování rychlosti. Sada SDK také umožňuje zaznamenávat bohaté diagnostické protokoly na klientovi pro zajištění přehledu o spolehlivosti.

  • Vytvářejte redundanci, abyste zlepšili odolnost a pomohli splnit cíle spolehlivosti. Navrhněte nasazení databázového účtu tak, aby se v Azure rozprostírá nejméně ve dvou oblastech. Pokud ji vaše oblast Azure podporuje, distribuujte svůj účet napříč několika zónami dostupnosti.

    Vyhodnoťte strategie zápisu pro více oblastí a pro jednu oblast pro vaši úlohu. Pro zápis do jedné oblasti navrhněte úlohu tak, aby měla alespoň druhou oblast čtení pro převzetí služeb při selhání. Povolení automatického převzetí služeb při selhání pro scénáře zápisu do jedné oblasti a čtení z více oblastí Pro zápis do více regionů porovnejte kompromisy mezi složitostí a konzistencí proti výhodám zápisu do více regionů. Další informace najdete v tématu Očekávání během regionálního výpadku pro účty s možností zápisu do jedné nebo více oblastí.

    Zvažte, jak vaše úroveň konzistence a režim replikace ovlivňují cíl bodu obnovení (RPO) při výpadku celé oblasti.

    Navrhněte komplexní end-to-end test vysoké dostupnosti pro vaši aplikaci, který zahrnuje testování převzetí služeb při selhání databáze a navrácení služeb po obnovení.

  • Použijte nativní funkce zotavení po havárii a zálohování. Implementujte zálohy a obnovy databáze a kontejnerů tak, aby splňovaly vaše požadavky. Mezi scénáře obnovy patří obnovení bodu v čase, obnova po náhodných destruktivních operacích, obnovení odstraněných prostředků, a obnova do jiné oblasti ve specifickém okamžiku. Nakonfigurujte svůj účet s průběžným zálohováním. Zvolte odpovídající dobu uchovávání na základě vašich obchodních požadavků.

  • Srovnejte návrh služby Azure Cosmos DB s pokyny a vzory návrhu standardních aplikací. Prozkoumejte průvodce návrhem odolných aplikací, projděte si výchozí zásady opakování sad SDK a naplánujte vlastní zpracování konkrétních přechodných chyb. Tyto příručky poskytují osvědčené postupy, které zajistí odolnost kódu aplikace vůči přechodným chybám.

  • Ověřte chování převzetí služeb při selhání na úrovni oddílů. Otestujte scénáře regionálního přerušení pomocí závislostí vaší aplikace, logiky opakování a kontrol připravenosti, abyste potvrdili, že nedotknutelné oddíly budou dál obsluhovat provoz. Spárujte tyto testy s regionálními signály stavu a provozními postupy pro převzetí služeb při selhání, aby operátoři věděli, kdy se spolehnout na převzetí služeb při selhání na úrovni oddílů a kdy eskalovat na obnovu na úrovni účtu.

Doporučení pro konfiguraci

Recommendation Benefit
Distribuujte svůj účet služby Azure Cosmos DB mezi zóny dostupnosti , pokud je k dispozici. Zóny dostupnosti poskytují oddělené napájení, síť a chlazení, což pomáhá izolovat selhání hardwaru na podmnožinu vašich replik. Pokud funkci zón dostupnosti nepoužíváte, Azure Cosmos DB zahrnuje více replik napříč jednou náhodně vybranou zónou dostupnosti.
Nakonfigurujte účet služby Azure Cosmos DB tak, aby pokrývá alespoň dvě oblasti. Propojení několika oblastí pomáhá zajistit, aby vaše úloha byla odolná vůči oblastním výpadkům. Pokud dojde k selhání v oblasti zápisu, můžete číst z jiné repliky. Oblast zápisu můžete také při selhání přepnout do jiné oblasti. Použití klientské sady SDK umožňuje, aby byl váš klient izolován od mechanismů těchto převzetí služeb při selhání.
Povolte pro svůj účet převzetí služeb při selhání spravované službou. Seznamte se s kompromisy u spravovaného přepnutí služeb při selhání a v případě potřeby naplánujte vynucené přepnutí služeb při selhání.

Dočasně zakažte převzetí služeb při selhání spravované službou a ověřte tak komplexní vysokou dostupnost vaší aplikace. Ruční převzetí služeb při selhání můžete spustit pomocí skriptu nebo webu Azure Portal.
Převzetí řízení při selhání spravované službou umožňuje Azure Cosmos DB automaticky změnit oblast zápisu v účtu s více oblastmi, aby byla zachována dostupnost. K této změně dochází bez zásahu uživatele.

Zabezpečení

Účelem pilíře zabezpečení je poskytnout záruky důvěrnosti, integrity a dostupnosti úloh.

Principy návrhu zabezpečení poskytují strategii návrhu vysoké úrovně pro dosažení těchto cílů použitím přístupů k technickému návrhu služby Azure Cosmos DB for NoSQL.

Kontrolní seznam návrhu úloh

Zahajte strategii návrhu na základě kontrolního seznamu pro kontrolu návrhu pro zabezpečení a identifikujte ohrožení zabezpečení a kontrolní mechanismy, které zlepšují stav zabezpečení. Rozšiřte strategii tak, aby podle potřeby zahrnovala více přístupů.

  • Zkontrolujte standardní hodnoty zabezpečení. Pokud chcete zvýšit stav zabezpečení vaší úlohy, projděte si kontrolní seznam zabezpečení pro databáze Azure a standardní hodnoty zabezpečení pro službu Azure Cosmos DB. Minimálně implementujte standardní hodnoty zabezpečení ochrany dat a správy identit , které vám pomůžou zabezpečit účet služby Azure Cosmos DB.

    Posouzení dodržování předpisů a certifikací na úrovni služeb v kontextu aktuálních globálních požadavků na osobní údaje

  • Implementujte striktní, podmíněnou a auditovatelnou správu identit a přístupu. Použijte ID Microsoft Entra pro potřeby ověřování a autorizace vaší úlohy. Microsoft Entra ID poskytuje centralizovanou správu autorizace a přístupu.

    Pro přístup k řídicí rovině a rovině dat k vašemu účtu vytvořte role, skupiny a přiřazení na základě principu přístupu s nejnižšími oprávněními. Zvažte zakázání ověřování na základě klíčů.

  • Šifrování datŠifrování neaktivních uložených dat nebo přenášených dat pomocí klíčů spravovaných službou nebo klíčů spravovaných zákazníkem

  • Použití segmentace sítě a kontrolních mechanismů zabezpečení Vytvářejte záměrné segmentace a hraniční sítě v návrhu sítě a použijte zásady hloubkové ochrany pomocí lokalizovaných síťových ovládacích prvků na všech hranicích sítě.

    Snižte plochu útoku použitím privátních koncových bodů v souladu s standardními hodnotami zabezpečení pro Azure Cosmos DB.

  • Implementujte ucelenou strategii monitorování zabezpečení. Auditujte přístup uživatelů, porušení zabezpečení a operace prostředků pomocí protokolů roviny řízení.

    Pomocí metrik roviny dat můžete monitorovat výchozí přenos dat, změny dat, využití a latenci.

  • Používejte zabezpečené postupy vývoje a testování. Dodržujte osvědčené postupy vývoje softwaru pro zabezpečený přístup k datům. Při vývoji aplikací, které pracují se službou Azure Cosmos DB, dodržujte postupy zabezpečeného kódování a proveďte bezpečné kontroly kódu.

  • Řízení historie změn úplné věrnosti Pro auditní, replikační nebo forenzní pracovní postupy používejte kanál změn pro všechny verze i odstranění, pokud vyžadují události vytvoření, aktualizace, odstranění a vypršení platnosti TTL. Omezit přístup, definovat hranice uchovávání a chránit podřízené kopie, protože historické události mohou rozšířit vystavení citlivých dat.

Doporučení pro konfiguraci

Recommendation Benefit
Zakažte veřejné koncové body a používejte privátní koncové body, kdykoli je to možné. Použití privátních sítí prostřednictvím privátních koncových bodů snižuje oblast náchylnou k útokům na váš účet.
Pomocí řízení přístupu na základě role (RBAC) omezte přístup roviny řízení na konkrétní identity a skupiny v rámci dobře definovaných přiřazení. Použití RBAC pomáhá zabránit neoprávněnému přístupu k vašemu účtu. Přiřaďte uživatelům nebo aplikacím odpovídající role a oprávnění, které přistupují k Azure Cosmos DB na základě principu nejnižších oprávnění.
Vytvořte koncové body a pravidla virtuální sítě pro omezení přístupu k účtu. Pomocí skupin zabezpečení sítě (NSG) můžete řídit provoz do a z prostředků Azure Cosmos DB. Koncové body služeb virtuální sítě, skupiny zabezpečení sítě a pravidla brány firewall pomáhají omezit přístup k účtu služby Azure Cosmos DB a chránit vaše data před neoprávněným přístupem.
Chraňte se před běžnými ohroženími zabezpečení, jako jsou útoky prostřednictvím injektáže, skriptování mezi weby nebo nezabezpečené přímé odkazy na objekty. Implementujte ověřování vstupu, parametrizované dotazy a odpovídající zpracování chyb pro běžné stavové kódy HTTP , abyste zabránili rizikům zabezpečení. Ověřování vstupu pomáhá zabránit zpracování škodlivých dat vaší aplikací. Tento přístup blokuje potenciálně škodlivá data, která můžou vést k narušení zabezpečení nebo poškození dat.

Správné zpracování chyb umožňuje vaší aplikaci reagovat na chyby řízeným způsobem a zabraňuje vystavení citlivých informací.
Monitorujte protokoly řídicí roviny a detekujte neoprávněné úpravy účtu služby Azure Cosmos DB. Monitorování pomáhá sledovat vzory přístupu a protokoly auditu, abyste zajistili, že vaše databáze zůstane zabezpečená a kompatibilní s příslušnými předpisy pro ochranu dat. Monitorování metrik roviny dat může také pomoct identifikovat neznámé vzory, které by mohly odhalit narušení zabezpečení.
Povolte Microsoft Defender pro Azure Cosmos DB , aby aktivoval výstrahy zabezpečení, když dojde k neobvyklým aktivitám. Microsoft Defender zjišťuje pokusy o zneužití databází ve vašem účtu. Defender detekuje potenciální injektáže SQL, podezřelé vzory přístupu a další potenciální aktivity zneužití.

Optimalizace nákladů

Optimalizace nákladů se zaměřuje na odhalování vzorců výdajů, upřednostnění investic do klíčových oblastí a optimalizaci jiných oblastí pro splnění rozpočtu organizace a zároveň obchodních požadavků.

Principy návrhu optimalizace nákladů poskytují strategii návrhu na vysoké úrovni pro dosažení těchto cílů a provádění kompromisů v technickém návrhu souvisejícím s Cosmos DB pro No SQL a jeho prostředí.

Kontrolní seznam návrhu úloh

Zahajte svou strategii návrhu na základě kontrolního seznamu přezkumu návrhu pro optimalizaci nákladů pro investice. Dolaďte návrh tak, aby úloha byla v souladu s rozpočtem přiděleným pro danou úlohu. Váš návrh by měl využívat správné možnosti Azure, monitorovat investice a hledat příležitosti k optimalizaci v průběhu času.

  • Optimalizujte strategii škálování služby Azure Cosmos DB. Seznamte se s tím, jak Azure Cosmos DB zpracovává škálování úložiště a propustnosti. Určete správnou rovnováhu mezi výkonem a náklady, abyste splnili vaše požadavky.

    Vyberte schéma přidělování propustnosti, které vyhovuje vaší úloze. Projděte si výhody standardní a automatického škálování propustnosti distribuované na úrovni databáze nebo kontejneru. Zvažte také bezserverové možnosti, pokud je to vhodné. Analyzujte vzory provozu vaší úlohy a vyberte nejvhodnější schéma přidělování propustnosti.

    Určete klíč oddílu nebo sadu klíčů oddílů, které mají vysokou kardinalitu a zůstávají beze změny. Použijte existující doprovodné materiály a osvědčené postupy , které vám pomůžou vybrat odpovídající klíč oddílu. Při určování klíče oddílu zvažte také zásady indexování .

  • Optimalizujte náklady na data služby Azure Cosmos DB. Proveďte inventář dat a vypočítejte očekávané celkové úložiště dat pro vaši úlohu. Velikost položek i indexů ovlivňuje náklady na úložiště dat. Výpočet dopadu replikace a zálohování na náklady na úložiště

    Vytvořte strategii pro automatické odebrání starších položek, které se už nepoužívají nebo nejsou potřeba. V případě potřeby tyto položky před odebráním exportujte do řešení úložiště s nižšími náklady.

  • Optimalizujte dotazy s ohledem na náklady. Vyhodnoťte nejčastější dotazy, které minimalizují vyhledávání napříč oddíly. Tyto informace použijte k rozhodování při výběru klíče oddílu nebo úpravě zásad indexování.

    Pomocí projekce můžete snížit náklady na propustnost velkých sad výsledků dotazů. Autor vytváří dotazy na projekci pouze nejnutnějšího počtu potřebných polí ze sady výsledků. Pokud jsou výpočty polí nezbytné, vyhodnoťte náklady na propustnost provádění těchto výpočtů na straně serveru a na straně klienta.

    Nepoužívejte nevázané dotazy napříč oddíly. Vyhodnoťte a vytvořte dotazy, abyste měli jistotu, že prohledávají v rámci jednoho logického oddílu, kdykoli je to možné. Pomocí filtrů dotazů můžete určit, na které logické oddíly dotaz cílí. Pokud musí dotaz prohledávat logické oddíly, omezte prohledávání pouze na podmnožinu těchto oddílů namísto úplné prohlídky.

    Navrhněte zásadu indexování, která bere v úvahu běžné operace a dotazy ve vaší úloze.

Doporučení pro konfiguraci

Recommendation Benefit
Monitorujte využití a vzorce RU za sekundu. K vyhledání antipatternů v kódu aplikace použijte dotazy a další techniky pro výzkum dat. Použití metrik ke sledování spotřeby RU v rané fázi nasazení služby Azure Cosmos DB pomáhá identifikovat neefektivní dotazy a operace, které spotřebovávají nadměrné ru. Dotazy můžete optimalizovat tak, aby se snížily náklady.
Přizpůsobte si zásady indexování tak, aby odpovídaly vaší úloze. Použijte zásadu indexování na základě pouze cest, které potřebujete indexovat pro běžné dotazy.

U úloh náročných na zápis zakažte automatické indexování sloupců, které se v dotazech nepoužívají.
Výchozí indexovací politika indexuje všechny cesty v každé položce a může výrazně ovlivnit spotřebu RU a náklady. Přizpůsobení zásad indexování umožňuje přizpůsobit strategii indexování vašim konkrétním požadavkům. Tento přístup pomáhá zajistit optimální výkon a využití prostředků.
Vyberte klíče oddílů pro vaši úlohu, které rovnoměrně distribuují spotřebu propustnosti a úložiště dat napříč logickými oddíly. Vyhněte se horkým oddílům, které přijímají nepřiměřený objem provozu. Nevyvážené partice mohou zvýšit náklady na propustnost a způsobit přechodné chyby.

Výběr by měl také minimalizovat počet nevázaných dotazů napříč oddíly. Pomocí nejběžnějších vyhledávacích dotazů můžete určit potenciální klíče oddílů, které pravděpodobně spouštějí pouze dotazy v rámci jednoho oddílu nebo omezené dotazy napříč různými oddíly.
Výběr správného klíče oddílu rovnoměrně distribuuje data, což snižuje pravděpodobnost přetížených oddílů a optimalizuje spotřebu propustnosti. Tento přístup může výrazně zvýšit efektivitu a snížit náklady.
Vyberte správnou zřízenou propustnost pro vaši instanci Azure Cosmos DB. Vyberte si mezi bezserverovou nebo zřízenou propustností a ručním zřizováním nebo automatickým škálováním. Tyto možnosti použijte na úrovni databáze nebo kontejneru v závislosti na konkrétních potřebách vaší úlohy.

Obecně platí, že malé úlohy a úlohy pro vývoj/testování využívají propustnost bez serveru nebo ruční sdílenou propustnost na úrovni databáze. Větší důležité úlohy můžou těžit ze zřízené propustnosti na úrovni kontejneru.
Výběr správné možnosti nastavené propustnosti pomáhá optimalizovat náklady tím, že se vyhnete nadměrnému přidělování nebo nedostatečnému přidělování. Zároveň snižuje provozní náklady a zároveň zajišťuje, aby vaše aplikace efektivně zvládla různé vzorce provozu.
Nakonfigurujte výchozí úroveň konzistence pro vaši aplikaci. Pokud je to vhodné, snižte výchozí úroveň konzistence v relacích klienta.

Vezměte v úvahu vyšší náklady spojené se čtením při silnějších úrovních konzistence. Nemusí být vždy nutné změnit standardní výchozí úroveň konzistence nebo ji nastavit jinak v klientských relacích.
Volba správné úrovně konzistence pro vaši aplikaci zajistí, že dosáhnete požadované rovnováhy mezi konzistencí dat, dostupností, výkonem a náklady.
Pro úlohy vývoje a testování použijte emulátor služby Azure Cosmos DB, který je také k dispozici jako image kontejneru Dockeru. Emulátor snižuje náklady na případy vývoje/testování a průběžné integrace.
Použijte transakční dávkové operace. Navrhněte partice k využití transakčních dávkových operací v rámci klíče logické partice pro vkládání dat.

Dávkové operace v sadách SDK na straně klienta slouží k vložení, aktualizaci nebo odstranění více dokumentů v rámci jedné žádosti o transakci.
Použití transakčních dávkových operací ve službě Azure Cosmos DB může pomoct snížit počet jednotlivých požadavků. Tento přístup pomáhá snížit latenci a zvýšit efektivitu propustnosti.
Implementujte hodnotu TTL (time-to-live), která automaticky odstraní nepotřebná data. V případě potřeby exportujte data s vypršenou platností do řešení úložiště s nižšími náklady. Použitím TTL zajistíte, že vaše databáze zůstane bez nepořádku, což optimalizuje náklady na úložné prostory. Export dat s vypršenou platností do řešení úložiště s nižšími náklady může dále snížit náklady při zachování historických dat pro účely dodržování předpisů.
Zvažte analytické úložiště pro náročné agregace. Analytické úložiště Azure Cosmos DB automaticky synchronizuje vaše data do samostatného úložiště sloupců, aby se optimalizovaly pro velké agregace, vytváření sestav a analytické dotazy.

Efektivita provozu

Operační dokonalost se primárně zaměřuje na vývojové postupy, pozorovatelnost a správu verzí.

Principy návrhu efektivity provozu poskytují strategii návrhu vysoké úrovně pro dosažení těchto cílů pro provozní požadavky úlohy.

Kontrolní seznam návrhu úloh

Začněte strategii návrhu založenou na kontrolním seznamu kontroly návrhu pro efektivitu provozu pro definování procesů pozorovatelnosti, testování a nasazení souvisejících se službou Azure Cosmos DB for NoSQL.

  • Monitorování instancí služby Azure Cosmos DB Do řešení pro monitorování úloh zahrňte instance Azure Cosmos DB napříč oblastmi.

    Vytvořte v klientské aplikaci identifikátory pro rozlišení úloh. Zvažte příznaky, jako je přípona uživatelského agenta, a určete, k jaké úloze by měly být přidružené jednotlivé položky protokolu nebo metriky.

    Vytvořte strategii monitorování protokolů a metrik, která umožňuje rozlišovat různé úlohy, označit výjimečné scénáře, sledovat vzory výjimek a chyb a sledovat výkon hostitelského počítače.

    Definujte několik upozornění pro monitorování omezování, analýzu přidělení propustnosti a sledování velikosti dat.

    Naplánujte očekávané prahové hodnoty metrik na základě návrhu oddílů a indexů. Vytvořte plán pro monitorování těchto metrik a určete, jak blízko jsou plánované prahové hodnoty.

  • Automatizace nasazení prostřednictvím infrastruktury jako kódu (IaC). Do postupů nasazení kódu začleníte všechny změny služby Azure Cosmos DB, včetně nasazení infrastruktury a změn konfigurace.

    Vytvořte a vynucujte osvědčené postupy pro automatizaci nasazení účtu a prostředků Azure Cosmos DB for NoSQL.

    Ujistěte se, že váš tým používá stejné šablony k nasazení do jiných neprodukčních prostředí.

  • Posuňte validaci do ranější fáze pomocí emulátoru. Před zřizováním cloudových prostředků použijte emulátor založený na Dockeru v místním prostředí a prostředí kontinuální integrace k ověření datových modelů, dotazů a chování sady SDK. V procesu vydávání verzí udržujte provozní ověření, protože pokrytí emulátoru nenahrazuje testování proti skutečnému chování v jednotlivých oblastech, škálování a službách.

Doporučení pro konfiguraci

Recommendation Benefit
Ujistěte se, že vývojáři aplikací používají nejnovější verzi sady SDK pro vývojáře. Další informace naleznete v tématu .NET SDK a Java SDK. Pro každý SDK Azure Cosmos DB pro NoSQL je doporučená minimální verze. Používání nejnovějších verzí sad SDK pro vývojáře pomáhá udržovat výkon, zabezpečení a kompatibilitu vašich aplikací.
Získejte dodatečnou diagnostiku pomocí technik vkládání diagnostiky pro jednotlivé sady SDK. Tyto techniky přidávají doplňkové informace o úloze spolu s výchozími metrikami a protokoly. Další informace naleznete v tématu .NET SDK a Java SDK. Vložením diagnostiky můžete zachytit vlastní metriky, trasování a protokoly, které zlepšují řešení potíží a optimalizují vaše aplikace. Můžete monitorovat konkrétní aspekty vaší úlohy, které výchozí metriky a protokoly nepokrývají.
Vytvořte upozornění pro prostředky hostitelského počítače. K problémům s připojením a dostupností může dojít kvůli problémům s hostitelským počítačem na straně klienta. Pomocí klientských aplikací, které používají sady SDK Azure Cosmos DB for NoSQL, monitorujte prostředky, jako je procesor, paměť a úložiště na hostitelských počítačích.
Vytvářejte upozornění na omezení propustnosti pomocí metrik, jako je normalizovaná spotřeba RU. Tato metrika měří procento využití zřízené propustnosti v databázi nebo kontejneru.

Pomocí upozornění můžete sledovat, kdy tato metrika překračuje očekávané prahové hodnoty. V průběhu času zkontrolujte a upravte upozornění, jakmile se dozvíte více o vaší úloze.
Pokud je omezování propustnosti konzistentně na 100%, požadavky pravděpodobně vrátí přechodnou chybu. Vytvořením upozornění na základě této metriky můžete dostávat oznámení, když využití překročí definované prahové hodnoty. Než ovlivní výkon vaší aplikace, můžete provést nápravné akce.
Pomocí metrik výkonu dotazů můžete sledovat výkon nejčastějších dotazů v průběhu času. Pokud je výkon dotazů nízký, vyřešte potíže s výkonem a použijte osvědčené postupy pro dotazy. Metriky výkonu umožňují lépe pochopit, jak vaše dotazy běží a kde existují potenciální kritické body. Tyto informace vám pomůžou činit informovaná rozhodnutí o zásadách indexování a optimalizacích dotazů.
Pomocí šablon můžete automaticky nasazovat prostředky účtu. Zvažte šablony Azure Resource Manageru, Bicep nebo Terraformu pro automatizaci nasazení účtu a dalších prostředků. Šablony IaC pomáhají definovat infrastrukturu v popisném modelu. Usnadňují opakovatelnost a konzistenci a pomáhají udržovat jednotná a předvídatelná prostředí úloh.
Sledujte klíčové metriky, abyste identifikovali běžné problémy ve vaší úloze, jako je využití RU podle oddílu, omezování propustnosti a objem požadavků podle typu. Monitorování těchto klíčových metrik vám pomůže pochopit, jak databáze funguje za různých podmínek. Monitorování také pomáhá identifikovat běžné problémy, abyste mohli provést nápravnou akci.

Efektivita výkonu

Výkonnostní efektivita se týká zachování uživatelského zážitku i při rostoucím zatížení řízením kapacity. Strategie zahrnuje škálování prostředků, identifikaci a optimalizaci potenciálních kritických bodů a optimalizaci výkonu ve špičce.

Návrhové principy efektivity výkonu poskytují strategii návrhu na vysoké úrovni pro dosažení cílů kapacity s ohledem na očekávané využití.

Kontrolní seznam návrhu úloh

Zahajte strategii návrhu založenou na kontrolním seznamu pro kontrolu výkonu pro definování standardních hodnot založených na klíčových ukazatelích výkonu pro Azure Cosmos DB for NoSQL.

  • Naplánujte a proaktivně spravujte kapacitu služby Azure Cosmos DB. Definujte standardní hodnoty výkonu pro vaši aplikaci. Změřte, kolik souběžných uživatelů a transakcí může být potřeba zpracovat. Zvažte charakteristiky úloh, jako jsou průměrný tok uživatelů, běžné operace a špičky využití.

    Zkoumejte své cílové uživatele. Určete, které oblasti Azure jsou k nim nejblíže.

  • Optimalizujte návrh dat. Navrhujte položky tak, aby jejich odpovídající dokumenty JSON byly co nejmenší. V případě potřeby zvažte rozdělení dat mezi více položek.

    Ponechejte položky menší než 100 kB . Větší položky spotřebovávají větší propustnost pro běžné operace čtení a zápisu. Dotazy na větší položky, které projektují všechna pole, můžou také přidat významné náklady na propustnost.

  • Vyberte správnou úroveň, funkce a fakturační model. Určete, jestli vaše úloha vyžaduje analytické úložiště. Zvažte analytické úložiště a služby, jako je Azure Synapse Link , pro složité dotazy.

  • Optimalizujte model nasazení. Nasaďte Službu Azure Cosmos DB for NoSQL do oblastí nejblíže koncovým uživatelům. | Snižte latenci nasazením služby Azure Cosmos DB for NoSQL do oblastí, které jsou co nejblíže koncovým uživatelům.

  • Optimalizujte dotazy pro výkon. Projděte si tipy pro zlepšení výkonu dotazů a použijte strategie, které platí pro vaše scénáře použití.

    Identifikujte dotazy, které používají jedno nebo více polí řazení. Identifikujte také operace, které ovlivňují více polí. Zahrnout tato pole explicitně do návrhu zásad indexování.

    Navrhujte velké úlohy tak, aby používaly hromadné operace, kdykoli je to možné.

    Identifikujte dotazy na podřízená pole a určete, jestli jsou kandidáty pro efektivnější poddotazy.

    Zkoumejte vaše nejčastější a složité dotazy. Identifikujte dotazy, které používají více vyhledávání, spojení nebo agregace. Zohledněte tyto dotazy v jakýchkoli úvahách o návrhu klíče oddílu nebo zásad indexování.

    U nejběžnějších dotazů určete počet výsledků, které očekáváte pro každou stránku. Toto číslo vám pomůže formalizovat počet položek v vyrovnávací paměti pro předem načtené výsledky.

  • Optimalizace logiky kódu Použijte singletonový vzor pro třídu CosmosClient ve většině sad SDK. Jako singleton použijte klientskou třídu v většině SDK sad. Klientská třída spravuje svůj vlastní životní cyklus a je navržená tak, aby nebyla uvolněna. Neustálé vytváření a odstraňování instancí může vést ke snížení výkonu.

  • Izolujte nákladné cesty dotazů pomocí sekundárních indexů. Vyhodnoťte globální sekundární indexy pro dotazy náročné na čtení nebo dotazy napříč oddíly, které potřebují různé klíče oddílů nebo zásady indexování než transakční kontejner. Modelujte propustnost, aktuálnost dat a provozní režii odděleně, aby index zlepšil latenci, aniž by zakrýval neefektivní návrh dotazů.

Doporučení pro konfiguraci

Recommendation Benefit
Pomocí nástrojů, jako je kalkulačka kapacity , můžete určit požadovanou propustnost pro směrný plán výkonu. Pomocí funkcí, jako je automatické škálování , můžete škálovat skutečnou propustnost tak, aby lépe odpovídala skutečné úloze. Potom sledujte skutečnou spotřebu propustnosti a proveďte úpravy. Použití kalkulačky kapacity vám pomůže při počátečním rozhodování o zřizování prostředků. Můžete zajistit, aby databáze zvládla očekávané zatížení bez zbytečných nákladů. Automatické přizpůsobení propustnosti automaticky upraví nastavenou propustnost tak, aby odpovídala skutečným potřebám úloh.
V případě potřeby použijte techniky optimalizace na straně klienta a serveru. Využijte výhod integrované integrované mezipaměti. Nakonfigurujte SDK tak, aby určovalo, kolik položek se má předem načíst neboli uložit do vyrovnávací paměti a vrátit na každé stránce. Techniky optimalizace kódu můžou zlepšit uživatelské prostředí a zvýšit efektivitu aplikace na straně klienta a serveru tím, že pomáhají snížit poplatky za RU za opakované čtení a dotazy. Tyto výhody můžou snížit náklady.
K optimalizaci výkonu dotazů, strategií indexování a využití prostředků na základě skutečných vzorů využití a charakteristik úloh využijte Poradce pro dotazy Cosmos DB . Můžete programově identifikovat pomalé dotazy, optimalizovat strategie indexování a potenciálně snížit spotřebu RU.
Použijte globální distribuci a nasaďte instance Služby Azure Cosmos DB ve všech oblastech nejblíže koncovým uživatelům. Nasazení databáze do oblastí nejblíže koncovým uživatelům pomáhá snížit latenci čtení , což může zlepšit uživatelské prostředí. Replikace čtení umožňuje výkonné operace čtení bez ohledu na to, jak jsou nakonfigurované operace zápisu.
Pokud jsou klienti geograficky distribuováni, použijte zápisy do více oblastí. Snižuje latenci zápisu tím, že umožňuje klientovi zapisovat do oblasti, která je k ní nejblíže. Vaše úloha musí podporovat logiku řešení konfliktů a vaše aplikace musí očekávat chování konečné konzistence.
Nakonfigurujte sadu SDK pro přímý režim s nejlepším výkonem. Tento režim umožňuje klientovi otevřít připojení TCP (Transmission Control Protocol) přímo k oddílům ve službě a odesílat požadavky přímo bez zprostředkující brány. Přímý režim poskytuje lepší výkon, protože existuje méně síťových přeskoků.
Používejte funkci hromadného zpracování v klientských sadách SDK ve scénářích, které vyžadují vysokou propustnost. Funkce hromadného zpracování automaticky spravuje a dávkuje operace k maximalizaci propustnosti. Použití hromadné funkce snižuje počet back-endových požadavků a efektivně distribuuje úlohy mezi oddíly. Tento přístup zlepšuje výkon a využití prostředků.
Zakažte indexování pro hromadné operace. Pokud provádíte více operací insert, replace nebo upsert, zakažte indexování, abyste při použití podpory hromadných operací v příslušné sadě SDK zvýšili rychlost operace. Indexování můžete okamžitě obnovit později. Zakázání indexování během hromadných operací snižuje režii spojenou s údržbou indexu. Prostředky můžete lépe využít pro hromadné operace, které urychlují vkládání a aktualizace dat.
Vytváření složených indexů pro pole v složitých operacích Zvažte použití složených indexů pro ORDER BY příkazy, které mají více polí. Složené indexy můžou zvýšit efektivitu operací na více polích, což umožňuje rychlé a efektivní načítání dat.
Optimalizujte hostitelské klientské počítače pro sady SDK. Ve většině případů používejte alespoň čtyři jádra a osm GB paměti na 64bitových hostitelských počítačích, které používají sady SDK pro .NET nebo Javu.

Povolte akcelerované síťové služby na hostitelských počítačích.
Použití počítačů s vyššími specifikacemi zajišťuje, aby sady SDK mohly zpracovávat více operací současně. Akcelerované síťové služby můžou pomoct snížit latenci, což zvyšuje dobu odezvy.
Pomocí poddotazů můžete strategicky optimalizovat dotazy, které spojují velké datové sady. Optimalizujte výrazy s vlastním spojením pomocí poddotazů a vyfiltrujte pole před spojením polí v rámci položky.

U dotazů napříč oddíly optimalizujte dotaz tak, aby zahrnoval filtr klíče oddílu, aby optimalizoval směrování dotazu na nejmenší možný počet oddílů.
Dotazy, které spojují podřízená pole, můžou zvýšit složitost, pokud je zapojeno více polí a není filtrováno. Použitím poddotazů je možné pole filtrovat před jejich spojením, což zvyšuje efektivitu výrazů pro vlastní spojení.
Pro nejsložitější dotazy používejte analytické úlohy .

Pokud spouštíte časté agregace nebo spojování dotazů nad velkými kontejnery, zvažte povolení analytického úložiště a provádění dotazů ve službě Azure Synapse Analytics.
Analytické úlohy jsou izolované od transakčních úloh a jsou optimalizované pro zpracování složitých dotazů, což brání snížení výkonu a zajišťuje rychlejší výsledky.

Zásady Azure

Azure poskytuje rozsáhlou sadu předdefinovaných zásad souvisejících se službou Azure Cosmos DB for NoSQL a jejími závislostmi. Některé z předchozích doporučení je možné auditovat prostřednictvím služby Azure Policy. Můžete například zkontrolovat, jestli:

  • Účet služby Azure Cosmos DB se nasadí alespoň do dvou oblastí.

  • Účty databáze Azure Cosmos DB jsou správně nakonfigurované pro redundanci zón.

  • Databázové účty Azure Cosmos DB by měly mít zakázané místní metody ověřování, aby se pro ověřování vyžadovaly identity Microsoft Entra.

  • Přístup k veřejné síti je zakázaný, aby váš účet služby Azure Cosmos DB nebyl přístupný na veřejném internetu.

  • Maximální propustnost by se měla omezit při vytváření databází a kontejnerů Azure Cosmos DB prostřednictvím poskytovatele prostředků.

Komplexní zásady správného řízení najdete v předdefinovaných definicích služby Azure Policy pro Azure Cosmos DB for NoSQL a dalších zásadách, které by mohly ovlivnit zabezpečení úložiště dat.

Doporučení azure Advisoru

Azure Advisor je individuální cloudový konzultant, který vám pomůže postupovat podle osvědčených postupů pro optimalizaci nasazení Azure.

Další informace najdete v tématu Azure Advisor.