Brains4Cloud
ESEN
Practicar

Tema 4 de 4

D3 · Datos no relacionales en Azure

API de Azure Cosmos DB

Cosmos DB no obliga a usar un único modelo de datos ni un único lenguaje de consulta. Ofrece varias API compatibles con herramientas que los desarrolladores ya conocen. El examen da un escenario (una app con MongoDB, un grafo, una tabla clave-valor) y pide la API adecuada.

Al crear una cuenta de Cosmos DB se elige la API. Esa elección decide cómo interactúa la aplicación: qué formato envía, qué lenguaje de consulta usa y con qué bibliotecas de cliente trabaja. Internamente Cosmos DB guarda los datos en su propio formato; la API es una capa de abstracción encima.

La ventaja: portabilidad

Si un equipo ya tiene una aplicación sobre MongoDB o Apache Cassandra, puede apuntarla a Cosmos DB con cambios mínimos y ganar distribución global, rendimiento gestionado y disponibilidad respaldada por SLA.

Las cinco API admitidas son NoSQL, MongoDB, Table, Apache Cassandra y Apache Gremlin. Azure Cosmos DB for PostgreSQL es una oferta aparte en proceso de retirada, no recomendada para proyectos nuevos.

API for NoSQL

Es la API nativa de Cosmos DB. Guarda los datos como documentos JSON y permite consultarlos con una sintaxis parecida a SQL. Antes se llamaba SQL API: si la documentación antigua dice «SQL API», es el mismo servicio.

SELECT *
FROM customers c
WHERE c.id = "joe@litware.com"

-- Resultado: un documento JSON
{
  "id": "joe@litware.com",
  "name": "Joe Jones",
  "address": { "street": "1 Main St.", "city": "Seattle" }
}
  • Microsoft la recomienda para escenarios de gran escala que necesitan SLA del 99,999 %, escalado automático instantáneo y conmutación por error automática entre regiones.
  • Admite Fabric mirroring: replica los datos operativos en Microsoft Fabric sin pipeline ETL, para analizarlos casi en tiempo real sin consumir RU ni afectar a la carga transaccional.

API for MongoDB

Compatible con los controladores y bibliotecas de cliente de MongoDB, así que las aplicaciones existentes se conectan sin cambios importantes. Los datos se guardan en BSON (JSON binario) y se consultan con MQL (MongoDB Query Language), una sintaxis orientada a objetos en la que se llama a métodos sobre colecciones.

db.products.find({id: 123})

-- Resultado
{ "id": 123, "name": "Hammer", "price": 2.99 }

Matiz importante

Encaja cuando el equipo sabe MongoDB y quiere usar sus controladores con el modelo global de Cosmos DB. Para migrar una aplicación MongoDB existente o usar todo MQL, Microsoft recomienda Azure DocumentDB, un servicio aparte compatible con el protocolo de MongoDB.

API for Table

Guarda pares clave-valor en tablas con el mismo modelo de programación que Azure Table Storage. Una app de Table Storage se conecta con cambios mínimos y gana escalabilidad, distribución global e indexación automática de todas las propiedades.

PartitionKeyRowKeyNameEmail
1123Joe Jonesjoe@litware.com
1124Samir Nadoysamir@northwind.com

Cada fila se identifica con PartitionKey + RowKey y se recupera con un punto de conexión de estilo REST, por ejemplo Customers(PartitionKey='1',RowKey='124').

API for Apache Cassandra

Compatible con Apache Cassandra, una base de código abierto con modelo de familia de columnas: las filas no tienen que contener las mismas columnas, a diferencia de una tabla relacional.

SELECT * FROM Employees WHERE ID = 2

Usa CQL (Cassandra Query Language), de sintaxis parecida a SQL. Encaja para migrar una carga de Cassandra a una base gestionada en la nube.

API for Apache Gremlin

Diseñada para datos de grafo: las entidades son vértices (nodos) y las relaciones, aristas. Útil cuando las conexiones importan tanto como los datos: redes sociales, motores de recomendación, detección de fraude y jerarquías organizativas.

g.addV('employee').property('id', '3').property('firstName', 'Alice')
g.V('3').addE('reports to').to(g.V('1'))

g.V().hasLabel('employee').order().by('id')

Gremlin es el lenguaje para recorrer y manipular el grafo: el ejemplo añade una empleada, la conecta con su responsable y luego lista los empleados ordenados.

Cómo elegir la API

APIModelo de datosLenguajeElígela si…
NoSQLDocumentos JSONSintaxis parecida a SQLApp nueva, máxima escala
MongoDBDocumentos BSONMQLEl equipo usa MongoDB
TableClave-valorAPI de Table StorageVienes de Azure Table Storage
CassandraFamilia de columnasCQLVienes de Apache Cassandra
GremlinGrafoGremlinLas relaciones son lo importante

Escenarios de examen

SituaciónAPIPor qué
App nueva con documentos JSON y consultas de sintaxis parecida a SQLAPI for NoSQLAPI nativa de Cosmos DB.
Analizar datos operativos casi en tiempo real sin construir ETLAPI for NoSQL con Fabric mirroringReplica a Fabric sin consumir RU.
Aplicación existente con controladores de MongoDBAPI for MongoDBCompatible con controladores y bibliotecas de MongoDB.
Migrar una app de Azure Table Storage ganando distribución globalAPI for TableMismo modelo de programación.
Migrar una carga de Apache Cassandra a un servicio gestionadoAPI for Apache CassandraFamilias de columnas y CQL.
Detectar fraude recorriendo relaciones entre cuentasAPI for Apache GremlinGrafos con vértices y aristas.
Migrar MongoDB usando todo el lenguaje de consultas de MongoDBAzure DocumentDBLa opción que recomienda Microsoft para ese caso.

Trampas frecuentes del examen

❓ ¿La «SQL API» de Cosmos DB es otra API distinta de NoSQL?

No. Es el nombre anterior de la API for NoSQL.

❓ ¿La API for NoSQL convierte Cosmos DB en una base relacional?

No. Guarda documentos JSON; solo la sintaxis de consulta se parece a SQL.

❓ ¿En qué formato guarda los datos la API for MongoDB?

En BSON (JSON binario), y se consulta con MQL.

❓ ¿Qué lenguaje usa la API for Apache Cassandra?

CQL (Cassandra Query Language).

❓ ¿Cómo se llaman las entidades y relaciones en Gremlin?

Vértices (nodos) y aristas.

❓ ¿Cuántas API admite Cosmos DB?

Cinco: NoSQL, MongoDB, Table, Apache Cassandra y Apache Gremlin.

❓ ¿Se elige la API por cada contenedor?

No. Se elige al crear la cuenta de Cosmos DB.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Una red social quiere guardar usuarios y quién sigue a quién, y consultar rápidamente los amigos de los amigos de una persona. ¿Qué API de Cosmos DB debe usar?

¿Listo para poner a prueba "API de Azure Cosmos DB"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro