Azure y bases de datos no relacionales

Estudiar –y aprobar- la certificación de Azure Data Fundamentals me proporcionó una visión sobre los datos que utilizamos, sus tipos y estructuras; y las diferentes opciones que tenemos para almacenarlos. En este post introductorio os hablaré de Azure y bases de datos no relacionales.

Los datos que manejamos en nuestras empresas vienen en todo tipo de formatos y tamaños, y se usan para múltiples propósitos. Desde luego lo más habitual es utilizar bases de datos relacionales para almacenarlos y es a lo que estamos acostumbrados: nuestros ERPs, CRMs, y de hecho en la mayoría de programas que utilizamos en nuestras empresas. Aunque no siempre ese tipo de almacén es el más apropiado pues las estructuras de datos pueden ser demasiado variadas.

Objetos “NoSQL”

Hay diferentes situaciones y motivos por los que las  bases de datos no relaciones son el entorno idóneo: por ejemplo vídeos, audios, imágenes, texto “puro y duro”,… son algunos de los tipos de datos que no se “llevan bien” con un sistema relacional. Por tanto, en vez de pelearnos para utilizarlos es una buena idea utilizar repositorios no relacionales que almacenan esos datos en su formato original; y nos permitan asimismo almacenarlos y recuperarlos rápidamente.

Otra situación es la siguiente: a veces aunque los datos que recibamos sí sean adecuados para almacenarlos en una base de datos relacional nos podemos encontrar con que no sabemos por adelantado su estructura. Entonces una buena idea será almacenarlos temporalmente en una base de datos no relacional. Y una vez conozcamos dicha estructura será el momento de traspasarlos a nuestro motor relacional.

Un aspecto clave de las bases de datos no relacionales es que no obligan a un esquema en los datos. Esto implica que se puede almacenar y usar la información en su forma natural. Es una característica que nos ayudará en casos cotidianos como las direcciones de los clientes: dependiendo por ejemplo de su país de residencia nos encontraremos diferencias importantes en cómo se distribuye la información (códigos postales, poblaciones, abreviaturas,…). O con la cantidad de números de teléfono que puede tener un cliente (fijo, móvil -y más de uno-, de trabajo, particular). O si queremos introducir datos rápidamente, procesarlos y manipularlos en diferentes tablas probablemente no sea lo más apropiado; probablemente mejor simplemente almacenarlos tal cual y el resto de acciones que se tengan que hacer sobre ellos se llevarán a cabo posteriormente.

¿Cuándo utilizar una base de datos no relacional?

Algunos escenarios indicados para bases de datos no relacionales son los siguientes:

  • Internet of things (IoT) y telemáticos: estos sistemas suelen proporcionar grandes cantidades de datos y muchas veces en momentos de especial actividad. Una base de datos no relacional almacena estos datos rápidamente, para luego si queremos procesarla en tiempo real con funciones que se disparan conforme llegan los datos
  • Web y aplicaciones móviles: modelar las interacciones sociales o la integración con servicios de terceras partes son características importantes para este tipo de escenarios

  • Ventas y marketing: como ejemplo la propia Microsoft utiliza su base de datos no relacional disponible en Azure, CosmosDB, como plataforma para Windows Store y Xbox Live
  • Juegos: los juegos actuales se apoyan en la nube para suministrar contenido como estadísticas o integración con social media; y requieren latencias muy bajas tanto en lectura como en escritura, con picos de peticiones enormes durante periodos como los lanzamientos o las actualizaciones

En un posterior post profundizaremos en Azure y bases de datos no relacionales hablando de tipos de datos no relacionales (semiestructurados, no estructurados) y tipos de bases de datos no relacionales.