Erstellen von Containern mit großen Partitionsschlüsseln

GILT FÜR: NoSQL

Azure Cosmos DB verwendet hashbasierte Partitionsschemas, um Daten horizontal skalieren zu können. Bei allen Azure Cosmos DB-Containern, die vor dem 3. Mai 2019 erstellt wurden, kommt eine Hashfunktion zum Einsatz, die den Hash mit Hilfe der ersten 101 Bytes des Partitionsschlüssels ermittelt. Wenn es mehrere Partitionsschlüssel gibt, deren ersten 101 Byte übereinstimmen, werden diese logischen Partitionen vom Dienst als dieselbe logische Partition angesehen. Dies kann zu Problemen führen, z. B. dass das Partitionskontingent falsch ist, eindeutige Indizes fälschlicherweise über die Partitionsschlüssel angewendet werden und eine ungleiche Verteilung des Speichers vor sich geht. Zur Behebung dieses Problems werden große Partitionsschlüssel eingeführt. Azure Cosmos DB unterstützt jetzt große Partitionsschlüssel mit einer Größe von bis zu 2 KB.

Große Partitionsschlüssel werden durch eine Funktionalität einer verbesserten Version der Hashfunktion unterstützt, durch die ein eindeutiger Hash für große Partitionsschlüssel mit einer Größe von bis zu 2 KB generiert werden kann. Als bewährte Methode wird immer empfohlen, Ihren Container mit Unterstützung für große Partitionsschlüssel zu konfigurieren, es sei denn, Sie benötigen Unterstützung für ein älteres Azure Cosmos DB SDK oder eine Anwendung, die diese Funktion nicht unterstützt.

Erstellen eines großen Partitionsschlüssels (Azure-Portal)

Aktivieren Sie beim Erstellen eines neuen Containers über das Azure-Portal die Option Mein Partitionsschlüssel ist größer als 101 Byte, um einen großen Partitionsschlüssel zu erstellen. Deaktivieren Sie das Kontrollkästchen, wenn Sie keine großen Partitionsschlüssel benötigen oder wenn Sie Anwendungen verwenden, die mit SDK-Versionen vor 1.18 ausgeführt werden.

Erstellen von großen Partitionsschlüsseln über das Azure-Portal

Erstellen eines großen Partitionsschlüssels (PowerShell)

Informationen zum Erstellen eines Containers mit Unterstützung für große Partitionsschlüssel finden Sie unter

Erstellen eines großen Partitionsschlüssels (.NET SDK)

Wenn Sie mithilfe des .NET SDK einen Container mit einem großen Partitionsschlüssel erstellen möchten, geben Sie die Eigenschaft PartitionKeyDefinitionVersion.V2 an. Im folgenden Beispiel wird veranschaulicht, wie Sie die Versionseigenschaft im Objekt „PartitionKeyDefinition“ angeben und auf „PartitionKeyDefinitionVersion.V2“ festlegen:

Hinweis

Standardmäßig unterstützen alle mit dem .NET SDK V2 erstellten Container keine großen Partitionsschlüssel. Standardmäßig unterstützen alle mit dem .NET SDK V3 erstellten Container keine großen Partitionsschlüssel.

await database.CreateContainerAsync(
    new ContainerProperties(collectionName, $"/longpartitionkey")
    {
        PartitionKeyDefinitionVersion = PartitionKeyDefinitionVersion.V2,
    })

Unterstützte SDK-Versionen

Die Schlüssel für große Partitionen werden mit den folgenden Mindestversionen von SDKs unterstützt:

SDK-Typ Mindestversion
.NET 1.18
Java sync 2.4.0
Java Async 2.5.0
REST-API Version höher als 2017-05-03 unter Verwendung des Anforderungsheaders x-ms-version.
Resource Manager-Vorlage Version 2 durch Verwendung der "version":2-Eigenschaft im partitionKey-Objekt.

Derzeit können Sie in Power BI und Azure Logic Apps keine Container mit großem Partitionsschlüssel verwenden. Sie können Container ohne große Partitionsschlüssel in diesen Anwendungen verwenden.

Nächste Schritte