Azure Cosmos Db es una base de datos no relacional utilizada cuando tenemos múltiples objetos que pueden tener propiedades dinámicas, es decir, que pueden tener todas o algunas de las propiedades. Los objetos que guardamos no contienen una estructura definida pero si un mismo tipo y además se guardan en formato JSON:

json
Ejemplo de objeto almacenado en Cosmos Db en formato JSON

Ejemplo Práctico

A lo largo de este post expondré un ejercicio práctico para poder visualizar el funcionamiento de Azure Cosmos Db. Para ello utilizaremos Visual Studio Enterprise (código) y el portal de Azure. El ejemplo consta en la creación de una base de datos de películas, listaremos todos los objetos existentes y seremos capaces de crear, ver detalles , modificar y eliminar películas. A lo largo de la explicación observaremos como podemos crear objetos dinámicos que tendrán un mismo tipo pero es posible que no todos tengan la misma cantidad de propiedades.

Acceso al portal y al menú de Cosmos Db: primero debemos abrir el portal de Azure y en el buscador escribimos: Azure Cosmos Db (como se puede ver en la foto ya tengo creado dos ejemplos). Una vez que estamos allí podremos observar que contamos con un menú que permite agregar, eliminar, etc.

paso1
Menú de Azure Cosmos Db

Creación del recurso Cosmos Db películas: pulsamos sobre el botón agregar y veremos que nos aparecerá una ventana la cual iremos completando: agregaremos un grupo de recursos (recuerda que esto permite un mayor orden a la hora de crear recursos). En mi caso trabajaré sobre la carpeta «PostAzure», añadimos un nombre de cuenta y completamos los demás campos como se observa en la foto y pulsamos en revisar y crear:

paso2

Cuando la revisión sea correcta pulsamos en crear:

paso3

Recuperar las claves de acceso del recurso: antés de comenzar con el código es importante apuntar la uri de nuestro recurso así como también la PrimaryKey que nos permitirán el acceso posteriormente por código. En nuestro menú localizamos el apartado «claves»:

paso29

Pulsamos sobre claves y veremos un apartado donde esta la URI y otro apartado que tiene la PrimaryKey, apuntamos dichas claves:

paso30

Una vez que ya hemos creado el recurso en el portal de Azure vamos a realizar una aplicación NET Core en la cual tendremos una vista index.cshtml con un botón (realizar acciones Cosmos Db) que ejecutará las primeras acciones de la aplicación que será crear la BBDD de películas e insertar 2 películas para poder tener datos en la misma. A partir de esto podremos realizar las distintas acciones de crear, ver detalles, modificar y eliminar.

Instalación de NuGets: sobre el proyecto hacemos click derecho y pulsamos sobre «Administrar paquetes NuGet» e instalamos los siguientes NuGets:

paso5
paso4

Creación de la clase Pelicula (modelo): sobre el proyecto creamos una carpeta llamada Models y dentro de la misma una clase llamada Pelicula con 5 propiedades y un método que se encargará de serializar los objetos:

paso6

Configuración de la clase appsettings.json: aquí es donde colocaremos la Uri que previamente guardamos y la PrimaryKey para poder tener acceso al recurso. Posteriormente, en la creación de la clase service utilizaremos IConfiguration para poder acceder a estas claves:

paso28

Creación clase Service: sobre el proyecto creamos la carpeta Service y dentro una clase llamada «ServiceCosmosDb» (debemos hacer los using necesarios de los NuGets):

paso7
paso8
paso9
paso10
paso11

Creación de CosmosController: una vez ya tenemos listas la clase del modelo y el service, haremos el CosmosController e inyectaremos la clase del Service en el constructor de esta clase. Haremos las llamadas a cada uno de los métodos del service:

paso12
paso13
paso14

Creación de las vistas Index, Create, Editar, Detalles, ListPeliculas: una vez listo el contolador, crearemos nuestras vistas, en mi caso he utilizado el atajo de creación de vistas con Razor + el tipo de acción que vayamos a necesitar + el uso del modelo:

paso15

El controlador posee métodos Post y dichos métodos reciben un objeto de tipo película por lo cual estamos utilizando el model binding y es así que en las vistas que haya formularios es importante que el atributo «name» de los input se correspondan al mismo nombre que figura en la clase Pelicula.

Creamos Index.cshtml:

paso16

Creamos ListPeliculas.cshtml:

lista
paso24

Creamos Create.cshtml:

paso17
paso18

Creamos Edit.cshtml:

paso25
paso26

Creamos la vista Detalles.cshtml:

paso21
paso22

Resolvemos dependencias: finalmente debemos resolver las dependencias en la clase Startup:

paso27

Resultado: ejecutamos la apliación:

paso31
Index
paso32
ListPeliculas
paso33
Create
paso34
Editar
paso35
Detalles

Para finalizar este post quiero volver a recordaros la importancia de que los name de los controles HTML se correspondan con los nombres presentes en el modelo de la clase Pelicula ya que si no el model binding no funcionará y verificar que las claves que os apuntéis del recurso sean las correctas. Espero que este post os haya sido útil.

Autor/a: María Victoria Castro Dotta
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2020-2021
Código / recursos utilizados / Otros datos de interés: código realizar Azure Cosmos Db

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.