Weitere Informationen finden Sie unter Die Leistung mithilfe von Speicherpartitionen beim Zugriff auf Entitätendaten verbessern
Ein optionaler Partitionsschlüssel kann angegeben werden, um eine logische Partition für nicht relationale benutzerdefinierte Entitätsdaten zu erstellen, die in NoSql-Tabellen des heterogenen Speichers (Azure Cosmos DB) gespeichert sind. Ein Partitionsschlüssel verbessert die Anwendungsleistung für große Datenmengen (Millionen von Datensätzen), indem Datenelemente in logischen Mengen innerhalb einer Tabelle gruppiert werden. Beispielsweise kann eine Tabelle mit Produkten logisch in Produktkategorien gruppiert werden, um das Abrufen aller Artikel innerhalb einer Produktkategorie zu verbessern. Der Partitionsschlüsselwert kann eine Zeichenfolge oder ein numerischer Typ sein. Nach der Angabe kann der Partitionsschlüsselwert nicht mehr geändert werden.
Wenn kein Partitionsschlüssel angegeben ist, ist die Tabelle die logische Grenze, und das Abrufen eines einzelnen Elements oder einer Reihe logisch verwandter Elemente aus einem großen Dataset ist nicht so leistungsfähig wie bei Verwendung eines Partitionsschlüssels.
Erstellen und Zugreifen auf eine Partition
Ein eindeutiger neuer Partitionsschlüsselwert muss verwendet werden, um eine neue logische Partition zu erstellen. Der gleiche Wert muss verwendet werden, um zusätzliche Elemente in derselben logischen Partition zu erstellen und Elemente abzurufen, zu aktualisieren oder zu löschen, die zu dieser logischen Partition gehören.
public void Run(CrmServiceClient client)
{
// Create
Entity entity = new Entity("new_msdyn_customer");
entity["new_firstname"] = "Monica";
entity["new_lastname"] = "Thompson";
// First use of the partition ID value during an entity Create operation
// also creates the partition where that entity record is stored.
entity["partitionid"] = "CustomerPartition";
Guid id = client.Create(entity);
// Update
UpdateRequest updateRequest = new UpdateRequest();
entity = new Entity("new_msdyn_customer", id);
entity["new_firstname"] = "Cora";
//entity["new_lastname"] = "Thomas";
entity["partitionid"] = "CustomerPartition";
updateRequest.Target = entity;
var updateResponse = (UpdateResponse)client.Execute(updateRequest);
// Retrieve
RetrieveRequest request = new RetrieveRequest();
request.ColumnSet = new ColumnSet("new_firstname");
request.Target = new EntityReference("new_msdyn_customer", id);
request["partitionId"] = "CustomerPartition";
var response = (RetrieveResponse)client.Execute(request);
// RetrieveMultiple
RetrieveMultipleRequest retreiveMultipleRequest = new RetrieveMultipleRequest();
retreiveMultipleRequest.Query = new QueryExpression()
{
EntityName = "new_msdyn_customer",
ColumnSet = new ColumnSet("new_firstname")
};
retreiveMultipleRequest["partitionId"] = "CustomerPartition";
var retrieveResponse = (RetrieveMultipleResponse)client.Execute(retreiveMultipleRequest);
// Update and insert
UpsertRequest upsertRequest = new UpsertRequest();
entity = new Entity("new_msdyn_customer", id);
entity["new_firstname"] = "Andre";
entity["new_lastname"] = "Lawson";
entity["partitionid"] = "CustomerPartition";
upsertRequest.Target = entity;
var upsertResponse = (UpsertResponse)client.Execute(upsertRequest);
// Delete
DeleteRequest deleteRequest = new DeleteRequest();
deleteRequest.Target = new EntityReference("new_msdyn_customer", id);
deleteRequest["partitionId"] = "CustomerPartition";
var deleteResponse = (DeleteResponse)client.Execute(deleteRequest);
}
Weitere Informationen
Hier finden Sie einige weitere Details zum Partitionsschlüssel und zur Partitionsverwaltung.
- Der Schlüsselwert muss in der Umgebung eindeutig sein.
- Eine Partition ist auf 20 GB Daten begrenzt, und es ist keine Methode verfügbar, um die aktuelle Größe der Partition zu überprüfen.
- Es gibt keine definierte Begrenzung für die Anzahl der Partitionen, die Sie in einer Umgebung zuweisen können.
- Die Partitionszuweisung erfolgt automatisch. Durch Angabe eines eindeutigen Partitionsschlüssels während eines Erstellungsvorgangs wird eine Partition erstellt. Wenn alle Daten von der Partition gelöscht wurden, wird die Partition automatisch gelöscht.
- Es ist keine Methode zum Umbenennen eines Schlüssels verfügbar.
- Derzeit unterstützen nur die Entitätsvorgänge Erstellen, Aktualisieren, Abrufen und Löschen die Speicherpartitionierung.
Siehe auch
Übergeben optionaler Parameter mit einer Anfrage
Erstellen von Entitäten mit dem Organisationsservice
Abrufen einer Entität mithilfe des Organisationsdienstes
Aktualisieren und Löschen von Entitäten mit dem Organisationsservice
Partitionierung und horizontale Skalierung in Azure Cosmos DB