Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Cosmos DB är en fullständigt hanterad databaslösning som kan vara värd för flera databastyper som NoSQL, relationsdatabaser, vektor- och tabelldatabaser. Den kan hantera de flesta användningsfall för din arbetsbelastning. Rekommendationerna i den här guiden fokuserar på Azure Cosmos DB for NoSQL-varianten . Du kan också tillämpa några grundläggande rekommendationer på andra varianter.
Den här artikeln förutsätter att du som arkitekt har granskat Azure-dataalternativen och valt Azure Cosmos DB för NoSQL som datalager för din arbetsbelastning. Vägledningen i den här artikeln innehåller arkitektoniska rekommendationer som mappas till principerna för Well-Architected Framework-pelarna.
Teknikomfång
Den här granskningen fokuserar på de relaterade besluten för följande Azure-resurser:
- Azure Cosmos DB för NoSQL
Reliability
Syftet med grundpelarna för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att bygga upp tillräckligt med motståndskraft och möjlighet att snabbt återhämta sig från fel.
Principer för tillförlitlighetsdesign tillhandahålla en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.
Checklista för arbetsbelastningsdesign
Påbörja din designstrategi baserat på checklistan för designgranskning för tillförlitlighet. Fastställ dess relevans för dina affärskrav samtidigt som du tänker på konsekvensnivåerna, replikering mellan regioner och etablerat dataflöde. Utöka strategin till att omfatta fler metoder efter behov.
Välj en enkel design och undvik onödiga funktioner. Anta inte funktioner som i onödan ökar komplexiteten i din arbetsbelastning, till exempel skrivningar med flera primära filer och anpassad indexering. Azure Cosmos DB stöder dessa funktioner, men de kan lägga till betydande komplexitet och driftbelastning. Utvärdera noggrant om din arbetsbelastning kräver några avancerade funktioner.
Avlasta arbetsbelastningsansvar och övergripande problem till andra tjänster, till exempel Microsoft Entra-ID för autentisering och auktorisering eller Azure Monitor och Application Insights för övervakning.
Identifiera och prioritera arbetsbelastningsflöden. Alla flöden i programmet är inte lika viktiga. Identifiera de kritiska sökvägarna och tilldela prioriteter till varje flöde för att vägleda dina designbeslut. Design av användarflöde kan påverka tjänstnivåer, funktioner och den kapacitet som du allokerar till Azure Cosmos DB-databasen.
För att identifiera kritiska flöden som kan behöva särskild behandling kan du samla in de bearbetningskrav som skiljer dem åt när det gäller databehandlingsfunktioner. Vissa flöden kan till exempel kräva högre dataflöde eller vara mer känsliga för svarstidsproblem. Och vissa lösningsflöden kan kräva olika transaktionskonsekvensnivåer.
Använd analys av felläge för att identifiera potentiella fel i din arbetsbelastning. Planera riskreduceringsstrategier för potentiella fel. I följande tabell visas exempel på analys av felläge.
Failure Mitigation Långa svarstider och tidsgränser efter distributionen till användare i en ny geografisk region Aktivera replikering med flera regioner till en Azure-region som är närmare de nya användarna. Begränsning på grund av att enheter för förfrågningar överskrids (RUs) Implementera logik för återförsök. Övervaka RU-förbrukning och justera dataflödesinställningarna efter behov. Azure Cosmos DB-tjänstfel i en enda zon i en enda Azure-region Konfigurera stöd för tillgänglighetszoner när du skapar en databas. Mer information finns i Analys av felläge för Azure-program.
Skapa redundans för att förbättra återhämtning och hjälpa till att uppfylla tillförlitlighetsmålen. Utforma distributionen av databaskontot så att den omfattar minst två regioner i Azure. Distribuera ditt konto över flera tillgänglighetszoner om din Azure-region stöder det.
Utvärdera skrivstrategierna för flera regioner och en region för din arbetsbelastning. För skrivning i en region utformar du arbetsbelastningen så att den har minst en andra läsregion för redundans. Aktivera automatisk redundans för skrivscenarier med en region och lässcenarier med flera regioner. För skrivning i flera regioner jämför du kompromisserna i komplexitet och konsekvens med fördelarna med att skriva till flera regioner. För mer information, se Förväntningar under ett regionalt avbrott för skrivkonton i en region och flera regioner.
Fundera på hur din konsekvensnivå och replikeringsläge påverkar mål för återställningspunkt (RPO) i ett regionomfattande avbrott.
Utforma ett slutpunkt-till-slutpunkt-test av hög tillgänglighet för ditt program som omfattar testning av databasredundans och återställning efter fel.
Använd inbyggda funktioner för haveriberedskap och säkerhetskopiering. Implementera säkerhetskopior och återställningar av databaser och containrar för att uppfylla dina krav. Återställningsscenarier omfattar återställning till en specifik tidpunkt, återställning från oavsiktliga destruktiva åtgärder, återställning av borttagna resurser och återställning till en annan region vid en specifik tidpunkt. Konfigurera ditt konto med kontinuerlig säkerhetskopiering. Välj lämplig kvarhållningsperiod baserat på dina affärskrav.
Anpassa din Azure Cosmos DB-design med vägledning och mönster för branschstandardprogramdesign. Utforska guiden för att utforma motståndskraftiga program, granska standardprincipen för återförsök för SDK:erna och planera för anpassad hantering för specifika tillfälliga fel. De här guiderna innehåller metodtips för att göra programkoden motståndskraftig mot tillfälliga fel.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| Distribuera ditt Azure Cosmos DB-konto mellan tillgänglighetszoner när det är tillgängligt. | Tillgänglighetszoner ger separat ström, nätverk och kylning, vilket hjälper till att isolera maskinvarufel till en delmängd av dina repliker. När du inte använder funktionen tillgänglighetszoner omfattar Azure Cosmos DB flera repliker i en enda, slumpmässigt vald tillgänglighetszon. |
| Konfigurera ditt Azure Cosmos DB-konto så att det omfattar minst två regioner. | Genom att sträcka sig över flera regioner ser du till att din arbetsbelastning är motståndskraftig mot regionala avbrott. Om det uppstår ett fel i en skrivregion kan du läsa från en annan replik. Du kan också redundansväxla skrivregionen till en annan region. Med hjälp av klient-SDK kan klienten isoleras från mekaniken för dessa redundansväxlingar. |
| Aktivera tjänsthanterad redundans för ditt konto. Förstå kompromisserna med tjänsthanterad redundans och planera för tvingad redundans vid behov. Inaktivera temporärt tjänsthanterad failover för att verifiera applikationens höga tillgänglighet från början till slut. Du kan starta en manuell redundansväxling med hjälp av ett skript eller Azure-portalen. |
Med tjänsthanterad redundans kan Azure Cosmos DB automatiskt ändra skrivregionen för ett konto med flera regioner för att bevara tillgängligheten. Den här ändringen sker utan användarinteraktion. |
Security
Syftet med säkerhetspelaren är att tillhandahålla garantier för konfidentialitet, integritet och tillgänglighet för arbetet.
Principerna för säkerhetsdesign ger en övergripande designstrategi för att uppnå dessa mål genom att tillämpa metoder för teknisk design av Azure Cosmos DB för NoSQL.
Checklista för arbetsbelastningsdesign
Påbörja din designstrategi baserad på checklistan för designgranskning för säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsläget. Utöka strategin till att omfatta fler metoder efter behov.
Granska säkerhetsbaslinjer. Om du vill förbättra säkerhetsstatusen för din arbetsbelastning läser du säkerhetschecklistan för Azure-databaser och säkerhetsbaslinjen för Azure Cosmos DB. Implementera åtminstone säkerhetsbaslinjerna för dataskydd och identitetshantering för att skydda ditt Azure Cosmos DB-konto.
Utvärdera efterlevnad och certifieringar på tjänstnivå i samband med aktuella globala krav på personuppgifter.
Implementera strikt, villkorsstyrd och granskningsbar identitets- och åtkomsthantering. Använd Microsoft Entra-ID för arbetsbelastningens autentiserings- och auktoriseringsbehov. Microsoft Entra ID tillhandahåller centraliserad auktorisering och åtkomsthantering.
För kontrollplan och dataplansåtkomst till ditt konto skapar du roller, grupper och tilldelningar baserat på principen om åtkomst med lägsta behörighet. Överväg att inaktivera nyckelbaserad autentisering.
Kryptera data.Kryptera vilande data eller data i rörelse med hjälp av tjänsthanterade nycklar eller kundhanterade nycklar.
Tillämpa nätverkssegmenterings- och säkerhetskontroller. Skapa avsiktlig segmentering och perimeterer i nätverksdesignen och tillämpa principer för skydd på djupet med hjälp av lokaliserade nätverkskontroller vid alla nätverksgränser.
Minska ytans attackområde med hjälp av privata slutpunkter i enlighet med säkerhetsbaslinjen för Azure Cosmos DB.
Implementera en holistisk strategi för säkerhetsövervakning. Granska användaråtkomst, säkerhetsöverträdelser och resursåtgärder med hjälp av kontrollplansloggar.
Övervaka datautgående data, dataändringar, användning och svarstid med hjälp av dataplansmått.
Använd säkra metoder för utveckling och testning. Följ de bästa metoderna för programvaruutveckling för säker åtkomst till data. Följ säkra kodningsmetoder och utför säkra kodgranskningar när du utvecklar program som interagerar med Azure Cosmos DB.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| Inaktivera offentliga slutpunkter och använd privata slutpunkter när det är möjligt. | Om du använder privata nätverk via privata slutpunkter minskar ytan som är känslig för attacker på ditt konto. |
| Använd rollbaserad åtkomstkontroll (RBAC) för att begränsa åtkomsten på kontrollplanet till specifika identiteter och grupper i väldefinierade tilldelningar. | Genom att använda RBAC kan du förhindra obehörig åtkomst till ditt konto. Tilldela lämpliga roller och behörigheter till användare eller program som har åtkomst till Azure Cosmos DB baserat på principen om lägsta behörighet. |
| Skapa virtuella nätverksslutpunkter och regler för att begränsa åtkomsten till kontot. Använd nätverkssäkerhetsgrupper (NSG:er) för att styra trafik till och från Azure Cosmos DB-resurser. | Tjänstslutpunkter för virtuella nätverk, NSG:er och brandväggsregler hjälper till att begränsa åtkomsten till ditt Azure Cosmos DB-konto och skyddar dina data från obehörig åtkomst. |
| Skydda mot vanliga säkerhetsrisker som inmatningsattacker, skript för flera platser eller osäkra direktobjektreferenser. Implementera indataverifiering, parametriserade frågor och lämplig felhantering för vanliga HTTP-statuskoder för att förhindra säkerhetsrisker. | Indataverifiering hjälper till att förhindra att skadliga data bearbetas av ditt program. Den här metoden blockerar potentiellt skadliga data som kan leda till säkerhetsöverträdelser eller skadade data. Korrekt felhantering gör att ditt program kan svara på fel på ett kontrollerat sätt och förhindrar exponering av känslig information. |
| Övervaka kontrollplansloggar för att identifiera obehöriga ändringar av ditt Azure Cosmos DB-konto. | Övervakning hjälper dig att spåra åtkomstmönster och granskningsloggar för att säkerställa att databasen förblir säker och kompatibel med relevanta dataskyddsregler. Övervakning av dataplansmått kan också hjälpa dig att identifiera okända mönster som kan avslöja ett säkerhetsintrång. |
| Aktivera Microsoft Defender för Azure Cosmos DB för att utlösa säkerhetsaviseringar när avvikande aktiviteter inträffar. | Microsoft Defender identifierar försök att utnyttja databaser i ditt konto. Defender identifierar potentiella SQL-inmatningar, misstänkta åtkomstmönster och andra potentiella exploateringsaktiviteter. |
Kostnadsoptimering
Kostnadsoptimering fokuserar på identifiera utgiftsmönster, prioritera investeringar inom kritiska områden och optimera i andra för att uppfylla organisationens budget samtidigt som affärskraven uppfylls.
Designprinciperna för kostnadsoptimering ger en övergripande designstrategi för att uppnå dessa mål och göra avvägningar vid behov i den tekniska designen som rör Cosmos DB utan SQL och dess miljö.
Checklista för arbetsbelastningsdesign
Påbörja din designstrategi baserat på checklistan för designgranskning och kostnadsoptimering för investeringar. Finjustera designen så att arbetsbelastningen är i linje med den budget som allokeras för arbetsbelastningen. Din design bör använda rätt Azure-funktioner, övervaka investeringar och hitta möjligheter att optimera över tid.
Optimera din Azure Cosmos DB-skalningsstrategi. Förstå hur Azure Cosmos DB hanterar lagrings- och dataflödesskalning. Fastställ rätt balans mellan prestanda och kostnad för att uppfylla dina krav.
Välj ett dataflödesallokeringsschema som passar din arbetsbelastning. Granska fördelarna med standard- och autoskalning av genomströmning som distribueras på databas- eller containernivå. Överväg även serverlösa alternativ när det är lämpligt. Analysera arbetsbelastningens trafikmönster för att välja det lämpligaste dataflödesallokeringsschemat.
Fastställ en partitionsnyckel eller uppsättning partitionsnycklar som har hög kardinalitet och förblir oförändrade. Använd befintlig vägledning och metodtips för att välja en lämplig partitionsnyckel. Tänk också på din indexeringsprincip när du fastställer en partitionsnyckel.
Optimera dina Azure Cosmos DB-datakostnader. Inventera data och beräkna den förväntade totala datalagringen för din arbetsbelastning. Storleken på både objekt och index påverkar datalagringskostnaden. Beräkna effekten av replikering och säkerhetskopiering på lagringskostnader.
Skapa en strategi för att automatiskt ta bort äldre objekt som inte längre används eller behövs. Om det behövs exporterar du dessa objekt till en lagringslösning med lägre kostnad innan du tar bort dem.
Optimera dina frågor för kostnad. Utvärdera de vanligaste frågorna som minimerar sökningar mellan partitioner. Använd den här informationen för att informera processen att välja en partitionsnyckel eller anpassa en indexeringsprincip.
Använd projektion för att minska dataflödeskostnaderna för stora frågeresultatuppsättningar. Skapa frågor för att bara projicera det minimala antalet fält som krävs från en resultatuppsättning. Om beräkningar på fält är nödvändiga utvärderar du dataflödeskostnaden för att utföra dessa beräkningar på serversidan jämfört med klientsidan.
Undvik att använda obundna förfrågningar över partitioner. Utvärdera och redigera frågor för att säkerställa att de söker i en enda logisk partition när det är möjligt. Använd frågefilter för att styra vilka logiska partitioner frågemålen ska ha. Om en fråga måste söka mellan logiska partitioner, begränsar du frågan till att endast söka i en delmängd av logiska partitioner i stället för en fullständig genomsökning.
Utforma en indexeringsprincip som tar hänsyn till vanliga åtgärder och frågor i din arbetsbelastning.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| Övervaka användningen och mönstren för RU:er per sekund. Använd frågor och andra dataforskningstekniker för att hitta antimönster i programkoden. | Med hjälp av mått för att övervaka RU-förbrukning från början av din Azure Cosmos DB-distribution kan du identifiera ineffektiva frågor och åtgärder som förbrukar alltför stora RU:er. Du kan optimera frågor för att sänka kostnaderna. |
| Anpassa indexeringsprincipen så att den överensstämmer med din arbetsbelastning. Använd en indexeringsprincip baserat på endast de sökvägar som du behöver indexera för dina vanliga frågor. För skrivintensiva arbetsbelastningar inaktiverar du automatisk indexering av kolumner som inte används i frågor. |
Standardindexeringsprincipen indexerar alla sökvägar i ett objekt och kan avsevärt påverka RU-förbrukning och kostnader. Genom att anpassa indexeringsprincipen kan du anpassa indexeringsstrategin efter dina specifika krav. Den här metoden hjälper till att säkerställa optimal prestanda och resursanvändning. |
| Välj partitionsnycklar för din arbetsbelastning som jämnt distribuerar dataflödesförbrukning och datalagring mellan logiska partitioner. Undvik belastade partitioner som tar emot en oproportionerlig mängd trafik. Obalanserade partitioner kan öka dataflödeskostnader och tillfälliga fel. Valet bör också minimera antalet obundna förfrågningar som korsar partitioner. Använd de vanligaste sökfrågorna för att identifiera potentiella partitionsnycklar som sannolikt endast kör enpartitionsfrågor eller avgränsade tvärpartitionsfrågor. |
Om du väljer rätt partitionsnyckel fördelas data jämnt, vilket minskar sannolikheten för frekventa partitioner och optimerar dataflödesförbrukningen. Den här metoden kan avsevärt förbättra effektiviteten och sänka kostnaderna. |
| Välj rätt alternativ för tillhandahållen genomströmning för din Azure Cosmos DB-instans. Välj mellan serverlöst eller etablerat dataflöde och manuell etablering eller autoskalning. Använd de här alternativen på databas- eller containernivå, beroende på arbetsbelastningens specifika behov. I allmänhet drar små arbetsbelastningar och utvecklings-/testarbetsbelastningar nytta av serverlöst dataflöde eller manuellt delat dataflöde på databasnivå. Större, verksamhetskritiska arbetsbelastningar kan dra nytta av etablerat dataflöde på containernivå. |
Genom att välja rätt alternativ för tilldelat dataflöde kan du optimera kostnaden genom att undvika överallokering eller underallokering. Det minskar också driftskostnaderna samtidigt som programmet effektivt kan hantera olika trafikmönster. |
| Konfigurera standardkonsekvensnivån för ditt program. När det är lämpligt nedgraderar du standardkonsekvensnivån i klientsessioner. Överväg de högre kostnaderna som är associerade med läsningar på starkare konsekvensnivåer. Du kanske inte alltid behöver ändra standardkonsekvensnivån eller åsidosätta den i klientsessioner. |
Om du väljer rätt konsekvensnivå för ditt program säkerställer du att du uppnår önskad balans mellan datakonsekvens, tillgänglighet, prestanda och kostnad. |
| För dev/test-arbetsbelastningar använder du Azure Cosmos DB-emulatorn, som också är tillgänglig som en Docker-containeravbildning. | Emulatorn minskar kostnaderna för användningsfall för utveckling/testning och kontinuerlig integrering. |
| Använd transaktionella batchåtgärder. Utforma partitioner för att dra nytta av transaktionella batchåtgärder i en logisk partitionsnyckel för att infoga data. Använd batchåtgärder i SDK:er på klientsidan för att infoga, uppdatera eller ta bort flera dokument i en enda transaktionsbegäran. |
Genom att använda transaktionella batchåtgärder i Azure Cosmos DB kan du minska antalet enskilda begäranden. Den här metoden hjälper till att minska svarstiden och förbättra dataflödeseffektiviteten. |
| Implementera time-to-live (TTL) för att automatiskt ta bort onödiga data. Exportera utgångna data till en lagringslösning med lägre kostnad om det behövs. | Med TTL säkerställer du att databasen förblir oredig, vilket optimerar lagringskostnaderna. Om du exporterar utgångna data till en lagringslösning med lägre kostnad kan du minska kostnaderna ytterligare samtidigt som historiska data bevaras i efterlevnadssyfte. |
| Överväg ett analysarkiv för tunga aggregeringar. | Azure Cosmos DB-analysarkivet synkroniserar automatiskt dina data till ett separat kolumnlager för att optimera för stora aggregeringar, rapporterings- och analysfrågor. |
Operativ skicklighet
Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.
Designprinciperna för Operational Excellence tillhandahåller en övergripande designstrategi för att uppnå dessa mål när det gäller arbetsbelastningens driftskrav.
Checklista för arbetsbelastningsdesign
Starta din designstrategi baserat på checklistan för designgranskning för operational excellence för att definiera processer för observerbarhet, testning och distribution som är relaterade till Azure Cosmos DB för NoSQL.
Övervaka dina Azure Cosmos DB-instanser. Inkludera Azure Cosmos DB-instanser mellan regioner i din arbetsbelastningsövervakningslösning.
Skapa identifierare i klientprogrammet för att särskilja arbetsbelastningar. Överväg flaggor, till exempel suffixet user-agent, för att identifiera vilken arbetsbelastning varje loggpost eller mått ska associeras med.
Utarbeta en strategi för logg- och måttövervakning för att skilja mellan olika arbetsbelastningar, flagga exceptionella scenarier, spåra mönster i undantag och fel och spåra värddatorns prestanda.
Definiera flera aviseringar för att övervaka begränsningshantering, analysera allokeringen av dataflöde och spåra storleken på din data.
Planera förväntade måtttrösklar baserat på partitions- och indexdesign. Skapa en plan för att övervaka dessa mått för att avgöra hur nära de planerade tröskelvärdena är.
Automatisera distributioner via infrastruktur som kod (IaC). Införliva alla Azure Cosmos DB-ändringar, inklusive infrastrukturdistributioner och konfigurationsändringar, i dina koddistributionsmetoder.
Skapa och tillämpa metodtips för att automatisera distributionen av ditt Azure Cosmos DB för NoSQL-konto och -resurser.
Se till att ditt team använder samma mallar för att distribuera till andra icke-produktionsmiljöer.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| Se till att programutvecklare använder den senaste versionen av utvecklar-SDK:et. Mer information finns i .NET SDK och Java SDK. Varje Azure Cosmos DB för NoSQL SDK har en lägsta rekommenderad version. | Med hjälp av de senaste versionerna av utvecklar-SDK:er kan du upprätthålla prestanda, säkerhet och kompatibilitet för dina program. |
| Samla in kompletterande diagnostik med hjälp av diagnostikinmatningsteknikerna för varje SDK. Dessa tekniker lägger till kompletterande information om arbetsbelastningen, tillsammans med standardmått och loggar. Mer information finns i .NET SDK och Java SDK. | Genom att mata in diagnostik kan du samla in anpassade mått, spårningar och loggar för att förbättra felsökningen och optimera dina program. Du kan övervaka specifika aspekter av din arbetsbelastning som standardmått och loggar inte omfattar. |
| Skapa aviseringar för värddatorresurser. | Anslutningsproblem och tillgänglighetsproblem kan uppstå på grund av problem med värddatorn på klientsidan. Övervaka resurser som CPU, minne och lagring på värddatorer med hjälp av klientprogram som använder Azure Cosmos DB för NoSQL SDK:er. |
| Skapa aviseringar för dataflödesbegränsning med hjälp av mått som den normaliserade RU-förbrukningen. Det här måttet mäter procentandelen användning av etablerat dataflöde i en databas eller container. Använd aviseringar för att spåra när det här måttet överskrider förväntade tröskelvärden. Med tiden kan du granska och justera aviseringar när du lär dig mer om din arbetsbelastning. |
Om bandbreddsbegränsningen konsekvent ligger på 100%returnerar begäranden sannolikt ett tillfälligt fel. Genom att skapa aviseringar baserat på det här måttet kan du ta emot meddelanden när användningen överskrider dina definierade tröskelvärden. Du kan vidta korrigerande åtgärder innan det påverkar programmets prestanda. |
| Använd frågeprestandamått för att spåra prestanda för dina viktigaste frågor över tid. Om frågeprestandan är dålig kan du felsöka prestanda och tillämpa bästa praxis för frågor. | Med prestandamått kan du bättre förstå hur dina frågor körs och var potentiella flaskhalsar finns. Den här informationen hjälper dig att fatta välgrundade beslut om indexeringsprinciper och frågeoptimeringar. |
| Använd mallar för att automatiskt distribuera kontoresurser. Överväg Azure Resource Manager-, Bicep- eller Terraform-mallar för att automatisera distributionen av ditt konto och efterföljande resurser. | IaC-mallar hjälper dig att definiera infrastrukturen i en beskrivande modell. De underlättar repeterbarhet och konsekvens och bidrar till att upprätthålla enhetliga och förutsägbara arbetsbelastningsmiljöer. |
| Spåra viktiga mått för att identifiera vanliga problem i din arbetsbelastning, till exempel RU-användning per partition, begränsning och begärandevolymer efter typ. | Genom att övervaka dessa nyckelmått kan du förstå hur databasen presterar under olika förhållanden. Övervakning hjälper också till att identifiera vanliga problem så att du kan vidta korrigerande åtgärder. |
Prestandaeffektivitet
Prestandaeffektivitet handlar om upprätthålla användarupplevelsen även när belastningen ökar genom att hantera kapaciteten. Strategin omfattar skalning av resurser, identifiering och optimering av potentiella flaskhalsar och optimering för högsta prestanda.
Designprinciperna för prestandaeffektivitet tillhandahåller en designstrategi på hög nivå för att uppnå dessa kapacitetsmål med hänsyn till den förväntade användningen.
Checklista för arbetsbelastningsdesign
Starta din designstrategi baserat på checklistan för designgranskning för prestandaeffektivitet för att definiera en baslinje baserat på viktiga prestandaindikatorer för Azure Cosmos DB för NoSQL.
Planera och hantera din Azure Cosmos DB-kapacitet proaktivt. Definiera en prestandabaslinje för ditt program. Mät hur många samtidiga användare och transaktioner du kan behöva hantera. Överväg arbetsbelastningsegenskaper som ditt genomsnittliga användarflöde, vanliga åtgärder och toppar i användningen.
Undersöka dina målanvändare. Ta reda på vilka Azure-regioner som ligger närmast dem.
Optimera din datadesign. Utforma objekt så att deras motsvarande JSON-dokument är så små som möjligt. Överväg att dela upp data mellan flera objekt om det behövs.
Behåll objekt som är mindre än 100 kB i storlek. Större objekt förbrukar mer dataflöde för vanliga läs- och skrivåtgärder. Frågor om större objekt som projicerar alla fält kan också lägga till betydande dataflödeskostnader.
Välj rätt nivå, funktioner och faktureringsmodell. Avgör om din arbetsbelastning kräver ett dataarkiv för analys. Överväg analysarkiv och tjänster som Azure Synapse Link för komplexa frågor.
Optimera distributionsmodellen. Distribuera Azure Cosmos DB för NoSQL till regioner som är närmast dina slutanvändare. | Minska svarstiden genom att distribuera Azure Cosmos DB för NoSQL till de regioner som är närmast slutanvändarna så mycket som möjligt.
Optimera frågor för prestanda. Granska frågeprestandatipsen och tillämpa de strategier som gäller för dina användningsfall.
Identifiera frågor som använder ett eller flera beställningsfält. Identifiera även åtgärder som påverkar flera fält. Inkludera dessa fält explicit i indexeringsprincipdesignen.
Designa stora arbetslaster för att använda bulkoperationer när det är möjligt.
Identifiera frågor i underordnade matriser och ta reda på om de är kandidater för effektivare underfrågor.
Utforska dina vanligaste och komplexa frågor. Identifiera frågor som använder flera sökningar, kopplingar eller aggregeringar. Överväg dessa frågor i designöverväganden för partitionsnyckeln eller indexeringsprincipen.
För de vanligaste frågorna fastställer du det antal resultat som du förväntar dig för varje sida. Det här talet hjälper dig att formalisera antalet buffrade objekt för förinställda resultat.
Optimera kodlogik. Använd singleton-mönstret för
CosmosClientklassen i de flesta SDK:er. Använd klientklassen i de flesta SDK:er som singleton. Klientklassen hanterar sin egen livscykel och är utformad för att inte tas bort. Att ständigt skapa och ta bort instanser kan leda till sämre prestanda.
Konfigurationsrekommendationer
| Recommendation | Benefit |
|---|---|
| Använd verktyg som kapacitetskalkylatorn för att fastställa hur mycket dataflöde som krävs för din prestandabaslinje. Använd funktioner som autoskalning för att skala ditt faktiska dataflöde för att bättre matcha din faktiska arbetsbelastning. Övervaka din faktiska dataflödesförbrukning efteråt och gör justeringar. | Med hjälp av kapacitetskalkylatorn kan du fatta välgrundade beslut om att etablera resurser från början. Du kan se till att databasen kan hantera den förväntade belastningen utan onödiga kostnader. Autoskalning av dataflöde justerar automatiskt den tilldelade kapaciteten så att den matchar arbetsbelastningens behov. |
| Använd optimeringstekniker på klient- och serversidan när det är lämpligt. Dra nytta av den inbyggda integrerade cachen. Konfigurera SDK för att hantera hur många objekt som är förinställda eller buffrade och returnerade för varje sida. | Kodoptimeringstekniker kan förbättra användarupplevelsen och göra klient- och serverprogrammet effektivare genom att minska RU-avgifterna för upprepade läsningar och frågor. Dessa fördelar kan minska kostnaderna. |
| Använd global distribution och distribuera Azure Cosmos DB-instanser i alla regioner som är närmast dina slutanvändare. | Om du distribuerar databasen till de regioner som är närmast slutanvändarna kan du minska läsfördröjningen, vilket kan förbättra användarupplevelsen. Läsreplikering möjliggör effektiva läsåtgärder oavsett hur skrivåtgärderna konfigureras. |
| Använd skrivningar i flera regioner om dina klienter är geografiskt distribuerade. | Minskar skrivfördröjningen genom att låta klienten skriva till en region som ligger närmast den. Din arbetsbelastning måste ha stöd för konfliktlösningslogik och ditt program måste förvänta sig slutligt konsekvensbeteende. |
| Konfigurera SDK för direktläge för bästa prestanda. Med det här läget kan klienten öppna TCP-anslutningar (Transmission Control Protocol) direkt till partitioner i tjänsten och skicka begäranden direkt utan mellanliggande gateway. | Direktläge ger bättre prestanda eftersom det finns färre nätverkshopp. |
| Använd massfunktionen i klient-SDK:er i scenarier som kräver högt dataflöde. Massfunktionen hanterar och samlar automatiskt åtgärder för att maximera genomströmningen. | Genom att använda bulkfunktionen minskas antalet serverdelsbegäranden och uppgifter distribueras effektivt mellan partitioner. Den här metoden förbättrar prestanda och resursanvändning. |
| Inaktivera indexering för massåtgärder. Om det finns flera åtgärder för infogning, ersättning eller uppsert inaktiverar du indexering för att förbättra hastigheten för åtgärden samtidigt som du använder massstöd för motsvarande SDK. Du kan omedelbart återanvända indexering senare. | Om du inaktiverar indexering under massåtgärder minskar kostnaderna för att underhålla indexet. Du kan bättre använda resurser för massåtgärder, vilket påskyndar datainfogning och uppdateringar. |
Skapa sammansatta index för fält i komplexa åtgärder. Överväg att använda sammansatta index för ORDER BY instruktioner som har flera fält. |
Sammansatta index kan öka effektiviteten för åtgärder på flera fält, vilket gör datahämtningen snabb och effektiv. |
| Optimera värdklientdatorerna för SDK:erna. I de vanligaste fallen använder du minst fyra kärnor och åtta GB minne på 64-bitars värddatorer som använder SDK:erna för .NET eller Java. Aktivera accelererat nätverk på värddatorer. |
Om du använder datorer med högre specifikationer ser du till att SDK:erna kan hantera fler åtgärder samtidigt. Accelererade nätverk kan minska svarstiden, vilket ökar svarstiden. |
| Använd underfrågor strategiskt för att optimera frågor som ansluter till stora datamängder.
Optimera självkopplingsuttryck med hjälp av underfrågor för att filtrera matriserna innan du ansluter matriser i objektet. För frågor mellan partitioner optimerar du frågan så att den innehåller ett filter på partitionsnyckeln för att optimera routningen av frågan till minsta möjliga mängd partitioner. |
Frågeställningar som sammanfogar barnmatriser kan öka i komplexitet om flera matriser är inblandade och inte filtreras. Genom att använda underfrågor kan matriser filtreras innan de ansluts, vilket ökar effektiviteten för självkopplingsuttryck. |
| Använd analytiska arbetsbelastningar för de mest komplexa frågorna. Om du kör frekventa aggregeringar eller join-frågor över stora containrar, överväg att aktivera den analytiska lagringen och köra frågor i Azure Synapse Analytics. |
Analytiska arbetsbelastningar isoleras från transaktionsarbetsbelastningar och optimeras för hantering av komplexa frågor, vilket förhindrar prestandaförsämring och säkerställer snabbare resultat. |
Azure-riktlinjer
Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör Azure Cosmos DB för NoSQL och dess beroenden. Några av föregående rekommendationer kan granskas via Azure Policy. Du kan till exempel kontrollera om:
Azure Cosmos DB-kontot distribueras till minst två regioner.
Azure Cosmos DB-databaskonton är korrekt konfigurerade för zonredundans.
Azure Cosmos DB-databaskonton bör ha lokala autentiseringsmetoder inaktiverade så att Microsoft Entra-identiteter krävs för autentisering.
Åtkomst till offentligt nätverk inaktiveras så att ditt Azure Cosmos DB-konto inte exponeras på det offentliga Internet.
Det maximala dataflödet bör begränsas när du skapar Azure Cosmos DB-databaser och containrar via resursprovidern.
För en heltäckande styrning, gå igenom de inbyggda definitionerna i Azure Policy för Azure Cosmos DB för NoSQL och andra principer som kan påverka säkerheten för lagring av data.
Azure Advisor-rekommendationer
Azure Advisor är en anpassad molnkonsult som hjälper dig att följa metodtipsen för att optimera dina Azure-distributioner.
Mer information finns i Azure Advisor.