Bases de datos, contenedores y elementos de Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB es una plataforma como servicio totalmente administrada (PaaS). Para empezar a usar Azure Cosmos DB, cree una cuenta de Azure Cosmos DB en un grupo de recursos de Azure en su suscripción. A continuación, cree bases de datos y contenedores dentro de la cuenta.

La cuenta de Azure Cosmos DB contiene un nombre único del sistema de nombres de dominio (DNS). Puede administrar el nombre DNS mediante muchas herramientas, entre las que se incluyen:

  • Azure portal
  • Plantillas del Administrador de recursos de Azure
  • Plantillas de Bicep
  • Azure PowerShell
  • Azure CLI
  • SDK de administración de Azure
  • API REST de Azure

Para replicar los datos y el rendimiento entre varias regiones de Azure, puede agregar y quitar regiones de Azure en su cuenta en cualquier momento. Puede configurar la cuenta para que tenga una única región de escritura o varias. Para más información, consulte Administración de una cuenta de Azure Cosmos DB mediante Azure Portal. También puede configurar el nivel de coherencia predeterminado en una cuenta.

Elementos de una cuenta de Azure Cosmos DB

Actualmente, puede crear un máximo de 50 cuentas de Azure Cosmos DB en una suscripción a Azure. Puede aumentar este límite realizando una solicitud de soporte técnico.

Puede administrar una cantidad prácticamente ilimitada de datos y rendimiento aprovisionado mediante una sola cuenta de Azure Cosmos DB. Para administrar los datos y el rendimiento aprovisionado, cree una o varias bases de datos dentro de la cuenta y, a continuación, cree uno o varios contenedores para almacenar los datos.

En la imagen siguiente se muestra la jerarquía de elementos de una cuenta de Azure Cosmos DB.

Diagrama de la jerarquía de una cuenta de Azure Cosmos DB, incluida una cuenta, una base de datos y un contenedor.

En la imagen siguiente se muestra la jerarquía de entidades de una cuenta de Azure Cosmos DB.

Diagrama de la relación entre un contenedor y los elementos, incluidas las entidades del mismo nivel, como procedimientos almacenados, funciones definidas por el usuario y desencadenadores.

Bases de datos de Azure Cosmos DB

En Azure Cosmos DB, una base de datos es similar a un espacio de nombres. Una base de datos es simplemente un grupo de contenedores. En la siguiente tabla se muestra la forma de asignar una base de datos a varias entidades específicas de API:

Entidad de Azure Cosmos DB API para NoSQL API para Apache Cassandra API para MongoDB API para Apache Gremlin API para Table
Base de datos de Azure Cosmos DB Base de datos Espacio de claves Base de datos Base de datos No aplicable

Nota:

Con API para cuentas de tabla, las tablas de Azure Cosmos DB se crean en el nivel de cuenta para mantener la compatibilidad con Azure Table Storage.

Contenedores de Azure Cosmos DB

Un contenedor de Azure Cosmos DB es donde se almacenan los datos. A diferencia de la mayoría de las bases de datos relacionales, que se escalan verticalmente con tamaños más grandes de máquinas virtuales, Azure Cosmos DB se escala horizontalmente.

Los datos se almacenan en uno o varios servidores denominadosparticiones. Para aumentar las particiones, aumenta el rendimiento o aumenta automáticamente a medida que aumenta el almacenamiento. Esta relación proporciona una cantidad prácticamente ilimitada de rendimiento y almacenamiento para un contenedor.

Al crear un contenedor, debe proporcionar una clave de partición. La clave de partición es una propiedad que se selecciona de los elementos para ayudar a Azure Cosmos DB a distribuir los datos de forma eficaz entre particiones. Azure Cosmos DB usa el valor de esta propiedad para enrutar los datos a la partición adecuada que se va a escribir, actualizar o eliminar. También puede usar la clave de partición en la cláusula WHERE en las consultas para una recuperación de datos eficaz.

