Azure Well-Architected Framework Review – Azure Cosmos DB für NoSQL
In diesem Artikel werden die bewährten Methoden für Azure Cosmos DB für NoSQL beschrieben. Diese bewährten Methoden stellen sicher, dass Sie Lösungen in Azure Cosmos DB bereitstellen können, die effizient, zuverlässig, sicher, kostenoptimiert und betriebsbereit sind. Dieser Leitfaden konzentriert sich auf die fünf Säulen der Architektur-Exzellenz im Well-Architected Framework:
In diesem Prüfhandbuch wird davon ausgegangen, dass Sie über ein funktionierendes Wissen über Azure Cosmos DB verfügen und mit seinen Features vertraut sind. Weitere Informationen finden Sie unter Azure Cosmos DB für NoSQL.
Voraussetzungen
Das Verständnis der Säulen des Well-Architected Framework kann dazu beitragen, eine qualitativ hochwertige, stabile und effiziente Cloudarchitektur zu erzeugen. Es wird empfohlen, zunächst Ihre Arbeitsauslastung mithilfe der Azure Well-Architected Framework Review-Bewertung zu überprüfen.
Überprüfen Sie für weitere Kontexte verschiedene Referenzarchitekturen, die die Überlegungen aus diesem Leitfaden in ihrem Entwurf widerspiegeln. Diese Architekturen umfassen, sind jedoch nicht beschränkt auf:
- Global verteilte unternehmenskritische Anwendungen mit Azure Cosmos DB
- Serverlose Apps mit Azure Cosmos DB
- Multi-Region-Web-App mit Azure Cosmos DB-Replikation
Zuverlässigkeit
Wie bei jedem Clouddienst können Fehler sowohl auf dem Dienst als auch auf der Workloadseite auftreten. Es ist unmöglich, alle potenziellen Fehler zu verhindern, aber es ist ein besseres Ziel, die Auswirkungen zu minimieren, die eine einzelne fehlerhafte Komponente auf Ihre gesamte Workload haben kann. Dieser Abschnitt enthält Überlegungen und Empfehlungen, um die Folgen eines einmaligen Ausfalls zu minimieren.
Prüfliste für den Entwurf
- Überlegen Sie, wie sich die ausgewählte Konsistenzstufe und der Replikationsmodus auf das Ziel des Wiederherstellungspunkts (RPO) in einem regionsweiten Ausfall auswirken.
- Entwerfen Sie die Bereitstellung Ihres Datenbankkontos so, dass sie mindestens zwei Regionen in Azure umfasst. Verteilen Sie Ihr Konto darüber hinaus über mehrere Verfügbarkeitszonen, wenn sie in Ihrer Azure-Region angeboten werden.
- Bewerten Sie die Strategien für die Multiregion- und Einzelregionenschreibstrategien für Ihre Workload. Entwerfen Sie bei Schreibvorgängen mit einer regionspezifischen Arbeitsauslastung mindestens einen zweiten Lesebereich für failover. Aktivieren Sie das automatische Failover für Schreib- und Leseszenarien mit mehreren Regionen. Vergleichen Sie bei Schreibvorgängen mit mehreren Regionen die Nachteile in Komplexität und Konsistenz mit den Vorteilen des Schreibens in mehrere Regionen. Überprüfen Sie die Erwartungen während eines regionalen Ausfalls für Einzel- und Mehrregionenkonten.
- Aktivieren Sie das vom Dienst verwaltete Failover für Ihr Konto.
- Entwerfen Sie einen End-to-End-Test mit hoher Verfügbarkeit für Ihre Anwendung.
- Gehen Sie durch allgemeine Sicherungsprozesse , einschließlich, aber nicht beschränkt auf: Point-in-Time-Wiederherstellung, Wiederherstellen von versehentlichen destruktiven Vorgängen, Wiederherstellen gelöschter Ressourcen und Wiederherstellen in eine andere Region zu einem Bestimmten Zeitpunkt. Konfigurieren Sie das Konto mit fortlaufender Sicherung, und wählen Sie den entsprechenden Aufbewahrungszeitraum basierend auf Ihren Geschäftlichen Anforderungen aus.
- Erkunden Sie das Handbuch für das Entwerfen robuster Anwendungen, überprüfen Sie die Standard-Wiederholungsrichtlinie für die SDKs, und planen Sie die benutzerdefinierte Behandlung für bestimmte vorübergehende Fehler. Diese Leitfäden enthalten bewährte Methoden, um Anwendungscode anfällig für vorübergehende Fehler zu machen.
Empfehlungen
Empfehlung | Vorteil |
---|---|
Verteilen Sie Ihr Azure Cosmos DB-Konto über Verfügbarkeitszonen (sofern verfügbar). | Verfügbarkeitszonen bieten unterschiedliche Energie-, Netzwerk- und Kühlisolationsfehler für eine Teilmenge Ihrer Replikate. Azure Cosmos DB verfügt über mehrere Replikate, die sich über eine einzelne zufällige Verfügbarkeitszone erstrecken, wenn das Verfügbarkeitszonenfeature nicht verwendet wird. Wenn das Verfügbarkeitszonenfeature verwendet wird, erstrecken sich Replikate über mehrere Verfügbarkeitszonen. |
Konfigurieren Sie Ihr Azure Cosmos DB-Konto für mindestens zwei Regionen. | Durch das Spannen mehrerer Regionen wird verhindert, dass Ihr Konto vollständig nicht verfügbar ist, wenn ein Ausfall einer isolierten Region vorhanden ist. |
Aktivieren Sie das vom Dienst verwaltete Failover für Ihr Konto. | Mit dienstverwaltetem Failover kann Azure Cosmos DB den Schreibbereich eines Kontos mit mehreren Regionen ändern, um die Verfügbarkeit zu erhalten. Diese Änderung tritt ohne Benutzerinteraktion auf. Verstehen Sie die Kompromisse mit dienstverwaltetem Failover und planen Sie bei Bedarf ein erzwungenes Failover. Weitere Informationen finden Sie unter Erstellen von hochverwendbarten Anwendungen. |
Überprüfen Sie die Verfügbarkeit, indem Sie Failover manuell testen, wobei das vom Dienst verwaltete Failover vorübergehend deaktiviert ist. | Durch die vorübergehende Deaktivierung des Dienstverwaltungsfailovers können Sie die End-to-End-Hochverfügbarkeit Ihrer Anwendung mit einem manuellen Failover überprüfen, das mit einem Skript oder dem Azure-Portal gestartet wurde. Anschließend können Sie das vom Dienst verwaltete Failover erneut ausführen. |
Azure Policy-Definitionen
- Richtlinie: Mindestens zwei Regionen erforderlich
- Richtlinie: Aktivieren eines vom Dienst verwalteten Failovers
- Richtlinie: Erfordern bestimmter Bereitstellungsregionen
Sicherheit
Sicherheit ist ein wichtiger Bestandteil jeder Architektur, die leicht übersehen werden kann. Stärken Sie die Sicherheit Ihrer endgültigen Arbeitsauslastung, indem Sie verschiedene bewährte Methoden der Sicherheit im Vorfeld berücksichtigen, bevor die erste Ressource oder der Machbarkeitsnachweis erstellt wird. Dieser Abschnitt enthält Überlegungen und Empfehlungen, um die Anzahl der Sicherheitsrisiken für Ihre endgültige Arbeitsauslastung zu verringern.
Prüfliste für den Entwurf
- Reduzieren Sie den Flächenangriffsbereich, indem Sie private Endpunkte gemäß den Sicherheitsgrundwerten für Azure Cosmos DB verwenden.
- Erstellen Sie Rollen, Gruppen und Zuweisungen für den Zugriff auf Steuerebenen und Datenebenen auf Ihr Konto gemäß dem Prinzip des Zugriffs mit den geringsten Berechtigungen. Erwägen Sie das Deaktivieren der schlüsselbasierten Authentifizierung.
- Bewerten sie die Compliance und Zertifizierungen auf Serviceebene im Kontext der aktuellen globalen Anforderungen an personenbezogene Daten.
- Verschlüsseln Sie Ruhedaten oder in Bewegung mit dienstverwalteten Schlüsseln oder vom Kunden verwalteten Schlüsseln (CMKs).
- Überwachen des Benutzerzugriffs, Sicherheitsverletzungen und Ressourcenvorgänge mit Steuerungsebenenprotokollen.
- Überwachen Des Datenausgangs, Datenänderungen, Nutzung und Latenz mit Datenebenenmetriken.
Empfehlungen
Empfehlung | Vorteil |
---|---|
Implementieren Sie mindestens die Datenschutz- und Identitätsverwaltungssicherheitsgrundsätze. | Durchlaufen Sie die Sicherheitsgrundwerte , einschließlich Identitätsverwaltung und Datenschutz. Implementieren Sie die Empfehlungen zum Sichern Ihres Azure Cosmos DB-Kontos. |
Deaktivieren Sie öffentliche Endpunkte, und verwenden Sie nach Möglichkeit private Endpunkte. | Vermeiden Sie unnötige oder nicht verwendete öffentliche Endpunkte, die für Angriffe auf Oberflächenbereiche für Ihr Konto verfügbar sind. |
Verwenden Sie die rollenbasierte Zugriffssteuerung, um den Zugriff auf die Steuerungsebene auf bestimmte Identitäten und Gruppen und im Rahmen von klar definierten Zuweisungen einzuschränken. | Verwenden Sie die rollenbasierte Zugriffssteuerung, um unbeabsichtigten Zugriff auf Ihr Konto zu verhindern. Weisen Sie Benutzern oder Anwendungen, die auf Azure Cosmos DB zugreifen, geeignete Rollen und Berechtigungen zu. |
Erstellen Sie virtuelle Netzwerkendpunkte und Regeln, um den Zugriff auf das Konto einzuschränken. | Implementieren Sie Endpunkte und Firewallregeln für virtuelle Netzwerke, um den Zugriff auf Ihr Azure Cosmos DB-Konto einzuschränken. Verwenden Sie Netzwerksicherheitsgruppen (NSGs), um eingehenden und ausgehenden Datenverkehr zu und von den Azure Cosmos DB-Ressourcen zu steuern. Das Einschränken des Zugriffs auf vertrauenswürdige Netzwerke und das Anwenden geeigneter Netzwerksicherheitsmaßnahmen trägt dazu bei, Ihre Daten vor unbefugtem Zugriff zu schützen. |
Befolgen Sie die bewährten Methoden für die Softwareentwicklung für den sicheren Zugriff auf Daten. | Befolgen Sie sichere Codierungsmethoden und führen Sie sichere Codeüberprüfungen beim Entwickeln von Anwendungen aus, die mit Azure Cosmos DB interagieren. Schutz vor allgemeinen Sicherheitsrisiken wie Einfügungsangriffen, websiteübergreifendes Skripting (XSS) oder unsicheren direkten Objektverweise (IDOR). Implementieren Sie die Eingabeüberprüfung, parametrisierte Abfragen und die entsprechende Fehlerbehandlung für allgemeine HTTP-Statuscodes , um Sicherheitsrisiken zu verhindern. |
Überwachen Sie Kontrollebenenprotokolle auf Sicherheitsverletzungen. | Mithilfe der Überwachung können Sie Zugriffsmuster und Überwachungsprotokolle nachverfolgen und sicherstellen, dass Ihre Standard Datenbank sicher ist und den relevanten Datenschutzbestimmungen entspricht. Die Überwachung von Datenebenenmetriken kann auch dazu beitragen, unbekannte Muster zu identifizieren, die möglicherweise eine Sicherheitsverletzung erkennen. Weitere Informationen finden Sie in der Sicherheitsprüfliste für Azure-Datenbanken. |
Aktivieren von Microsoft Defender für Azure Cosmos DB | Microsoft Defender erkennt Versuche, Datenbanken in Ihrem Azure Cosmos DB für NoSQL-Konto auszunutzen. Defender erkennt potenzielle SQL-Einfügungen, verdächtige Zugriffsmuster und andere potenzielle Ausbeutung. |
Azure Policy-Definitionen
- Richtlinie: Aktivieren von Microsoft Defender
- Richtlinie: Anfordern eines Endpunkts für einen virtuellen Netzwerkdienst
- Richtlinie: Lokale Authentifizierung deaktivieren
- Richtlinie: Firewallregeln erforderlich
Kostenoptimierung
Die Merkmale Ihrer Workload und die Implementierung Ihrer Lösung können die enden Kosten der Ausführung in Azure beeinflussen. Berücksichtigen Sie Standard Treiber wie Ihre Partitionierungsstrategie, Konsistenzstufe, Replikation und Schreibtyp beim Entwerfen Ihrer Workload. Berücksichtigen Sie bei der Größenanpassung Ihrer Arbeitsauslastung die Lese-/Schreibzugriffsbeschaffenheit Ihrer Daten, die Größe der durchschnittlichen Elemente, normalisierung und TTL. Dieser Abschnitt enthält Überlegungen und Empfehlungen zur Optimierung der Kosten für Ihre Workload.
- Entwerfen Sie eine Indizierungsrichtlinie, die die Vorgänge und Abfragen berücksichtigt, die Sie häufig in Ihrer Workload vornehmen.
- Bestimmen Sie einen Partitionsschlüssel oder einen Satz von Partitionsschlüsseln, die einen Wert mit hoher Karte Inalität aufweisen und sich nicht ändern. Verwenden Sie die vorhandenen Anleitungen und bewährten Methoden , um einen geeigneten Partitionsschlüssel auszuwählen. Berücksichtigen Sie außerdem Ihre Indizierungsrichtlinie beim Bestimmen eines Partitionsschlüssels.
- Wählen Sie ein Durchsatzzuordnungsschema aus, das für Ihre Workload geeignet ist. Überprüfen Sie die Vorteile des standardmäßigen und automatischen Durchsatzes, der auf Datenbank- oder Containerebene verteilt wird. Berücksichtigen Sie auch bei Bedarf serverlos. Überprüfen Sie die Datenverkehrsmuster Ihrer Workload im Kontext der Auswahl eines Durchsatzzuordnungsschemas.
- Berücksichtigen Sie Konsistenzstufen, wenn sie sich auf Ihre Workload beziehen. Überlegen Sie außerdem, ob Clientsitzungen die Standardkonsistenzstufe ändern sollten.
- Berechnen Sie den erwarteten Gesamtdatenspeicher für Ihre Workload. Die Größe von Elementen und Indizes beeinflusst alle Ihre Datenspeicherungskosten. Calcuate the impact of replication and backup on storage costs.
- Erstellen Sie eine Strategie zum automatischen Entfernen älterer Elemente, die nicht mehr verwendet oder erforderlich sind. Wenn erforderlich, exportieren Sie diese Elemente in eine kostengünstige Speicherlösung, bevor sie entfernt werden.
- Bewerten Sie Ihre am häufigsten verwendeten Abfragen, die partitionsübergreifende Nachschlagevorgänge minimieren. Verwenden Sie diese Informationen, um den Vorgang zum Auswählen eines Partitionsschlüssels oder zum Anpassen einer Indizierungsrichtlinie zu informieren.
Empfehlungen
Empfehlung | Vorteil |
---|---|
Überwachen Sie die Ru/s-Auslastung und -Muster. | Verwenden Sie Metriken, um den RU-Verbrauch von Anfang an ihrer Lösung zu überwachen. Verwenden Sie Abfragen und andere Datenforschungstechniken, um Antipattern in Ihrem Anwendungscode zu finden. |
Passen Sie Ihre Indizierungsrichtlinie an, um Ihrer Workload zuzuordnen. | Die Standardindizierungsrichtlinie indiziert alle Pfade in einem Element, und diese Richtlinie kann erhebliche Auswirkungen auf den RU-Verbrauch und die Kosten haben. Verwenden Sie eine Indizierungsrichtlinie, die nur auf den Pfaden basiert, die Sie für Ihre allgemeinen Abfragen indizieren müssen. Deaktivieren Sie für schreibintensive Workloads die automatische Indizierung von Spalten, die in Abfragen nicht verwendet werden. |
Wählen Sie Partitionsschlüssel[s] aus, die ideal für Ihre Workload sind. | Der Partitionsschlüssel[s] sollte den Durchsatzverbrauch und die Datenspeicherung gleichmäßig über logische Partitionen verteilen. Die Auswahl sollte auch die Anzahl der ungebundenen partitionsübergreifenden Abfragen minimieren. Vermeiden Sie Hot Partitionen, die einen unverhältnismäßigen Datenverkehr erhalten, da unausgewogene Partitionen die Durchsatzkosten und vorübergehende Fehler erhöhen können. Verwenden Sie die am häufigsten verwendeten Suchabfragen, um potenzielle Partitionsschlüssel zu ermitteln, die wahrscheinlich nur einzelpartitionsübergreifende oder gebundene partitionsübergreifende Abfragen ausführen. |
Verwenden Sie serverlosen oder bereitgestellten Durchsatz, manuelle Bereitstellung oder Autoskalierung auf Datenbank- oder Containerebene, sofern dies für Ihre Workload geeignet ist. | Vergleichen Sie die bereitgestellten Durchsatztypen , und wählen Sie die entsprechende Option für Ihre Workload aus. Im Allgemeinen können kleinere Und Entwicklungs-/Testarbeitslasten vom serverlosen Durchsatz oder vom manuellen gemeinsam genutzten Durchsatz auf Datenbankebene profitieren. Größere, unternehmenskritische Workloads können von bereitgestelltem Durchsatz profitieren, der auf Containerebene zugewiesen ist. |
Konfigurieren Sie die Standardkonsistenzstufe für Ihre Anwendung. Führen Sie bei Bedarf ein Downgrade der Standardkonsistenzstufe in Clientsitzungen durch. | Möglicherweise müssen Sie die Standardstandardkonsistenzstufe nicht immer ändern oder in Clientsitzungen außer Kraft setzen. Berücksichtigen Sie die höheren Kosten, die mit Lesevorgängen auf höheren Konsistenzebenen verbunden sind. |
Verwenden Sie für Entwicklungs-/Testworkloads den Azure Cosmos DB-Emulator. | Der Azure Cosmos DB-Emulator ist eine Option für Entwicklungs-/Test- und kontinuierliche Integration, die die Kosten dieser allgemeinen Workloads für Ihr Entwicklungsteam sparen kann. Der Emulator ist auch als Docker-Containerimage verfügbar. |
Verwenden von Transaktionsbatchvorgängen | Entwerfen Sie Partitionen, um Transaktionsbatchvorgänge innerhalb eines logischen Partitionsschlüssels zum Einfügen zu nutzen. Verwenden Sie Batchvorgänge in clientseitigen SDKS zum Einfügen, Aktualisieren oder Löschen mehrerer Dokumente in einer einzelnen Transaktionsanforderung. Dieser Schritt kann die Anzahl einzelner Anforderungen verringern und letztendlich zu einer besseren Durchsatzeffizienz führen. |
Verwenden Sie die Projektion, um die Durchsatzkosten großer Abfrageergebnissätze zu reduzieren. | Erstellen sie Abfragen, um nur die minimale Anzahl von Feldern zu projizieren, die aus einem Resultset erforderlich sind. Wenn Berechnungen für Felder erforderlich sind, bewerten Sie die Durchsatzkosten für die Durchführung dieser Berechnungen serverseitig und clientseitig. |
Vermeiden Sie die Verwendung ungebundener partitionsübergreifender Abfragen. | Auswerten und Erstellen von Abfragen, um sicherzustellen, dass sie nach Möglichkeit innerhalb einer einzigen logischen Partition suchen. Verwenden Sie Abfragefilter, um zu steuern, welche logischen Partitionen die Abfrageziele haben. Wenn eine Abfrage über logische Partitionen hinweg suchen muss, binden Sie die Abfrage nur an eine Teilmenge logischer Partitionen anstelle einer vollständigen Überprüfung. |
Implementieren Sie Time-to-Live (TTL), um nicht verwendete Elemente zu entfernen. | Verwenden Sie TTL, um daten, die nicht mehr benötigt werden, automatisch zu löschen. Verwalten Sie Die Speicherkosten, indem Sie abgelaufene oder veraltete Daten entfernen. Exportieren Sie die abgelaufenen Daten bei Bedarf in eine kostengünstige Speicherlösung. |
Betrachten Sie einen analytischen Speicher für schwere Aggregationen. | Azure Cosmos DB Analytical Store synchronisiert Ihre Daten automatisch mit einem separaten Spaltenspeicher, um für große Aggregationen, Berichte und analytische Abfragen zu optimieren. |
Azure Policy-Definitionen
Optimaler Betrieb
Workloads müssen überwacht werden, nachdem sie bereitgestellt wurden, um sicherzustellen, dass sie wie beabsichtigt ausgeführt werden. Darüber hinaus kann die Überwachung von Workloads dazu beitragen, neue Effizienzen zu entsperren, die während der Planungsphase nicht sofort offensichtlich sind. In katastrophalen Szenarien sind Diagnosedaten der Schlüssel, um zu ermitteln, warum ein Vorfall mit hohem Schweregrad aufgetreten ist. Dieser Abschnitt enthält Überlegungen und Empfehlungen zur Überwachung von Ereignissen und Merkmalen Ihrer Workloads.
Prüfliste für den Entwurf
- Entwerfen Sie eine Protokoll- und Metriküberwachungsstrategie, um zwischen verschiedenen Workloads zu unterscheiden, außergewöhnliche Szenarien zu kennzeichnen, Muster in Ausnahmen/Fehlern nachzuverfolgen und die Leistung des Hostcomputers nachzuverfolgen.
- Entwerfen Sie große Workloads so, dass Massenvorgänge nach Möglichkeit verwendet werden.
- Definieren Sie mehrere Warnungen, um die Drosselung zu überwachen, die Durchsatzzuordnung zu analysieren und die Größe Ihrer Daten nachzuverfolgen.
- Entwerfen Sie eine Überwachungsstrategie für die Verfügbarkeit Ihrer Lösung in allen Regionen.
- Erstellen und Erzwingen bewährter Methoden zum Automatisieren der Bereitstellung Ihres Azure Cosmos DB für NoSQL-Konto und -Ressourcen.
- Planen Sie die erwarteten Schwellenwerte für Metriken basierend auf Partitions- und Indexentwurf. Stellen Sie sicher, dass diese Metriken überwacht werden sollen, um zu bestimmen, wie nah sie den geplanten Schwellenwerten sind.
Empfehlungen
Empfehlung | Vorteil |
---|---|
Stellen Sie sicher, dass Anwendungsentwickler die neueste Version des Entwickler-SDK verwenden. | Jedes Azure Cosmos DB für NoSQL SDK verfügt über eine mindest empfohlene Version. Weitere Informationen finden Sie unter .NET SDK und Java SDK. |
Erstellen Sie Bezeichner in der Clientanwendung, um Workloads zu unterscheiden. | Erwägen Sie Flags, z. B. das Suffix des Benutzer-Agents, um zu ermitteln, welcher Workload jeder Protokolleintrag oder jede Metrik zugeordnet werden soll. |
Erfassen Sie zusätzliche Diagnose mithilfe des Entwickler-SDKs. | Verwenden Sie die Diagnose Injektionstechniken für jedes SDK, um zusätzliche Informationen zur Workload zusammen mit Standardmetriken und Protokollen hinzuzufügen. Weitere Informationen finden Sie unter .NET SDK und Java SDK. |
Erstellen Sie Warnungen, die mit Hostcomputerressourcen verknüpft sind. | Verbinden ivitäts- und Verfügbarkeitsprobleme können aufgrund von Problemen mit clientseitigem Hostcomputer auftreten. Überwachen Sie Ressourcen wie CPU, Arbeitsspeicher und Speicher auf Hostcomputern mit Clientanwendungen mithilfe der Azure Cosmos DB für NoSQL-SDKs. |
Verwenden Sie die Massenfeatures von Client-SDKs für große Vorgänge. | Szenarien, die einen hohen Durchsatz erfordern, profitieren von der Verwendung des Massenfeatures des SDK. Das Massenfeature verwaltet vorgänge automatisch und stapelt Vorgänge, um den Durchsatz zu maximieren. |
Erstellen Sie Warnungen für die Durchsatzdrosselung. | Verwenden Sie Warnungen, um die Durchsatzdrosselung über die erwarteten Schwellenwerte hinaus nachzuverfolgen. Im Laufe der Zeit können Sie Warnungen überprüfen und anpassen, wenn Sie mehr über Ihre Arbeitsauslastung in Bezug auf Azure Cosmos DB erfahren. Die Metrik "Normalisierter RU-Verbrauch" ist eine Metrik , die die prozentuale Auslastung des bereitgestellten Durchsatzes für eine Datenbank oder einen Container misst. Wenn diese Metrik konsistent bei 100 % liegt, geben Anforderungen wahrscheinlich einen vorübergehenden Fehler zurück. |
Verfolgen Sie die Abfrageleistung mithilfe von Metriken. | Verwenden Sie Metriken, um die Leistung Ihrer wichtigsten Abfragen im Laufe der Zeit nachzuverfolgen. Bewerten Sie, ob die Effizienz gefunden werden muss, indem Sie die Indizierungsrichtlinie aktualisieren oder Abfragen ändern. Wenn die Abfrageleistung schlecht ist, beheben Sie die Leistung, und wenden Sie bewährte Methoden für Abfragen an. Weitere Informationen finden Sie in den Tipps zur Abfrageleistung. |
Verwenden Sie Vorlagen, um Kontoressourcen automatisch bereitzustellen. | Erwägen Sie Azure Resource Manager-, Bicep- oder Terraform-Vorlagen , um die Bereitstellung Ihres Kontos und der nachfolgenden Ressourcen zu automatisieren. Stellen Sie sicher, dass Ihr Team dieselben Vorlagen verwendet, um sie in anderen Nichtproduktionsumgebungen bereitzustellen. |
Verfolgen Sie wichtige Metriken, um häufige Probleme in Ihrer Workload zu identifizieren. | Verwenden Sie bestimmte Metriken, um häufige Probleme in Ihrer Workload zu finden, einschließlich, aber nicht beschränkt auf; RU-Auslastung, RU-Auslastung nach Partition, Einschränkung und Anforderung von Volumes nach Typ. Weitere Informationen finden Sie unter Monitordatenverweis. |
Azure Policy-Definitionen
Effiziente Leistung
- Definieren Sie eine Leistungsbasislinie für Ihre Anwendung. Messen Sie, wie viele gleichzeitige Benutzer und Transaktionen Sie möglicherweise verarbeiten müssen. Berücksichtigen Sie Arbeitsauslastungsmerkmale wie ihren durchschnittlichen Benutzerfluss, allgemeine Vorgänge und Spitzen bei der Nutzung.
- Recherchieren Sie Ihre am häufigsten verwendeten und komplexesten Abfragen. Identifizieren Sie Abfragen, die mehrere Nachschlagevorgänge, Verknüpfungen oder Aggregate verwenden. Berücksichtigen Sie diese Abfragen in Entwurfsüberlegungen für den Partitionsschlüssel oder die Indizierungsrichtlinie.
- Ermitteln Sie für die am häufigsten verwendeten Abfragen die Anzahl der Ergebnisse, die pro Seite erwartet werden. Diese Zahl trägt dazu bei, die Anzahl der gepufferten Elemente für vorab abgerufene Ergebnisse zu formalisieren.
- Recherchieren Sie Ihre Zielbenutzer. Ermitteln Sie, welche Azure-Regionen ihnen am nächsten stehen.
- Identifizieren Sie Abfragen, die ein oder mehrere Sortierfelder verwenden. Identifizieren Sie außerdem Vorgänge, die sich auf mehrere Felder auswirken. Fügen Sie diese Felder explizit in den Indizierungsrichtlinienentwurf ein.
- Entwerfen Sie Elemente so, dass die entsprechenden JSON-Dokumente so klein wie möglich sind. Die Aufteilung von Daten wird bei Bedarf über mehrere Elemente hinweg in Erwägung gezogen.
- Identifizieren Sie Abfragen für untergeordnete Arrays, und bestimmen Sie, ob sie Kandidaten für effizientere Unterabfragen sind.
- Ermitteln Sie, ob Ihre Workload einen analytischen Speicher erfordert. Betrachten Sie analytische Speicher und Dienste wie Azure Synapse Link für extrem komplexe Abfragen.
Empfehlung | Vorteil |
---|---|
Konfigurieren Sie ihren Durchsatz basierend auf Ihrer Leistungsbasis. | Verwenden Sie Tools wie den Kapazitätsrechner , um den für Ihre Leistungsbasis erforderlichen Durchsatz zu ermitteln. Verwenden Sie Features wie autoskalieren , um den tatsächlichen Durchsatz zu skalieren, um ihren tatsächlichen Workload genauer zuzuordnen. Überwachen Sie den tatsächlichen Durchsatzverbrauch anschließend, und nehmen Sie Anpassungen vor. |
Verwenden Sie optimierungstechniken auf client- und serverseitigen Fällen. | Nutzen Sie den integrierten Cache. Konfigurieren Sie das SDK, um zu verwalten, wie viele Elemente vorab gesendet (gepuffert) und für jede Seite zurückgegeben werden. |
Stellen Sie Azure Cosmos DB für NoSQL in Regionen bereit, die Ihren Endbenutzern am nächsten stehen. | Verringern Sie die Latenz, indem Sie Azure Cosmos DB für NoSQL in den Regionen bereitstellen, die Ihren Endbenutzern so weit wie möglich am nächsten stehen. Nutzen Sie die Lesereplikation, um eine leistungsfähige Leseleistung bereitzustellen, unabhängig davon, wie Sie schreibgeschützt (einzelne oder mehrere Regionen) konfigurieren. Konfigurieren Sie das (.NET/Java)-SDK so, dass Regionen näher am Endbenutzer bevorzugt werden. |
Konfigurieren Sie das SDK für den direkten Modus. | Der direkte Modus ist die bevorzugte Option für optimale Leistung. Dieser Modus ermöglicht es Ihrem Client, TCP-Verbindungen direkt mit Partitionen im Dienst zu öffnen und Anforderungen direkt ohne zwischengeschaltetes Gateway zu senden. Dieser Modus bietet eine bessere Leistung, da weniger Netzwerkhüpfungen vorhanden sind. |
Die Indizierung für Massenvorgänge deaktivieren. | Wenn viele Einfüge-/Ersetzungsvorgänge vorhanden sind, deaktivieren Sie die Indizierung, um die Geschwindigkeit des Vorgangs zu verbessern, während die Massenunterstützung des entsprechenden SDK verwendet wird. Die Indizierung kann später sofort erneut aktiviert werden. |
Erstellen Sie zusammengesetzte Indizes für Felder, die in komplexen Vorgängen verwendet werden. | Zusammengesetzte Indizes können die Effizienz von Vorgängen auf mehreren Feldern um Größenordnungen erhöhen. Verwenden Sie in vielen Fällen zusammengesetzte Indizes für ORDER BY Anweisungen mit mehreren Feldern. |
Optimieren Sie Hostclientcomputer für die SDKs. | Verwenden Sie für den häufigsten Fall mindestens 4 Kerne und 8 GB Arbeitsspeicher auf 64-Bit-Hostcomputern mit den SDKs (.NET/Java). Aktivieren Sie außerdem das beschleunigte Netzwerk auf Hostcomputern. |
Verwenden Sie das Singletonmuster für die Klasse in den CosmosClient meisten SDKs. |
Verwenden Sie die Clientklasse in den meisten SDKs als Singleton. Die Clientklasse verwaltet ihren eigenen Lebenszyklus und ist darauf ausgelegt, nicht verworfen zu werden. Das ständige Erstellen und Löschen von Instanzen kann zu einer verringerten Leistung führen. |
Behalten Sie die Größe von Elementen unter 100 KB bei. | Größere Elemente verwenden mehr Durchsatz für allgemeine Lese- und Schreibvorgänge. Abfragen zu größeren Elementen, die alle Felder projizieren, können auch erhebliche Durchsatzkosten haben. |
Verwenden Sie Unterabfragen strategisch, um Abfragen zu optimieren, die große Datasets verknüpfen. | Abfragen, die untergeordnete Arrays verknüpfen, können die Komplexität erhöhen, wenn mehrere Arrays beteiligt sind und nicht gefiltert werden. Eine Abfrage, die mehr als zwei Arrays mit mindestens 10 Elementen verknüpft, kann z. B. auf 1.000 Tupel erweitert werden. Optimieren Sie Self-Join-Ausdrücke, indem Sie Unterabfragen verwenden, um die Arrays zu filtern, bevor Arrays innerhalb des Elements verknüpft werden. Optimieren Sie bei partitionsübergreifenden Abfragen Ihre Abfrage so, dass sie einen Filter auf den Partitionsschlüssel einschließt, um das Routing Ihrer Abfrage auf die geringste Menge möglicher Partitionen zu optimieren. |
Verwenden Sie analytische Workloads für die komplexesten Abfragen. | Wenn Sie häufige Aggregationen oder Verknüpfungsabfragen über große Container ausführen, erwägen Sie, den analytischen Speicher zu aktivieren und Abfragen in Azure Synapse Analytics auszuführen. |
Azure Policy-Definitionen
Weitere Ressourcen
Berücksichtigen Sie weitere Ressourcen im Zusammenhang mit Azure Cosmos DB für NoSQL.
Leitfaden zum Azure Architecture Center
- Mehrinstanzenfähigkeit und Azure Cosmos DB
- Visuelle Suche im Einzelhandel mit Azure Cosmos DB
- Gaming mit Azure Cosmos DB
- Serverlose Apps mit Azure Cosmos DB
- Personalisierung mit Azure Cosmos DB