Tema 3 de 4
El modelo relacional a veces es demasiado rígido o necesita mucho ajuste para rendir. Azure Cosmos DB es la base de datos NoSQL de Azure, pensada para escala global y latencia baja. El examen pregunta sus casos de uso, los niveles de coherencia y qué son las unidades de solicitud.
Contenido
Un servicio de base de datos NoSQL totalmente gestionado (PaaS), muy escalable, para datos no relacionales.
Cuenta: El recurso de Azure de nivel superior. Una cuenta gestiona una cantidad ilimitada de datos y de rendimiento aprovisionado.
Base de datos: Un espacio de nombres lógico que agrupa contenedores relacionados.
Contenedor: La unidad principal de almacenamiento y escalado. Aquí se configuran la clave de partición, el rendimiento, la directiva de indexación y un período de vida (TTL) opcional.
Elementos: Las entidades de datos. Según la API se llaman documentos, filas, nodos o aristas.
Clave de partición
Propiedad que eliges para repartir los datos en particiones lógicas, de hasta 20 GB cada una. Una buena clave tiene muchos valores distintos y reparte los datos de forma uniforme, para mantener equilibrado el rendimiento.
Indexación automática
Cosmos DB crea y mantiene índices sobre todas las propiedades por defecto. No hace falta definir esquema ni gestionar índices a mano.
Se pueden añadir regiones de Azure a la cuenta en cualquier momento y el servicio replica los datos automáticamente. Los usuarios leen de la réplica más cercana y, con escrituras en varias regiones, también escriben en la más cercana.
99,999 %
SLA de disponibilidad con escrituras en varias regiones
< 10 ms
Lecturas y escrituras garantizadas en el percentil 99
≤ 4 / 5 ms
Latencia media típica de lectura / escritura
Con réplicas en varias regiones hay que decidir cuán coherentes deben ser entre sí. Cosmos DB ofrece cinco niveles, de más fuerte a más débil:
| Nivel | Garantía |
|---|---|
| Strong | Cada lectura refleja la escritura más reciente. |
| Bounded staleness | Las lecturas van por detrás de las escrituras en un intervalo configurable (tiempo o número de versiones). |
| Session | Coherencia garantizada dentro de la sesión de un cliente. Es el nivel más usado. |
| Consistent prefix | Nunca se ven escrituras desordenadas, pero los datos pueden estar desactualizados. |
| Eventual | Las réplicas convergen con el tiempo: la garantía más débil y la mayor disponibilidad. |
El equilibrio
Cuanto más fuerte la coherencia, más garantías sobre lo que se lee; cuanto más débil, más disponibilidad. Session es el nivel más usado tanto en aplicaciones de una región como distribuidas globalmente.
Cosmos DB mide la capacidad en unidades de solicitud por segundo (RU/s). Una RU es aproximadamente el coste de leer un elemento de 1 KB por su identificador y su clave de partición. Cada operación (lecturas, escrituras, consultas, eliminaciones) consume RU, así que es una única métrica para rendimiento y coste.
Dedicado
Rendimiento aprovisionado reservado para un solo contenedor.
Compartido
Rendimiento aprovisionado a nivel de base de datos, compartido entre hasta 25 contenedores.
Sin servidor
Sin aprovisionar nada: pagas las RU que consumen tus solicitudes. Ideal para tráfico intermitente. Limitado a una sola región.
La opción de escalado automático permite fijar un máximo de RU/s y Cosmos DB ajusta la capacidad dentro de ese rango según la demanda. Para distribución en varias regiones hay que usar rendimiento aprovisionado, no sin servidor.
IoT y telemetría
Ingesta rápida de datos de dispositivos a alta frecuencia, disponibles casi en tiempo real.
Juegos
Perfiles de jugadores, clasificaciones y estadísticas con lecturas y escrituras de baja latencia.
Comercio y retail
Catálogos de productos, carritos y flujos de pedidos a cualquier escala.
Apps web y móviles
Experiencias personalizadas, funciones sociales e integraciones con terceros.
No es buena opción
Si la aplicación depende de uniones complejas entre varias tablas, encaja mejor Azure SQL Database. Para análisis a gran escala, Microsoft Fabric.
| Situación | Respuesta | Por qué |
|---|---|---|
| Datos de dispositivos IoT a alta frecuencia, disponibles casi en tiempo real | Azure Cosmos DB | Ingesta rápida y baja latencia. |
| Perfiles y marcadores de un juego con lecturas y escrituras de baja latencia | Azure Cosmos DB | Caso de uso típico de gaming. |
| Usuarios en varios continentes que leen y escriben en la región más cercana | Escrituras en varias regiones | Latencia baja estén donde estén. |
| Cada lectura debe reflejar la escritura más reciente | Coherencia Strong | La garantía más fuerte. |
| Coherencia garantizada dentro de la sesión de cada usuario | Coherencia Session | La más usada. |
| Tráfico intermitente e impredecible, pago solo por lo consumido | Modo sin servidor | Sin rendimiento aprovisionado. |
| Una aplicación que depende de uniones complejas entre muchas tablas | Azure SQL Database | Cosmos DB no es la mejor opción. |
| Repartir el rendimiento de una base entre varios contenedores | Rendimiento compartido | A nivel de base de datos, hasta 25 contenedores. |
❓ ¿Todos los elementos de un contenedor de Cosmos DB deben tener el mismo esquema?
No. Cosmos DB es independiente del esquema.
❓ ¿Hay que crear índices a mano en Cosmos DB?
No. Indexa automáticamente todas las propiedades por defecto.
❓ ¿Cuál es el nivel de coherencia más usado?
Session.
❓ ¿Qué nivel garantiza que cada lectura refleja la última escritura?
Strong.
❓ ¿Una cuenta sin servidor puede replicarse en varias regiones?
No. El modo sin servidor está limitado a una región; para varias regiones se usa rendimiento aprovisionado.
❓ ¿Qué representa aproximadamente una unidad de solicitud (RU)?
El coste de leer un elemento de 1 KB por su identificador y su clave de partición.
❓ ¿Cuál es la unidad principal de almacenamiento y escalado?
El contenedor, donde se configuran la clave de partición, el rendimiento y la indexación.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Una aplicación de comercio electrónico con usuarios en Europa, América y Asia necesita que cada usuario lea y escriba en la región más cercana con latencia de milisegundos. ¿Qué configuración de Cosmos DB lo permite?
Preguntas originales, cada una con su explicación.
Empezar un simulacro