GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle
Mit hierarchischen Partitionsschlüsseln bzw. der Unterpartitionierung können Sie jetzt eine Hierarchie mit bis zu drei Ebenen für Ihre Partitionsschlüssel konfigurieren, um die Datenverteilung zu optimieren und eine höhere Skalierung zu ermöglichen. In diesem Artikel werden häufig gestellte Fragen zu hierarchischen Partitionsschlüsseln in Azure Cosmos DB beantwortet.
Kann ich vorhandenen Containern hierarchische Partitionsschlüssel hinzufügen?
Das Hinzufügen hierarchischer Partitionsschlüssel zu vorhandenen Containern wird nicht unterstützt. Sie können jedoch einen neuen Container mit Ihrem gewünschten hierarchischen Partitionsschlüssel erstellen und einen Containerkopierauftrag ausführen, um Daten aus Ihrem vorhandenen Container in Ihren neuen Container zu kopieren. Weitere Informationen zum Kopieren von Daten finden Sie unter Containerkopieraufträge.
Gibt es ein Speicherlimit für die Größe eines logischen Partitionsschlüssels?
Ja. Wie aktuell in Azure Cosmos DB ist die logische Partitionsgröße immer noch auf 20 GB beschränkt. Mit hierarchischen Partitionsschlüsseln entspricht die logische Partition nun dem gesamten Partitionsschlüsselpfad. Wenn Sie beispielsweise nach TenantId -> UserId partitioniert haben, wäre Contoso_Alice
ein Beispiel für eine logische Partition. Mithilfe der Unterpartitionierung können Sie über 20 GB Daten verfügen, bei denen der Partitionsschlüsselwert Contoso_Alice
lautet. Die für die Daten in „Contoso“ zulässige Speichermenge entspricht effektiv 20 GB × Anzahl eindeutiger UserIds für den Mandanten „Contoso“.
Gibt es Änderungen an den Speichergrenzwerten und den Grenzwerten für RU/s für physische Partitionen?
Nein. Wie aktuell in Azure Cosmos DB kann eine physische Partition 50 GB Speicher enthalten und bis zu 10.000 RU/s bedienen. Wenn jedoch Daten für ein bestimmtes Partitionsschlüsselpräfix (z. B. TenantId) in mehreren physischen Partitionen enthalten sind, hat eine Unterpartitionierung mit hierarchischen Schlüsseln zur Folge, dass die gesamten RU/s für eine einzelne TenantId 10.000 RU/s überschreiten können.
Was geschieht, wenn ich bei einer Abfrage nur einen Partitionsschlüssel in der „Mitte“ des Pfads angebe?
Ihre Abfrage ist partitionsübergreifend. Wenn Sie beispielsweise nach TenantId – > UserId partitionieren und in der Abfrage nur die UserId bereitstellen, wird diese Abfrage auf alle physischen Partitionen aufgefächert.
Es gibt zwei Optionen für eine effizient weitergeleitete Abfrage mit dem Beispiel „TenantId > UserId“:
- Angeben der TenantId: Abfragen werden an alle physischen Partitionen weitergeleitet, in denen die TenantId-Daten enthalten sind.
- Angeben der TenantId und der UserId: Abfragen werden an die einzelne physische Partition weitergeleitet, in der die TenantId und die spezifische UserId enthalten sind.
Muss ich eine neue Eigenschaft in meinen Dokumenten erstellen, um dieses Feature verwenden zu können?
Nein. Geben Sie die Hierarchie der Partitionsschlüsselpfade an, die Sie bei der Containererstellung verwenden möchten. Wenn Sie beispielsweise von TenantId > UserId partitionieren, müssen Sie keine neue Eigenschaft mit diesen verketteten Werten erstellen. Stellen Sie sicher, dass jedes Dokument über die Eigenschaft „TenantId“ und die Eigenschaft „UserId“ verfügt. Weitere Informationen finden Sie unter Codebeispiele für die Unterpartitionierung.
Ich habe eine Hierarchie von Schlüsseln erstellt, die nicht viel Kardinalität hat. Wie sollte ich vorgehen?
Möglicherweise befinden Sie sich in einem Szenario, in dem Ihre Workload nur einige physische Partitionen von all Ihren Partitionen erreicht. Dieses Szenario kann bedeuten, dass mindestens eine Ebene Ihres hierarchischen Partitionsschlüssels eine geringe Kardinalität aufweist. Zur Problembehandlung des Szenarios wird immer empfohlen, Ihren hierarchischen Partitionsschlüssel neu zu erstellen, und Sie können DTS verwenden, um Ihren Schlüssel zu ändern und die Daten Ihres Containers in Ihren neuen Container zu kopieren. Wenn dieser Schritt nicht möglich ist, gibt es zwei empfohlene Problemumgehungen, um eine einheitliche Verteilung Ihrer Daten sicherzustellen.
- Ansatz 1:
- Sie können einen Container mit weniger als 10.000 RUs erstellen, um sicherzustellen, dass Sie nur über eine physische Partition verfügen.
- Erfassen Sie etwa 5 GB Daten, um sicherzustellen, dass es keine Partitionsaufteilungen gibt.
- Skalieren Sie auf Ihre gewünschten RUs hoch, erfassen Sie weiterhin Daten, und Azure Cosmos DB stellt sicher, dass Ihre physischen Partitionen einheitlich aufgeteilt werden.
- Ansatz 2:
- Sie können Ihr Gesamtangebot auf eine höhere Anzahl von RUs erhöhen und alle Ihre Daten erfassen.
- Führen Sie dann die Partitionszusammenführung durch, um sicherzustellen, dass die Partitionen Ihrer Workload nicht fragmentiert sind und eine gleichmäßige Verteilung aufweisen.
- Sobald die Zusammenführung abgeschlossen ist, können Sie wieder auf die ursprüngliche gewünschte Anzahl von RUs herunterskalieren.
Um besser steuern zu können, wie viel Durchsatz jede Partition hat, können Sie auch die Durchsatzumverteilung verwenden, um sicherzustellen, dass die Partitionen, die Ihre Workload verwendet, über genügend RUs für Ihre zukünftigen Anforderungen verfügen.
Nächste Schritte
- Weitere Informationen finden Sie unter Hierarchische Partitionsschlüssel.