El mecanismo de almacenamiento subyacente para los datos de Azure Cosmos DB es llamada partición física. Las particiones físicas pueden tener una cantidad de rendimiento de hasta 10 000 unidades de solicitud por segundo y pueden almacenar hasta 50 GB de datos. Azure Cosmos DB abstrae este concepto de creación de particiones con una partición lógica, que puede almacenar hasta 20 GB de datos.

Las particiones lógicas permiten al servicio proporcionar mayor elasticidad y una mejor administración de los datos en las particiones físicas subyacentes a medida que se agregan más particiones. Para más información sobre la creación de particiones y las claves de partición, consulte Creación de particiones y escalado horizontal en Azure Cosmos DB.

Al crear un contenedor, debe configurar el rendimiento de uno de los siguientes modos:

  • Rendimiento dedicado: el rendimiento en un contenedor se reserva exclusivamente para ese contenedor. Hay dos tipos de rendimiento dedicado: estándar y escalabilidad automática. Para más información, consulte Aprovisionamiento del rendimiento estándar (manual) en un contenedor de Azure Cosmos DB.

  • Rendimiento compartido: el rendimiento se especifica en el nivel de base de datos y, a continuación, se comparte con hasta 25 contenedores dentro de la base de datos. El uso compartido del rendimiento excluye los contenedores configurados con su propio rendimiento dedicado.

    El rendimiento compartido puede ser una buena opción cuando todos los contenedores de la base de datos tienen solicitudes y necesidades de almacenamiento similares, o cuando no necesita un rendimiento predecible en los datos. Para más información, consulte Aprovisionamiento del rendimiento estándar (manual) en una base de datos de Azure Cosmos DB.

Nota:

No se puede cambiar entre el rendimiento dedicado y compartido. Los contenedores que creó en una base de datos de rendimiento compartido no se pueden actualizar para tener un rendimiento dedicado. Para cambiar un contenedor de un rendimiento compartido a dedicado, debe crear un nuevo contenedor y copiar datos en él. La característica copia del contenedor en Azure Cosmos DB puede facilitar este proceso.

Los contenedores son independientes del esquema. Los elementos de un contenedor pueden tener esquemas arbitrarios o entidades diferentes, siempre y cuando compartan la misma clave de partición. Por ejemplo, un contenedor puede contener un elemento o documento con información de perfil de cliente, junto con uno o varios elementos o documentos que representan todos los pedidos de ventas del cliente. Puede colocar información similar para todos los clientes en el mismo contenedor.

De manera predeterminada, todos los datos que agregue a un contenedor se indexan automáticamente sin necesidad de indexación explícita. Puede personalizar la indexación de un contenedor configurando su directiva de indexación.

Para evitar afectar al rendimiento, puede establecer una período de vida (TTL) en los elementos seleccionados de un contenedor o en todo el contenedor para eliminar esos elementos automáticamente en segundo plano con un rendimiento no utilizados. Sin embargo, aunque no se eliminen los datos expirados, no aparece en ninguna operación de lectura. Para más información, consulte Configuración del período de vida en Azure Cosmos DB.

Azure Cosmos DB proporciona una funcionalidad integrada para la captura de datos modificados denominada fuente de cambios. Puede usarlo para suscribirse a todos los cambios en los datos del contenedor.

Puede registrar procedimientos almacenados, desencadenadores, funciones que define el usuario (UDF) y procedimientos de combinación con su contenedor.

Cada documento dentro de un contenedor debe tener una propiedad id única dentro del valor de propiedad de una clave lógica para ese contenedor. Puede usar esta combinación de propiedades para proporcionar una restricción única dentro de un contenedor, sin tener que definir explícitamente una.

También puede especificar un Restricción de clave única en el contenedor de Azure Cosmos DB que use una o varias propiedades. Una restricción de clave única garantiza la unicidad de uno o varios valores por clave de partición lógica. Si crea un contenedor mediante una directiva de clave única, no puede crear elementos nuevos ni actualizados con valores que dupliquen los valores que especifica la restricción de clave única.

Un contenedor se especializa en entidades específicas de API, como se muestra en la tabla siguiente:

Entidad de Azure Cosmos DB API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Table
Contenedor de Azure Cosmos DB Contenedor Tabla Colección Grafo Tabla

Nota:

Asegúrese de que no cree dos contenedores que tengan el mismo nombre, pero mayúsculas y minúsculas diferentes. Algunas partes de la plataforma Azure no distinguen mayúsculas de minúsculas y este tipo de nomenclatura puede dar lugar a confusión o colisión de datos de diagnóstico y acciones en contenedores.

Propiedades de un contenedor de Azure Cosmos DB

Un contenedor de Azure Cosmos DB tiene un conjunto de propiedades definidas por el sistema. Según la API que use, puede que algunas propiedades no se expongan directamente. En la tabla siguiente se describen las propiedades definidas por el sistema:

Propiedad definida por el sistema Configurable por el sistema o generado por el usuario Propósito API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Table
_rid Generado por el sistema Identificador único de un contenedor. No N.º N.º No
_etag Generado por el sistema Etiqueta de entidad usada para el control de simultaneidad optimista. No N.º N.º No
_ts Generado por el sistema Marca de tiempo actualizada por última vez del contenedor. No N.º N.º No
_self Generado por el sistema URI direccionable del contenedor. No N.º N.º No
id Configurable por el usuario Nombre del contenedor.
indexingPolicy Configurable por el usuario Directiva para compilar el índice para el contenedor. No
TimeToLive Configurable por el usuario Eliminación automática de un elemento de un contenedor después de un período de tiempo establecido. Para obtener más información, consulte período de vida. No N.º No
changeFeedPolicy Configurable por el usuario Directiva para leer los cambios realizados en los elementos de un contenedor. Para más información, consulte Fuente de cambios. No N.º No
uniqueKeyPolicy Configurable por el usuario Directiva para garantizar la unicidad de uno o varios valores en una partición lógica. Para más información, consulte Restricciones de clave únicas. No N.º No
AnalyticalTimeToLive Configurable por el usuario Eliminación automática de un elemento de un contenedor después de un período de tiempo establecido, en el contexto de un almacén analítico. Para obtener más información, consulte Almacén analítico. No No No

Elementos de Azure Cosmos DB

En función de la API que use, las entidades de datos individuales se pueden representar de varias maneras:

Entidad de Azure Cosmos DB API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Table
Elemento de Azure Cosmos DB Elemento Row Documento Nodo o borde Elemento

Propiedades de un elemento

Todos los elementos de Azure Cosmos DB tienen las siguientes propiedades definidas por el sistema. Según la API que use, puede que algunas no se expongan directamente.

Propiedad definida por el sistema Generado por el sistema o definido por el usuario Propósito API para NoSQL API para Cassandra DB API para MongoDB API para Gremlin API para Table
_rid Generado por el sistema Identificador único del elemento No N.º N.º No
_etag Generado por el sistema Etiqueta de entidad que se usa para el control de simultaneidad optimista No N.º N.º No
_ts Generado por el sistema Marca de tiempo de la última actualización del elemento No N.º N.º No
_self Generado por el sistema URI direccionable del elemento No N.º N.º No
id Es posible usar el Nombre único definido por el usuario en una partición lógica
Propiedades arbitrarias que define el usuario Definido por el usuario Propiedades definidas por el usuario en la representación nativa de API (incluido JSON, BSON y CQL)

Nota

La unicidad de la propiedad id se aplica dentro de cada partición lógica. Varios documentos pueden tener el mismo valor de propiedad id con valores de clave de partición diferentes.

Operaciones en elementos

Los elementos de Azure Cosmos DB admiten las siguientes operaciones. Puede usar cualquiera de las API de Azure Cosmos DB para realizar las operaciones.

Operación API para NoSQL API para Cassandra API para MongoDB API para Gremlin API para Table
Insertar, reemplazar, eliminar, upsert, leer