Mejorar el rendimiento utilizando particiones de almacenamiento al acceder a datos de la entidad
Se puede especificar una clave de partición opcional para crear una partición lógica para los datos de entidad personalizada no relacionales almacenados en tablas NoSql de almacenamiento heterogéneo de Azure (Azure Cosmos DB). Tener una clave de partición mejora el rendimiento de la aplicación para grandes conjuntos de datos (millones de registros) al agrupar elementos de datos en conjuntos lógicos dentro de una tabla. Por ejemplo, una tabla que contiene productos se puede agrupar lógicamente en categorías de productos para mejorar la recuperación de todos los elementos dentro de una categoría de producto. El valor de la clave de partición puede ser un tipo de cadena o numérico. Una vez especificado, el valor de la clave de partición no se puede cambiar.
Cuando no se especifica una clave de partición, la tabla es el límite lógico y la recuperación de un solo elemento o un conjunto de elementos relacionados lógicamente en un conjunto de datos grande no será tan eficaz como cuando se usa una clave de partición.
Crear y acceder a una partición
Se debe utilizar un valor de clave de partición nuevo y único para crear una nueva partición lógica. Se debe utilizar el mismo valor para crear elementos adicionales en la misma partición lógica y para recuperar, actualizar o eliminar elementos que pertenecen a esa partición lógica.
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);
}
Información adicional
Aquí hay algunos detalles más sobre la clave de partición y la administración de particiones.
- El valor de la clave debe ser único en el entorno.
- Una partición está limitada a 20 GB de datos y no hay ningún método disponible para verificar el tamaño actual de la partición.
- No hay un límite definido para el número de particiones que puede asignar en un entorno.
- La asignación de particiones es automática. La especificación de una clave de partición única durante una operación Create crea una partición. Cuando se han eliminado todos los datos de la partición, la partición se elimina automáticamente.
- No hay ningún método disponible para cambiar el nombre de una clave.
- Actualmente, solo las operaciones de entidad Create, Update, Retrieve y Delete admiten la partición de almacenamiento.
Vea también
Pasar parámetros opcionales con una solicitud
Crear entidades con el servicio de la organización
Recuperar una entidad usando un servicio de organización
Actualizar y eliminar entidades con el servicio de la organización
Realizar una partición y ampliación horizontal en Azure Cosmos DB