Tipos de datos no relacionales

En el presente post voy a hablar de tipos de datos no relacionales, siguiendo la senda de un post anterior donde hablé de Azure y bases de datos no relacionales.

Estamos acostumbrados a los datos estructurados, esto es, aquellos que están basados en “campos”: por ejemplo si hablamos de una tabla “Clientes” pues podrían ser el código, nombre, CIF, etc., y las bases de datos relacionales se caracterizan porque todas sus tablas siguen este patrón. Pero esta disposición de campos está pensada para cuando todos los registros tienen la misma estructura, lo que no tiene por qué suceder siempre; o aunque los datos sí se basen en campos, no tienen por qué ser los mismos siempre. Y si los datos no se basan en campos entonces utilizar estas estructuras relacionales es algo “contra natura”.

Datos semiestructurados

Este tipo de datos es el que comentaba que, aunque se base en campos, no tienen por qué ser los mismos para cada entidad, y se definen para cada una de ellas. Una forma habitual de dar formato a datos de este tipo es almacenar los datos como un documento JSON (acrónimo de JavaScript Object Notation, «notación de objeto de JavaScript»), que por ejemplo se pueden usar para leer y escribir documentos de archivos. No es intención de este post profundizar en JSON, pero en internet podréis encontrar literatura abundante, comenzando por su página madre.

Lo importante es que podemos definir los campos que queramos, no estamos restringidos a los que haya declarados en una tabla: ni nos sobrarán, ni nos faltarán. Y luego a través un “analizador de JSON” podremos dividir el documento en los campos y extraer datos concretos.

Además de JSON hay otros formatos que se utilizan para datos semiestructurados:

  • Avro: es un formato creado por Apache basado en filas. Permite una compresión muy alta de los datos, lo que reduce los requisitos de almacenamiento y ancho de banda
  • ORC: es un formato de almacenamiento basado en columnas que permite resumir datos rápidamente y consultar conjuntos de datos muy grandes. Admite consultas de tipo SQL
  • Parquet: también es un formato basado en columnas, que destaca por incluir metadatos que describen los conjuntos de filas almacenados y por tanto localizar estos rápidamente

Datos no estructurados

Estos tipos de datos no contienen campos de forma natural, y ejemplos típicos son en general cualquier contenido multimedia, como los audios o vídeos. Estos “datos” son cada uno un BLOB, (Binary Large Objects, objetos binarios grandes), y en ellos no podemos buscar elementos específicos. Este tipo de datos solo admite operaciones de lectura y escritura.

Otro tipo de dato no estructurado es un archivo; pero, a diferencia de un audio o vídeo, los archivos (un documento de ofimática, una fotografía, etc.) puede incluir metadatos que se almacenan como campos y que nos dan cierta información sobre ellos (como el tipo de archivo, el propietario del mismo, etc.). Fijaos en la siguiente imagen, por ejemplo, correspondiente a la información que proporciona un fichero Excel: aparte de metadatos en los que se puede insertar el texto que se quiera (“EJEMPLO METADATO”), también hay otros que vienen dados de per se, como los correspondientes a fechas o autor.

En un próximo post os hablaré de tipos de bases de datos no relacionales donde almacenar los tipos de datos semiestructurados o no estructurados.