azure azure-cosmosdb

azure cosmos db partition key



Azure Cosmos DB-Entendiendo la clave de particiĆ³n (5)

Estoy configurando nuestra primera base de datos de Azure Cosmos: importaré a la primera colección, los datos de una tabla en una de nuestras bases de datos de SQL Server. Al configurar la colección, tengo problemas para entender el significado y los requisitos de la clave de partición, que debo nombrar específicamente al configurar esta colección inicial.

He leído la documentación aquí: ( https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-partition-data ) y todavía no estoy seguro de cómo proceder con la convención de nomenclatura de esta clave de partición .

¿Alguien me puede ayudar a entender cómo debería pensar al nombrar esta clave de partición? Vea la captura de pantalla a continuación para el campo que estoy tratando de completar.

En caso de que ayude, la tabla que estoy importando consta de 7 columnas, incluida una clave principal única, una columna de texto no estructurado, una columna de URL y varios otros identificadores secundarios para la URL de ese registro. No estoy seguro de si alguna de esa información tiene alguna relación con la forma en que debo nombrar mi clave de partición.

EDITAR: He agregado una captura de pantalla de varios registros de la tabla desde la cual estoy importando, por solicitud de @Porschiey.


Cada partición en una tabla puede almacenar hasta 10 GB (y una sola tabla puede almacenar tantos tipos de esquema de documento como desee). Tiene que elegir su clave de partición, aunque todos los documentos que se almacenan en esa clave (por lo tanto, entran en esa partición) están por debajo de ese límite de 10 GB.

En este momento también estoy pensando en esto: ¿la clave de partición debería ser un rango de fechas de algún tipo? En ese caso, realmente dependería de la cantidad de datos que se almacenan en un período de tiempo.


CosmosDB se puede utilizar para almacenar cualquier límite de datos. Cómo funciona en el back-end es usar la clave de partición. ¿Es lo mismo que la clave principal? - NO

Clave principal: identifica de forma exclusiva los datos La clave de partición ayuda a fragmentar los datos (por ejemplo, una partición para la ciudad de Nueva York cuando ciudad es una clave de partición).

Las particiones tienen un límite de 10 GB y cuanto mejor distribuyamos los datos en las particiones, más podremos usarlos. Aunque eventualmente necesitará más conexiones para obtener datos de todas las particiones. Ejemplo: obtener datos de la misma partición en una consulta siempre será más rápido que obtener datos de varias particiones.


La clave de partición actúa como una partición lógica.

Ahora, ¿qué es una partición lógica, puede preguntar? Una partición lógica puede variar según sus requisitos; Supongamos que tiene datos que se pueden clasificar en función de sus clientes, ya que este "Id" del cliente actuará como una partición lógica y la información para los usuarios se colocará de acuerdo con su Id. del cliente.

¿Qué efecto tiene esto en la consulta?

Al consultar, pondría su clave de partición como opciones de alimentación y no la incluirá en su filtro.

Por ejemplo: si su consulta era

SELECT * FROM T WHERE T.CustomerId= ''CustomerId'';

Será ahora

var options = new FeedOptions{ PartitionKey = new PartitionKey(CustomerId)}; var query = _client.CreateDocumentQuery(CollectionUri,$"SELECT * FROM T",options).AsDocumentQuery();



Sinceramente, el video aquí * fue una gran ayuda para comprender la partición en CosmosDb.

Pero, en pocas palabras: PartitionKey es una propiedad que existirá en cada objeto que se utiliza mejor para agrupar objetos similares.

Los buenos ejemplos incluyen la ubicación (como la ciudad), la identificación del cliente, el equipo y más. Naturalmente, depende en gran medida de su solución; así que tal vez si publicaras lo que parece tu objeto podríamos recomendar una buena clave de partición.

EDITAR: debe tenerse en cuenta que PartitionKey no es necesario para colecciones de menos de 10 GB. (gracias David Makogon)

* El video que se usa para vivir en esta página de documentos de MS titulada "Particionamiento y escala horizontal en la base de datos de Azure Cosmos", pero desde entonces se ha eliminado. Se ha proporcionado un enlace directo, arriba.