Identificación de las API de Azure Cosmos DB
Azure Cosmos DB es la base de datos distribuida totalmente administrada y sin servidor de Microsoft para aplicaciones de cualquier tamaño o escala, con compatibilidad con cargas de trabajo relacionales y no relacionales. Los desarrolladores pueden compilar y migrar aplicaciones rápidamente mediante sus motores de base de datos de código abierto preferidos, como PostgreSQL, MongoDB y Apache Cassandra. Al aprovisionar una nueva instancia de Cosmos DB, seleccione el motor de base de datos que quiere usar. La elección del motor depende de muchos factores, como el tipo de datos que se van a almacenar, la necesidad de admitir aplicaciones existentes y las aptitudes de los desarrolladores que trabajarán con el almacén de datos.
Azure Cosmos DB para NoSQL
Azure Cosmos DB for NoSQL es el servicio no relacional nativo de Microsoft para trabajar con el modelo de datos del documento. Administra los datos en formato de documento JSON y, a pesar de ser una solución de almacenamiento de datos NoSQL, usa sintaxis SQL para trabajar con los datos.
Una consulta SQL para una base de datos de Cosmos DB que contiene datos del cliente podría ser similar a esta:
SELECT *
FROM customers c
WHERE c.id = "joe@litware.com"
El resultado de esta consulta consta de uno o varios documentos JSON, como se muestra aquí:
{
"id": "joe@litware.com",
"name": "Joe Jones",
"address": {
"street": "1 Main St.",
"city": "Seattle"
}
}
Azure Cosmos DB for MongoDB
MongoDB es una base de datos de código abierto popular en la que los datos se almacenan en formato JSON binario (BSON). Azure Cosmos DB for MongoDB permite a los desarrolladores usar bibliotecas de cliente y código de MongoDB para trabajar con datos en Azure Cosmos DB.
El lenguaje de consulta de MongoDB (MongoDB Query Language, MQL) usa una sintaxis compacta orientada a objetos en la que los desarrolladores usan objetos para llamar a métodos. Por ejemplo, la consulta siguiente usa el método find para consultar la colección products en el objeto db:
db.products.find({id: 123})
Los resultados de esta consulta constan de documentos JSON, similares a los siguientes:
{
"id": 123,
"name": "Hammer",
"price": 2.99
}
Azure Cosmos DB para PostgreSQL
Azure Cosmos DB for PostgreSQL es la opción de PostgreSQL distribuida en Azure. Azure Cosmos DB for PostgreSQL es una base de datos relacional nativa de PostgreSQL, distribuida globalmente, que particiona automáticamente los datos para ayudarle a crear aplicaciones altamente escalables. Puede empezar a crear aplicaciones en un grupo de servidores de un solo nodo, de la misma manera que lo haría con PostgreSQL en cualquier otra ubicación. A medida que aumentan los requisitos de escalabilidad y rendimiento de la aplicación, puede escalar sin problemas a varios nodos mediante la distribución transparente de las tablas. PostgreSQL es un sistema de administración de bases de datos relacionales (RDBMS) en el que se definen tablas relacionales de datos, por ejemplo, podría definir una tabla de productos como esta:
ProductID | ProductName | Precio |
---|---|---|
123 | Martillo | 2,99 |
162 | Screwdriver | 3.49 |
Después, podría consultar esta tabla para recuperar el nombre y el precio de un producto específico mediante SQL de esta manera:
SELECT ProductName, Price
FROM Products
WHERE ProductID = 123;
Los resultados de esta consulta contendrán una fila para el producto 123, de la siguiente manera:
ProductName | Precio |
---|---|
Martillo | 2,99 |
Azure Cosmos DB for Table
Azure Cosmos DB for Table se usa para trabajar con datos en tablas de clave-valor, de forma similar a Azure Table Storage. Ofrece mayor escalabilidad y rendimiento que Azure Table Storage. Por ejemplo, puede definir una tabla denominada Clientes de la siguiente forma:
PartitionKey | RowKey | Nombre | |
---|---|---|---|
1 | 123 | Joe Jones | joe@litware.com |
1 | 124 | Samir Nadoy | samir@northwind.com |
Posteriormente, puede usar Table API a través de uno de los SDK específicos del lenguaje para realizar llamadas al punto de conexión de servicio para recuperar datos de la tabla. Por ejemplo, la siguiente solicitud devuelve la fila que contiene el registro de Samir Nadoy en la tabla anterior:
https://endpoint/Customers(PartitionKey='1',RowKey='124')
Azure Cosmos DB for Apache Cassandra
Azure Cosmos DB for Apache Cassandra es compatible con Apache Cassandra, que es una base de datos de código abierto popular que usa una estructura de almacenamiento de familia de columnas. Las familias de columnas son tablas, similares a las de una base de datos relacional, con la excepción de que no es obligatorio que cada fila tenga las mismas columnas.
Por ejemplo, puede crear una tabla de Empleados como esta:
id | Nombre | Manager |
---|---|---|
1 | Sue Smith | |
2 | Ben Chan | Sue Smith |
Cassandra admite una sintaxis basada en SQL, por lo que una aplicación cliente podría recuperar el registro de Ben Chan como se muestra a continuación:
SELECT * FROM Employees WHERE ID = 2
Azure Cosmos DB for Apache Gremlin
Azure Cosmos DB for Apache Gremlin se usa con datos en una estructura de grafos, en la que las entidades se definen como vértices que forman nodos en el gráfico conectado. Los nodos se conectan mediante bordes que representan relaciones, como esta:
En el ejemplo de la imagen se muestran dos tipos de vértices (empleado y departamento) y bordes que los conectan (el empleado "Ben" depende de la empleada "Sue" y ambos empleados trabajan en el departamento "Hardware").
La sintaxis de Gremlin incluye funciones para operar en vértices y bordes, y esto permite insertar, actualizar, eliminar y consultar datos en el gráfico. Por ejemplo, puede usar el código siguiente para agregar un nuevo empleado llamado Alice que dependa de la empleada con el identificador 1 (Sue)
g.addV('employee').property('id', '3').property('firstName', 'Alice')
g.V('3').addE('reports to').to(g.V('1'))
La consulta siguiente devuelve todos los vértices de empleado, por orden de identificador.
g.V().hasLabel('employee').order().by('id')