Beoordeling van Azure Well-Architected Framework : Azure Cosmos DB for NoSQL
In dit artikel worden de aanbevolen procedures voor Azure Cosmos DB for NoSQL beschreven. Deze aanbevolen procedures zorgen ervoor dat u oplossingen in Azure Cosmos DB kunt implementeren die efficiënt, betrouwbaar, veilig, geoptimaliseerd zijn voor kosten en operationeel uitstekend zijn. Deze richtlijnen zijn gericht op de vijf pijlers van uitstekende architectuur in het Well-Architected Framework:
In deze beoordelingshandleiding wordt ervan uitgegaan dat u een werkende kennis van Azure Cosmos DB hebt en goed bekend bent met de functies ervan. Zie Azure Cosmos DB voor NoSQL voor meer informatie.
Vereisten
Het begrijpen van de goed ontworpen frameworkpijlers kan helpen bij het produceren van een hoogwaardige, stabiele en efficiënte cloudarchitectuur. We raden u aan om te beginnen met het beoordelen van uw workload met behulp van de Beoordelingsevaluatie van het Azure Well-Architected Framework.
Bekijk voor meer context verschillende referentiearchitecturen die de overwegingen uit deze handleiding in hun ontwerp weerspiegelen. Deze architecturen omvatten, maar zijn niet beperkt tot:
- Wereldwijd gedistribueerde bedrijfskritieke toepassingen met behulp van Azure Cosmos DB
- Serverloze apps met Azure Cosmos DB
- Web-app voor meerdere regio's met Azure Cosmos DB-replicatie
Betrouwbaarheid
Net als bij elke cloudservice kunnen fouten optreden, zowel aan de service als aan de workloadzijde. Het is onmogelijk om alle mogelijke fouten te voorkomen, maar het is een beter doel om de effecten die een enkel mislukt onderdeel kan hebben op uw hele workload te minimaliseren. Deze sectie bevat overwegingen en aanbevelingen om de gevolgen van een eenmalige fout te minimaliseren.
Controlelijst voor ontwerp
- Overweeg hoe uw geselecteerde consistentieniveau en replicatiemodus van invloed zijn op de RPO (Recovery Point Objective) in een regiobrede storing.
- Ontwerp de implementatie van uw databaseaccount, zodat deze ten minste twee regio's in Azure omvat. Distribueer uw account bovendien over meerdere beschikbaarheidszones wanneer deze worden aangeboden in uw Azure-regio.
- Evalueer de schrijfstrategieën voor meerdere regio's en schrijfstrategieën voor één regio voor uw workload. Ontwerp uw workload voor schrijfbewerkingen met één regio om ten minste een tweede leesregio voor failover te hebben. Schakel automatische failover in voor schrijf- en leesscenario's in één regio. Voor schrijfbewerkingen in meerdere regio's vergelijkt u de afwegingen in complexiteit en consistentie met de voordelen van schrijven naar meerdere regio's. Bekijk de verwachtingen tijdens een regionale storing voor schrijfaccounts voor één regio en schrijfaccounts voor meerdere regio's.
- Schakel door de service beheerde failover in voor uw account.
- Ontwerp een end-to-end test van hoge beschikbaarheid voor uw toepassing.
- Doorloop veelvoorkomende back-upprocessen, waaronder, maar niet beperkt tot, herstel naar een bepaald tijdstip, herstellen van onopzettelijke destructieve bewerkingen, het herstellen van verwijderde resources en het herstellen naar een andere regio op een bepaald tijdstip. Configureer het account met continue back-up en kies de juiste bewaarperiode op basis van uw bedrijfsvereisten.
- Verken de handleiding voor het ontwerpen van tolerante toepassingen, bekijk het standaardbeleid voor opnieuw proberen voor de SDK's en plan aangepaste verwerking voor specifieke tijdelijke fouten. Deze handleidingen bieden aanbevolen procedures om toepassingscode tolerant te maken voor tijdelijke fouten.
Aanbevelingen
Aanbeveling | Voordeel |
---|---|
Distribueer uw Azure Cosmos DB-account over beschikbaarheidszones (indien beschikbaar). | Beschikbaarheidszones bieden afzonderlijke stroom-, netwerk- en koelingsfouten voor hardwarefouten in een subset van uw replica's. Azure Cosmos DB heeft meerdere replica's die zich in één willekeurige beschikbaarheidszone bevinden wanneer de functie beschikbaarheidszones niet wordt gebruikt. Als de functie voor de beschikbaarheidszone wordt gebruikt, omvatten replica's meerdere beschikbaarheidszones. |
Configureer uw Azure Cosmos DB-account om ten minste twee regio's te omvatten. | Als er meerdere regio's zijn, voorkomt u dat uw account volledig niet beschikbaar is als er sprake is van een storing in een geïsoleerde regio. |
Schakel door de service beheerde failover in voor uw account. | Met servicebeheerde failover kan Azure Cosmos DB de schrijfregio van een account met meerdere regio's wijzigen om de beschikbaarheid te behouden. Deze wijziging vindt plaats zonder tussenkomst van de gebruiker. Inzicht in de afwegingen met door de service beheerde failover en plan indien nodig geforceerde failover. Zie voor meer informatie het bouwen van maximaal beschikbare toepassingen. |
Valideer beschikbaarheid door failover handmatig te testen met door de service beheerde failover tijdelijk uitgeschakeld. | Als u servicebeheerfailover tijdelijk uitschakelt, kunt u de end-to-end hoge beschikbaarheid van uw toepassing valideren met een handmatige failover die is gestart met behulp van een script of Azure Portal. Daarna kunt u door de service beheerde failover opnieuw in- en uit te voeren. |
Azure Policy-definities
- Beleid: minimaal twee regio's vereisen
- Beleid: door de service beheerde failover inschakelen
- Beleid: Specifieke implementatieregio's vereisen
Beveiliging
Beveiliging is een essentieel onderdeel van elke architectuur die gemakkelijk voor het gemak over het hoofd kan worden gezien. Vergroot de beveiliging van uw uiteindelijke workload door vooraf rekening te houden met verschillende aanbevolen beveiligingsprocedures voordat de eerste resource of het concept wordt gemaakt. Deze sectie bevat overwegingen en aanbevelingen om het aantal beveiligingsproblemen voor uw uiteindelijke workload te verminderen.
Controlelijst voor ontwerp
- Verminder oppervlakteaanvallen door te ontwerpen om privé-eindpunten te gebruiken in overeenstemming met de beveiligingsbasislijn voor Azure Cosmos DB.
- Maak rollen, groepen en toewijzingen voor toegang tot het besturingsvlak en het gegevensvlak tot uw account volgens het principe van toegang met minimale bevoegdheden. Overweeg om verificatie op basis van sleutels uit te schakelen.
- Beoordeel naleving en certificeringen op serviceniveau in de context van de huidige algemene vereisten voor persoonlijke gegevens.
- Versleutel data-at-rest of in-motion met behulp van door de service beheerde sleutels of door de klant beheerde sleutels (CMK's).
- Controleer gebruikerstoegang, beveiligingsschendingen en resourcebewerkingen met besturingsvlaklogboeken.
- Bewaak gegevensuitgangen, gegevenswijzigingen, gebruik en latentie met metrische gegevens van het gegevensvlak.
Aanbevelingen
Aanbeveling | Voordeel |
---|---|
Implementeer minimaal de beveiligingsbasislijnen voor gegevensbescherming en identiteitsbeheer. | Doorloop de beveiligingsbasislijn , waaronder identiteitsbeheer en gegevensbescherming. Implementeer de aanbevelingen om uw Azure Cosmos DB-account te beveiligen. |
Schakel openbare eindpunten uit en gebruik waar mogelijk privé-eindpunten. | Vermijd onnodige of ongebruikte openbare eindpunten die beschikbaar zijn voor surface area-aanvallen op uw account. |
Op rollen gebaseerd toegangsbeheer gebruiken om de toegang tot specifieke identiteiten en groepen en binnen het bereik van goed gedefinieerde toewijzingen te beperken. | Gebruik op rollen gebaseerd toegangsbeheer om onbedoelde toegang tot uw account te voorkomen. Wijs de juiste rollen en machtigingen toe aan gebruikers of toepassingen die toegang hebben tot Azure Cosmos DB. |
Maak eindpunten en regels voor virtuele netwerken om de toegang tot het account te beperken. | Implementeer service-eindpunten voor virtuele netwerken en firewallregels om de toegang tot uw Azure Cosmos DB-account te beperken. Gebruik netwerkbeveiligingsgroepen (NSG's) om inkomend en uitgaand verkeer van en naar de Azure Cosmos DB-resources te beheren. Door de toegang tot vertrouwde netwerken te beperken en de juiste netwerkbeveiligingsmaatregelen toe te passen, kunt u uw gegevens beschermen tegen onbevoegde toegang. |
Volg de beste procedures voor softwareontwikkeling voor beveiligde toegang tot gegevens. | Volg beveiligingscoderingsprocedures en voer veilige codebeoordelingen uit bij het ontwikkelen van toepassingen die communiceren met Azure Cosmos DB. Bescherm tegen veelvoorkomende beveiligingsproblemen, zoals injectieaanvallen, cross-site scripting (XSS) of onveilige direct objectverwijzingen (IDOR). Implementeer invoervalidatie, geparameteriseerde query's en de juiste foutafhandeling voor algemene HTTP-statuscodes om beveiligingsrisico's te voorkomen. |
Bewaak logboeken op het besturingsvlak voor schendingen. | Met bewaking kunt u toegangspatronen en auditlogboeken bijhouden, zodat uw database veilig blijft en voldoet aan de relevante regelgeving voor gegevensbescherming. Het bewaken van metrische gegevens op het gegevensvlak kan ook helpen bij het identificeren van onbekende patronen die een beveiligingsschending kunnen onthullen. Zie de beveiligingscontrolelijst voor Azure-databases voor meer informatie. |
Microsoft Defender voor Azure Cosmos DB inschakelen | Microsoft Defender detecteert pogingen om databases te misbruiken in uw Azure Cosmos DB for NoSQL-account. Defender detecteert mogelijke SQL-injecties, verdachte toegangspatronen en andere mogelijke exploitatie. |
Azure Policy-definities
- Beleid: Microsoft Defender inschakelen
- Beleid: Een service-eindpunt voor een virtueel netwerk vereisen
- Beleid: Lokale verificatie uitschakelen
- Beleid: Firewallregels vereisen
Kostenoptimalisatie
De kenmerken van uw workload en de implementatie van uw oplossing kunnen van invloed zijn op de uiteindelijke kosten van het uitvoeren in Azure. Overweeg de belangrijkste stuurprogramma's zoals uw partitioneringsstrategie, consistentieniveau, replicatie en schrijftype bij het ontwerpen van uw workload. Houd bij het aanpassen van de grootte van uw werkbelasting rekening met de lees-/schrijf aard van uw gegevens, de grootte van gemiddelde items, normalisatie en TTL. Deze sectie bevat overwegingen en aanbevelingen voor het stroomlijnen van de kosten voor uw workload.
- Ontwerp een indexeringsbeleid dat rekening houdt met de bewerkingen en query's die u vaak in uw workload maakt.
- Bepaal een partitiesleutel of set partitiesleutels die een waarde met een hoge kardinaliteit hebben en die niet verandert. Gebruik de bestaande richtlijnen en aanbevolen procedures om een geschikte partitiesleutel te selecteren. Houd ook rekening met uw indexeringsbeleid bij het bepalen van een partitiesleutel.
- Selecteer een schema voor doorvoertoewijzing dat geschikt is voor uw workload. Bekijk de voordelen van standaarddoorvoer en automatische schaalaanpassing die is gedistribueerd op database- of containerniveau. Houd ook rekening met serverloos wanneer dit van toepassing is. Bekijk de verkeerspatronen van uw workload in de context van het selecteren van een toewijzingsschema voor doorvoer.
- Houd rekening met consistentieniveaus die betrekking hebben op uw workload. Overweeg ook of clientsessies het standaardconsistentieniveau moeten wijzigen.
- Bereken de verwachte totale gegevensopslag voor uw workload. De grootte van items en indexen zijn allemaal van invloed op uw kosten voor gegevensopslag. Bereken de impact van replicatie en back-up op opslagkosten.
- Maak een strategie om automatisch oudere items te verwijderen die niet meer worden gebruikt of nodig zijn. Exporteer deze items indien nodig naar een goedkopere opslagoplossing voordat ze worden verwijderd.
- Evalueer uw meest voorkomende query's die zoekacties tussen partities minimaliseren. Gebruik deze informatie om het proces te informeren over het selecteren van een partitiesleutel of het aanpassen van een indexeringsbeleid.
Aanbevelingen
Aanbeveling | Voordeel |
---|---|
RU/s-gebruik en -patronen bewaken. | Gebruik metrische gegevens om het RU-verbruik vanaf het begin van uw oplossing te bewaken. Gebruik query's en andere technieken voor gegevensonderzoek om antipatronen in uw toepassingscode te vinden. |
Pas uw indexeringsbeleid aan om toe te wijzen aan uw workload. | Het standaardindexeringsbeleid indexeert alle paden in een item en dit beleid kan aanzienlijke gevolgen hebben voor ru-verbruik en -kosten. Gebruik een indexeringsbeleid dat is ontworpen op basis van alleen de paden die u moet indexeren voor uw algemene query's. Schakel voor schrijfintensieve workloads automatische indexering uit van kolommen die niet worden gebruikt in query's. |
Selecteer partitiesleutel[s] die ideaal zijn voor uw workload. | De partitiesleutel[s] moet doorvoerverbruik en gegevensopslag gelijkmatig verdelen over logische partities. De selectie moet ook het aantal niet-afhankelijke query's tussen partities minimaliseren. Vermijd dynamische partities die een onevenredige hoeveelheid verkeer ontvangen, omdat niet-verdeelde partities de doorvoerkosten en tijdelijke fouten kunnen verhogen. Gebruik de meest voorkomende zoekquery's om mogelijke partitiesleutels te bepalen die waarschijnlijk alleen query's met één partitie of gebonden query's voor meerdere partities uitvoeren. |
Gebruik serverloze of ingerichte doorvoer, handmatig inrichten of automatisch schalen, op database- of containerniveau, indien van toepassing op uw workload. | Vergelijk de ingerichte doorvoertypen en selecteer de juiste optie voor uw workload. Over het algemeen kunnen kleinere en ontwikkel-/testworkloads profiteren van serverloze doorvoer of handmatige gedeelde doorvoer op databaseniveau. Grotere, bedrijfskritieke workloads kunnen profiteren van ingerichte doorvoer die is toegewezen op containerniveau. |
Configureer het standaardconsistentieniveau voor uw toepassing. Downgrade indien nodig het standaardconsistentieniveau in clientsessies. | Mogelijk hoeft u het standaardconsistentieniveau niet altijd te wijzigen of overschrijven in clientsessies. Houd rekening met de hogere kosten voor leesbewerkingen op sterkere consistentieniveaus. |
Gebruik de Azure Cosmos DB-emulator voor ontwikkel-/testworkloads. | De Azure Cosmos DB-emulator is een optie voor ontwikkelen/testen en continue integratie die kan besparen op de kosten van deze algemene workloads voor uw ontwikkelteam. De emulator is ook beschikbaar als een Docker-containerinstallatiekopieën. |
Transactionele batchbewerkingen gebruiken | Ontwerp partities om te profiteren van transactionele batchbewerkingen binnen een logische partitiesleutel voor het invoegen. Gebruik batchbewerkingen in SDKS aan de clientzijde voor het invoegen, bijwerken of verwijderen van meerdere documenten in één transactieaanvraag. Deze stap kan het aantal afzonderlijke aanvragen verminderen en kan uiteindelijk leiden tot een betere doorvoerefficiëntie. |
Gebruik projectie om de doorvoerkosten van grote queryresultatensets te verlagen. | Ontwerpquery's om alleen het minimale aantal velden te projecteren dat is vereist uit een resultatenset. Als berekeningen op velden nodig zijn, evalueert u de doorvoerkosten voor het uitvoeren van deze berekeningen aan de serverzijde versus de clientzijde. |
Vermijd het gebruik van niet-afhankelijke query's voor meerdere partities. | Evalueer en ontwerp query's om ervoor te zorgen dat ze binnen één logische partitie zoeken, indien mogelijk. Gebruik queryfilters om te bepalen welke logische partities de querydoelen zijn. Als een query moet zoeken op logische partities, moet de query alleen een subset van logische partities doorzoeken in plaats van een volledige scan. |
Implementeer time-to-live (TTL) om ongebruikte items te verwijderen. | Gebruik TTL om automatisch gegevens te verwijderen die niet meer nodig zijn. Beheer de opslagkosten door verlopen of verouderde gegevens te verwijderen. Exporteer indien nodig de verlopen gegevens naar een goedkopere opslagoplossing. |
Overweeg een analytische opslag voor zware aggregaties. | De analytische opslag van Azure Cosmos DB synchroniseert uw gegevens automatisch naar een afzonderlijk kolomarchief om te optimaliseren voor grote aggregaties, rapportage en analytische query's. |
Azure Policy-definities
Operationele uitmuntendheid
Workloads moeten worden bewaakt nadat ze zijn geïmplementeerd om ervoor te zorgen dat ze naar behoren presteren. Bovendien kan het bewaken van workloads helpen bij het ontgrendelen van nieuwe efficiënties die niet onmiddellijk duidelijk zijn tijdens de planningsfase. In catastrofale scenario's zijn diagnostische gegevens de sleutel om te ontdekken waarom een incident met hoge ernst kan zijn opgetreden. Deze sectie bevat overwegingen en aanbevelingen voor het bewaken van gebeurtenissen en kenmerken van uw workloads.
Controlelijst voor ontwerp
- Ontwerp een bewakingsstrategie voor logboeken en metrische gegevens om onderscheid te maken tussen verschillende workloads, markeer uitzonderlijke scenario's, traceer patronen in uitzonderingen/fouten en houd de prestaties van de hostmachine bij.
- Ontwerp grote workloads om waar mogelijk bulkbewerkingen te gebruiken.
- Definieer meerdere waarschuwingen voor het bewaken van bandbreedtebeperking, het analyseren van de doorvoertoewijzing en het bijhouden van de grootte van uw gegevens.
- Ontwerp een bewakingsstrategie voor de beschikbaarheid van uw oplossing in verschillende regio's.
- Best practices maken en afdwingen voor het automatiseren van de implementatie van uw Azure Cosmos DB for NoSQL-account en -resources.
- Plan verwachte metrische drempelwaarden op basis van het partitie- en indexontwerp. Zorg ervoor dat er een plan is om deze metrische gegevens te controleren om te bepalen hoe dicht deze bij de geplande drempelwaarden liggen.
Aanbevelingen
Aanbeveling | Voordeel |
---|---|
Zorg ervoor dat toepassingsontwikkelaars de nieuwste versie van de ontwikkelaars-SDK gebruiken. | Elke Azure Cosmos DB for NoSQL SDK heeft een minimaal aanbevolen versie. Zie .NET SDK en Java SDK voor meer informatie. |
Maak id's in de clienttoepassing om werkbelastingen te onderscheiden. | Overweeg vlaggen, zoals het achtervoegsel van de gebruikersagent, om te bepalen aan welke werkbelasting elke logboekvermelding of metrische waarde moet worden gekoppeld. |
Leg aanvullende diagnostische gegevens vast met behulp van de ontwikkelaars-SDK. | Gebruik de technieken voor diagnostische injectie voor elke SDK om aanvullende informatie over de werkbelasting toe te voegen naast standaardgegevens en logboeken. Zie .NET SDK en Java SDK voor meer informatie. |
Waarschuwingen maken die zijn gekoppeld aan hostmachinebronnen. | Verbinding maken iviteit en beschikbaarheidsproblemen kunnen optreden vanwege problemen met de hostcomputer aan de clientzijde. Bewaak resources zoals CPU, geheugen en opslag op hostmachines met clienttoepassingen met behulp van de Azure Cosmos DB for NoSQL SDK's. |
Gebruik de bulkfuncties van client-SDK's voor grote bewerkingen. | Scenario's waarvoor een hoge doorvoer is vereist, profiteren van het gebruik van de bulkfunctie van de SDK. De bulkfunctie beheert en batchesbewerkingen automatisch om de doorvoer te maximaliseren. |
Waarschuwingen maken voor doorvoerbeperking. | Gebruik waarschuwingen om doorvoerbeperking bij te houden boven de verwachte drempelwaarden. Controleer en pas waarschuwingen in de loop van de tijd aan terwijl u meer te weten komt over uw workload in relatie tot Azure Cosmos DB. De metrische gegevens voor genormaliseerd RU-verbruik zijn een metrische waarde die het percentagegebruik van ingerichte doorvoer voor een database of container meet. Als deze metrische waarde consistent is op 100%, retourneren aanvragen waarschijnlijk een tijdelijke fout. |
Prestaties van query's bijhouden met metrische gegevens. | Gebruik metrische gegevens om de prestaties van uw belangrijkste query's in de loop van de tijd bij te houden. Evalueer of er efficiëntie kan worden gevonden door het indexeringsbeleid bij te werken of query's te wijzigen. Als de prestaties van query's slecht zijn, kunt u de prestaties oplossen en best practices voor query's toepassen. Zie tips voor queryprestaties voor meer informatie. |
Gebruik sjablonen om accountbronnen automatisch te implementeren. | Overweeg Azure Resource Manager-, Bicep- of Terraform-sjablonen om de implementatie van uw account en volgende resources te automatiseren. Zorg ervoor dat uw team dezelfde sjablonen gebruikt om te implementeren in andere niet-productieomgevingen. |
Houd belangrijke metrische gegevens bij om veelvoorkomende problemen in uw workload te identificeren. | Gebruik specifieke metrische gegevens om veelvoorkomende problemen in uw workload te vinden, waaronder, maar niet beperkt tot; RU-gebruik, RU-gebruik per partitie, beperking en aanvraagvolumes per type. Zie De gegevensreferentie controleren voor meer informatie. |
Azure Policy-definities
Prestatie-efficiëntie
- Definieer een prestatiebasislijn voor uw toepassing. Meet hoeveel gelijktijdige gebruikers en transacties u mogelijk moet verwerken. Overweeg workloadkenmerken zoals uw gemiddelde gebruikersstroom, algemene bewerkingen en pieken in gebruik.
- Onderzoek uw meest voorkomende en meest complexe query's. Identificeer query's die gebruikmaken van meerdere zoekacties, joins of aggregaties. Houd rekening met deze query's in ontwerpoverwegingen voor de partitiesleutel of het indexeringsbeleid.
- Bepaal voor de meest voorkomende query's het aantal resultaten dat u per pagina verwacht. Dit nummer helpt bij het formaliseren van het aantal gebufferde items voor vooraf gemaakte resultaten.
- Onderzoek uw doelgebruikers. Bepaal welke Azure-regio's zich het dichtst bij deze regio's bevinden.
- Identificeer query's die gebruikmaken van een of meer volgordevelden. Identificeer ook bewerkingen die van invloed zijn op meerdere velden. Neem deze velden expliciet op in het indexeringsbeleidsontwerp.
- Ontwerpitems zodat hun bijbehorende JSON-documenten zo klein mogelijk zijn. Overweeg om gegevens over meerdere items te splitsen, indien nodig.
- Identificeer query's op onderliggende matrices en bepaal of ze kandidaten zijn voor efficiëntere subquery's.
- Bepaal of uw workload een analytische opslag vereist. Overweeg analytische winkels en services zoals Azure Synapse Link voor uiterst complexe query's.
Aanbeveling | Voordeel |
---|---|
Configureer uw doorvoer op basis van uw prestatiebasislijn. | Gebruik hulpprogramma's zoals de capaciteitscalculator om de hoeveelheid doorvoer te bepalen die nodig is voor uw prestatiebasislijn. Gebruik functies zoals automatisch schalen om de werkelijke doorvoer te schalen zodat deze beter overeenkomt met uw werkelijke werkbelasting. Bewaak daarna uw werkelijke doorvoerverbruik en breng aanpassingen aan. |
Gebruik optimalisatietechnieken aan de client- en serverzijde indien van toepassing. | Profiteer van de ingebouwde geïntegreerde cache. Configureer de SDK om te beheren hoeveel items vooraf zijn geprefetcheerd (gebufferd) en geretourneerd voor elke pagina. |
Implementeer Azure Cosmos DB for NoSQL naar regio's die het dichtst bij uw eindgebruikers liggen. | Verminder latentie door Azure Cosmos DB for NoSQL zoveel mogelijk te implementeren in de regio's die zich het dichtst bij uw eindgebruikers bevinden. Profiteer van leesreplicatie om performante leesprestaties te bieden, ongeacht hoe u schrijfbewerkingen configureert (één of meerdere regio's). Configureer de SDK (.NET/Java) om de voorkeur te geven aan regio's dichter bij uw eindgebruiker. |
Configureer de SDK voor de directe modus. | Directe modus is de voorkeursoptie voor de beste prestaties. Met deze modus kan uw client TCP-verbindingen rechtstreeks openen naar partities in de service en aanvragen rechtstreeks verzenden zonder tussenliggende gateway. Deze modus biedt betere prestaties omdat er minder netwerkhops zijn. |
Indexering uitschakelen voor bulkbewerkingen. | Als er veel insert/replace/upsert-bewerkingen zijn, schakelt u indexering uit om de snelheid van de bewerking te verbeteren met behulp van de bulkondersteuning van de bijbehorende SDK. Indexering kan later onmiddellijk opnieuw worden geïndexeerd. |
Samengestelde indexen maken voor velden die worden gebruikt in complexe bewerkingen. | Samengestelde indexen kunnen de efficiëntie van bewerkingen op meerdere velden verhogen met een orde van grootte. In veel gevallen gebruikt u samengestelde indexen voor ORDER BY instructies met meerdere velden. |
Optimaliseer hostclientcomputers voor de SDK's. | Gebruik voor het meest voorkomende geval ten minste 4 cores en 8 GB geheugen op hostmachines met 64 hapjes met behulp van de SDK's (.NET/Java). Schakel ook versneld netwerken in op hostcomputers. |
Gebruik het singleton-patroon voor de klasse in de CosmosClient meeste SDK's. |
Gebruik de clientklasse in de meeste SDK's als singleton. De clientklasse beheert zijn eigen levenscyclus en is ontworpen om niet te worden verwijderd. Het voortdurend maken en verwijderen van exemplaren kan leiden tot verminderde prestaties. |
Houd de grootte van items kleiner dan 100 kB . | Grotere items verbruiken meer doorvoer voor algemene lees- en schrijfbewerkingen. Query's op grotere items die alle velden projecteren, kunnen ook aanzienlijke doorvoerkosten hebben. |
Gebruik subquery's strategisch om query's te optimaliseren die grote gegevenssets samenvoegen. | Query's die onderliggende matrices samenvoegen, kunnen de complexiteit vergroten als er meerdere matrices betrokken zijn en niet worden gefilterd. Een query die meer dan twee matrices van ten minste 10 items samenvoegt, kan bijvoorbeeld worden uitgebreid tot meer dan 1000 tuples. Optimaliseer self-join-expressies met behulp van subquery's om de matrices te filteren voordat u matrices in het item samenvoegt. Voor query's tussen partities optimaliseert u uw query om een filter op de partitiesleutel op te nemen om de routering van uw query te optimaliseren naar de minste hoeveelheid partities die mogelijk zijn. |
Gebruik analytische workloads voor de meest complexe query's. | Als u frequente aggregaties uitvoert of query's samenvoegt via grote containers, kunt u overwegen de analytische opslag in te schakelen en query's uit te voeren in Azure Synapse Analytics. |
Azure Policy-definities
Extra resources
Overweeg meer resources met betrekking tot Azure Cosmos DB for NoSQL.
Richtlijnen voor Azure Architecture Center
- Multitenancy en Azure Cosmos DB
- Visuele zoekopdrachten in de detailhandel met Azure Cosmos DB
- Gamen met Behulp van Azure Cosmos DB
- Serverloze apps met Azure Cosmos DB
- Persoonlijke instellingen met behulp van Azure Cosmos DB