Introducción
Azure Cosmos DB es un servicio de base de datos distribuida globalmente que está diseñado para ofrecer escalabilidad y rendimiento de alta disponibilidad. Es una base de datos NoSQL que admite múltiples modelos de datos, incluyendo documentos, gráficos, columnas anchas y claves-valor.
Características Clave de Azure Cosmos DB
- Distribución Global: Permite replicar datos en múltiples regiones de Azure.
- Escalabilidad Elástica: Escala automáticamente el rendimiento y el almacenamiento.
- Latencia Baja: Ofrece latencias de lectura y escritura de menos de 10 milisegundos.
- Modelos de Consistencia: Proporciona cinco niveles de consistencia: Fuerte, Sesgo, Sesgo limitado, Sesgo eventual y Sesgo eventual con prefijo.
- APIs Múltiples: Compatible con APIs de SQL, MongoDB, Cassandra, Gremlin y Table.
Configuración Inicial
Crear una Cuenta de Azure Cosmos DB
-
Acceder al Portal de Azure:
- Inicia sesión en el Portal de Azure.
-
Crear un Recurso:
- Haz clic en "Crear un recurso" en la esquina superior izquierda.
- Busca "Azure Cosmos DB" y selecciona "Azure Cosmos DB".
-
Configurar la Cuenta:
- Selecciona la API que deseas usar (por ejemplo, SQL, MongoDB, Cassandra, Gremlin, Table).
- Completa los detalles de la cuenta, como el nombre, la suscripción, el grupo de recursos y la ubicación.
-
Revisar y Crear:
- Revisa la configuración y haz clic en "Crear".
Ejemplo de Creación de una Cuenta de Cosmos DB con API SQL
# Este ejemplo usa la biblioteca Azure SDK para Python from azure.cosmos import CosmosClient, exceptions, PartitionKey # Configuración de la cuenta y la clave endpoint = "https://<your-account-name>.documents.azure.com:443/" key = '<your-account-key>' # Crear un cliente de Cosmos DB client = CosmosClient(endpoint, key) # Crear una base de datos database_name = 'AzureSampleFamilyDatabase' database = client.create_database_if_not_exists(id=database_name) # Crear un contenedor container_name = 'FamilyContainer' container = database.create_container_if_not_exists( id=container_name, partition_key=PartitionKey(path="/lastName"), offer_throughput=400 )
Modelos de Consistencia
Azure Cosmos DB ofrece cinco niveles de consistencia para equilibrar la latencia y la disponibilidad:
Nivel de Consistencia | Descripción |
---|---|
Fuerte | Garantiza que las lecturas siempre devuelvan la versión más reciente de un elemento. |
Sesgo | Las lecturas pueden retrasarse hasta un número especificado de versiones. |
Sesgo limitado | Las lecturas pueden retrasarse hasta un intervalo de tiempo especificado. |
Sesgo eventual | Las lecturas pueden devolver versiones antiguas, pero eventualmente serán consistentes. |
Sesgo eventual con prefijo | Las lecturas nunca verán versiones fuera de orden. |
Operaciones Básicas
Crear un Documento
# Crear un documento JSON family_item = { 'id': 'AndersenFamily', 'lastName': 'Andersen', 'parents': [ {'firstName': 'Thomas'}, {'firstName': 'Mary Kay'} ], 'children': [ {'firstName': 'Henriette Thaulow', 'gender': 'female', 'grade': 5} ], 'address': {'state': 'WA', 'county': 'King', 'city': 'Seattle'} } # Insertar el documento en el contenedor container.create_item(body=family_item)
Leer un Documento
# Leer un documento por su ID y clave de partición response = container.read_item(item='AndersenFamily', partition_key='Andersen') print(response)
Actualizar un Documento
# Actualizar un documento existente family_item['address']['city'] = 'Redmond' container.upsert_item(body=family_item)
Eliminar un Documento
# Eliminar un documento por su ID y clave de partición container.delete_item(item='AndersenFamily', partition_key='Andersen')
Ejercicios Prácticos
Ejercicio 1: Crear y Leer Documentos
-
Crear un Documento:
- Crea un documento JSON con información de una familia diferente.
- Inserta el documento en el contenedor.
-
Leer el Documento:
- Usa el ID y la clave de partición para leer el documento que acabas de crear.
Ejercicio 2: Actualizar y Eliminar Documentos
-
Actualizar un Documento:
- Actualiza la dirección de la familia en el documento que creaste en el Ejercicio 1.
-
Eliminar un Documento:
- Elimina el documento que creaste y actualizaste.
Soluciones
Solución al Ejercicio 1
# Crear un nuevo documento new_family_item = { 'id': 'WakefieldFamily', 'lastName': 'Wakefield', 'parents': [ {'firstName': 'Robin'}, {'firstName': 'Ben'} ], 'children': [ {'firstName': 'Jesse', 'gender': 'male', 'grade': 8}, {'firstName': 'Lisa', 'gender': 'female', 'grade': 5} ], 'address': {'state': 'NY', 'county': 'Westchester', 'city': 'Mount Kisco'} } # Insertar el nuevo documento container.create_item(body=new_family_item) # Leer el documento response = container.read_item(item='WakefieldFamily', partition_key='Wakefield') print(response)
Solución al Ejercicio 2
# Actualizar el documento new_family_item['address']['city'] = 'New York' container.upsert_item(body=new_family_item) # Eliminar el documento container.delete_item(item='WakefieldFamily', partition_key='Wakefield')
Conclusión
En esta sección, hemos cubierto los conceptos básicos de Azure Cosmos DB, incluyendo su configuración inicial, modelos de consistencia y operaciones CRUD básicas. Con estos conocimientos, estás preparado para explorar más a fondo las capacidades avanzadas de Azure Cosmos DB y cómo puede integrarse en tus aplicaciones distribuidas globalmente. En el próximo módulo, profundizaremos en otros servicios de bases de datos de Azure, como Azure SQL Database.
Curso de Azure
Módulo 1: Introducción a Azure
- ¿Qué es Azure?
- Configuración de la cuenta de Azure
- Descripción general del portal de Azure
- Administrador de recursos de Azure
Módulo 2: Servicios principales de Azure
- Máquinas virtuales de Azure
- Servicios de aplicaciones de Azure
- Almacenamiento de Azure
- Redes de Azure
Módulo 3: Bases de datos de Azure
- Base de datos SQL de Azure
- Azure Cosmos DB
- Base de datos de Azure para MySQL
- Base de datos de Azure para PostgreSQL
Módulo 4: Seguridad en Azure
- Gestión de identidad y acceso de Azure
- Centro de seguridad de Azure
- Azure Key Vault
- Protección DDoS de Azure
Módulo 5: Azure DevOps
Módulo 6: Servicios avanzados de Azure
- Servicio de Kubernetes de Azure (AKS)
- Funciones de Azure
- Aplicaciones lógicas de Azure
- Servicios cognitivos de Azure
Módulo 7: Monitoreo y gestión
- Monitor de Azure
- Análisis de registros de Azure
- Información de aplicaciones de Azure
- Automatización de Azure