Ontologías en CosmosDB

ES | EN

Disponible desde la versión 2.0.0-fireball

 

Qué es Azure CosmosDB

Cosmos DB es un servicio de base de datos multimodelo distribuido y con escalado horizontal ofrecido como servicio en Azure.

Cosmos DB permite distribuir datos de forma global sobre cualquier número de regiones de Azure, con un proceso transparente de escalado y replicación de los datos.

Cosmos DB es multimodelo y admite de forma nativa modelos de datos de documentos, pares clave-valor, grafos y en columnas. Además permite acceder a sus datos con diferentes APIs: como SQL (documentos), MongoDB (documentos), Azure Table Storage (clave-valor), Gremlin (grafos) y Cassandra (en columnas).

Requisitos de la cuenta de Azure CosmosDB

Para poder integrar el repositorio de CosmosDB en Onesait Platform, debemos crear una cuenta de CosmosDB debe cumplir los siguientes requisitos:

  1. Debe ser una API de tipo SQL API

  2. Se debe crear una base de datos con nombre: onesaitplatform_rtdb

Configuración de la cuenta en onesait Platform

Para configurar una cuenta de CosmosDB, deberemos ir a la configuración central de la plataforma, a través del Control Panel, y añadir estas propiedades:

  • comosdb-master-key: clave maestra proporcionada por azure

  • comosdb-host: URL de conexión proporcionada por Azure

Creación de una ontología en CosmosDB

Para crear una ontología en este repositorio, primeramente iremos al wizard de creación, rellenando todos los campos necesarios.

A continuación, iremos a la pestaña de ‘Advanced settings’, y seleccionaremos CosmosDB como repositorio

Aparecerán dos campos nuevos, Partition Key y Unique Keys.

Partition Key es la clave de partición que utilizará CosmosDB para crear los contenedores. Elegiremos un atributo de la ontología como clave de partición. Por defecto es /id pero se recomienda cambiarla ya que particionar por id no es nada óptimo.

Unique Keys (separados por ',' si hay varias) son los atributos de la ontología que deberán ser únicos, como las UNIQUE CONSTRAINTS de las BBDD relacionales.

Para este ejemplo, estamos utilizando una copia de la ontología Restaurant, por lo que pondremos los siguientes valores:

Particionaremos por barrio, y el restaurant_id deberá ser único.

Una vez creada, podremos realizar operaciones con la ontología, teniendo en cuenta algunas peculiaridades en las consultas.

Realizando consultas sobre una ontología de CosmosDB

Lo primero que hay que tener en cuenta, es que estas al no soportarlo CosmosDB, ontologías no soportan JOIN entre diferentes ontologías, por lo que habrá que diseñar cuidadosamente el modelo de datos.

https://docs.microsoft.com/en-us/azure/cosmos-db/modeling-data

Solo se permite JOIN entre atributos de la misma ontología, como se demuestra aquí:

https://docs.microsoft.com/es-es/azure/cosmos-db/sql-query-working-with-json

Sentencia DELETE y UPDATE

Como peculiaridad, estas sentencias deberán ir acompañadas de una proyección, tal como se muestra aquí:

Funciones SQL

Las siguientes funciones están disponibles a la hora de crear sentencias:

  • UNSET: elimina un campo de la ontología

  • APPEND: añade un objeto/valor a un atributo de la ontología del tipo array.

  • BOOLEAN: funciona que toma argumento true o false y lo convierte en un boolean

 

  • OBJECT: toma como argumento un objeto en formato String, y lo convierte a un objeto