Bewährte Methoden für das Python SDK für Azure Cosmos DB for NoSQL
GILT FÜR: NoSQL
Dieses Handbuch enthält bewährte Methoden für Lösungen, die mit der neuesten Version des Python SDK für Azure Cosmos DB for NoSQL erstellt wurden. Die hier vorgestellten Best Practices helfen dabei, Latenz und Verfügbarkeit zu verbessern und die Leistung Ihrer Lösungen insgesamt zu steigern.
Kontokonfiguration
- Führen Sie Ihre Anwendung nach Möglichkeit in der gleichen Azure-Region aus wie Ihr Azure Cosmos DB-Konto. Durch diese Vorgehensweise lassen sich Wartezeiten reduzieren. Aktivieren Sie die Replikation in mehr als 2 Regionen in Ihren Konten für eine optimale Verfügbarkeit. Aktivieren Sie für Produktionsworkloads ein vom Dienst verwaltetes Failover. Ohne diese Konfiguration kann Konto während der gesamten Dauer des Ausfalls der Schreibregion keine Schreibvorgänge ausführen, da ein manuelles Failover aufgrund der fehlenden Regionskonnektivität nicht erfolgreich verläuft. Weitere Informationen dazu, wie Sie mithilfe des Python SDK mehrere Regionen hinzufügen, finden Sie im Tutorial zur globalen Verteilung.
SDK-Verwendung
- Verwenden Sie für eine optimale Leistung stets die aktuelle Version des Azure Cosmos DB SDK.
- Verwenden Sie für eine bessere Leistung eine einzelne Instanz von
CosmosClient
für die Lebensdauer Ihrer Anwendung. - Legen Sie die
preferred_locations
-Konfiguration für den Cosmos-Client fest. Während eines Failovers werden Schreibvorgänge an die aktuelle Schreibregion gesandt, und alle Lesevorgänge werden an die erste Region in der Liste der bevorzugten Standorte gesandt. Weitere Informationen zu den Mechanismen beim Regionsfailover finden Sie unter Problembehandlung bei der Verfügbarkeit. - Ein vorübergehender Fehler ist ein Fehler, dessen Ursache sich innerhalb kurzer Zeit von selbst auflöst. Anwendungen, die eine Verbindung mit der Datenbank herstellen, sollten dafür ausgelegt sein, vorübergehende Fehler zu tolerieren. Behandeln Sie diese Fehler, indem Sie Wiederholungslogik in Ihrem Code implementieren und vermeiden, dass die Fehler Benutzern als Anwendungsfehler gemeldet werden. Das SDK verfügt über integrierte Logik, um diese vorübergehenden Fehler bei wiederholbaren Anforderungen wie Lese- oder Abfragevorgängen zu behandeln. Da Schreibvorgänge nicht idempotent sind, kann das SDK bei vorübergehenden Fehlern nicht versuchen, diese Vorgänge zu wiederholen. Benutzer können jedoch Wiederholungslogik für Drosselungen konfigurieren. Einzelheiten zu den Fehlern, bei denen ein Vorgang wiederholt wird, finden Sie hier.
- Verwenden Sie die SDK-Protokollierung, um Diagnoseinformationen zu erfassen und Probleme im Zusammenhang mit der Latenz zu beheben.
Datenentwurf
- Der Anforderungsaufwand eines bestimmten Vorgangs hängt direkt mit der Größe des Dokuments zusammen. Es wird empfohlen, die Größe Ihrer Dokumente zu reduzieren, da Vorgänge für große Dokumente mehr kosten als Vorgänge für kleinere Dokumente.
- Einige Zeichen sind nur eingeschränkt erlaubt und dürfen in einigen Bezeichnern nicht verwendet werden: „/“, „\“, „?“, „#“. Generell wird empfohlen, in Bezeichnern wie dem Datenbanknamen, dem Sammlungsnamen, der Objekt-ID oder dem Partitionsschlüssel keine Sonderzeichen zu verwenden, um ein unerwartetes Verhalten zu vermeiden.
- Mit der Indizierungsrichtlinie von Azure Cosmos DB können Sie auch angeben, welche Dokumentpfade mithilfe von Indizierungspfaden in die Indizierung eingeschlossen bzw. von ihr ausgeschlossen werden sollen. Stellen Sie für schnellere Schreibvorgänge sicher, dass nicht verwendete Pfade von der Indizierung ausgeschlossen sind. Weitere Informationen finden Sie unter Erstellen von Indizes mit dem SDK-Beispiel.
Hostmerkmale
- Aufgrund fehlender Ressourcen auf Ihrem Clientcomputer kann es zu Verbindungs-/Verfügbarkeitsproblemen kommen. Überwachen Sie die CPU-Auslastung auf Knoten, auf denen der Azure Cosmos DB-Client ausgeführt wird, und führen Sie bei einer sehr hohen Auslastung eine Hoch- bzw. Aufskalierung durch.
- Wenn Sie einen virtuellen Computer zum Ausführen Ihrer Anwendung verwenden, aktivieren Sie den beschleunigten Netzwerkbetrieb auf Ihrem virtuellen Computer, um Engpässen aufgrund von hohem Datenverkehrsaufkommen entgegenzuwirken und Wartezeiten oder CPU-Jitter zu reduzieren. Darüber hinaus sollten Sie die Verwendung eines leistungsstärkeren virtuellen Computers in Betracht ziehen, bei dem die maximale CPU-Auslastung unter 70 % liegt.
- Abfrageergebnisse werden standardmäßig in Blöcken mit je 100 Elementen oder 4 MB zurückgegeben (je nachdem, welcher Grenzwert zuerst erreicht wird). Wenn eine Abfrage mehr als 100 Elemente zurückgibt, erhöhen Sie die Seitengröße, um die Anzahl der erforderlichen Roundtrips zu reduzieren. Der Arbeitsspeicherverbrauch steigt mit zunehmender Seitengröße.
Nächste Schritte
Weitere Informationen zu Leistungstipps für das Python SDK finden Sie unter Leistungstipps für das Azure Cosmos DB Python SDK.
Weitere Informationen zum Entwerfen einer auf Skalierung und hohe Leistung ausgelegten Anwendung finden Sie unter Partitionieren und Skalieren in Azure Cosmos DB.
Versuchen Sie, die Kapazitätsplanung für eine Migration zu Azure Cosmos DB durchzuführen? Sie können Informationen zu Ihrem vorhandenen Datenbankcluster für die Kapazitätsplanung verwenden.
- Wenn Sie lediglich die Anzahl der virtuellen Kerne und Server in Ihrem vorhandenen Datenbankcluster kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mithilfe von virtuellen Kernen oder virtuellen CPUs.
- Wenn Sie die typischen Anforderungsraten für Ihre aktuelle Datenbankworkload kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mit dem Azure Cosmos DB-Kapazitätsplaner