Bases de datos NoSQL: ¿Qué son y para qué sirven?

Las bases de datos NoSQL (Not only SQL) pertenecen a un modelo no relacional que ofrece gran flexibilidad para manejar información no estructurada.

Para la mayoría de la gente una base de datos (BD) es casi un sinónimo de tablas de datos. Ello ocurre porque el modelo de datos relacional predominante por más de 30 años es tan tremendamente exitoso que no deja espacio para considerar otras opciones.

Una de las muchas gracias de las bases de datos relacionales es que existe un lenguaje de consultas estándar llamado SQL que permite interactuar fácilmente con ellas.

Sin embargo, en los últimos años han empezado a tomar importancia algunos tipos de modelos de datos alternativos que caen en su conjunto bajo la etiqueta NoSQL.

Las bases de datos NoSQL corresponden a un modelo no relacional (no hay tablas) que también incorpora un lenguaje de consultas pero ofrece además mucho más flexibilidad para almacenar información no estructurada.

Modelos de datos

Pero hablemos un poco de modelos de datos. Es evidente que si uno pudiese mirar el dispositivo de almacenamiento donde se guarda la información de una base de datos (por ejemplo, un disco duro) no va a encontrar tablas, sino que solo 1 y 0 que es la forma de la información digital.

Sin embargo, sería muy difícil razonar a tan bajo nivel por lo que se modela la información en una forma determinada, por ejemplo, en tablas de datos.

Esto es similar a la forma en que un programador razona sobre el código que escribe en términos de las instrucciones que se usan en ese lenguaje y no en forma de 1 y 0. El programador piensa en objetos, funciones, procedimientos, etc.

La pregunta evidente es ¿qué tiene de malo el modelo relacional? ¿Por qué usar otro modelo si este ha demostrado servir para modelar todo tipo de información?

La razón es muy sencilla. Suponga que le dicen que toda la información que usted maneja en su computador personal debe guardarla en archivos Excel. Tiene un presupuesto, planilla; una carta a un cliente, planilla; un manual de una máquina, planilla. No suena muy razonable ¿no es cierto?

Bases de datos NoSQL: cuando la información es poco estructurada

Hay veces en que la información a almacenar aun cuando se puede volcar en planillas de cálculo, ello resulta un poco forzado. Esto pasa cuando la información es poco estructurada.

En una tabla que tiene por ejemplo 100.000 filas sabemos que cada una de ellas adhiere a lo que indican los encabezados de cada columna. Por ejemplo, si el precio del ítem está en la cuarta columna ello será así para los 100.000 ítems de la tabla. ¿Y qué hacemos cuando los ítems a guardar no son todos tan similares?

Ejemplos de base de datos NoSQL

Veamos un ejemplo de base de datos NoSQL. Piense en un médico que quiere llevar las fichas médicas de sus pacientes. Si el usa tablas para la ficha, cada una de ellas deberá contener los mismos elementos y aun así posiblemente resulten muchos valores sin información o que no aplican.

El modelo de documentos propone que las instancias de información a almacenar no tienen por qué ser todas exactamente iguales (como las filas de una tabla).

Por ejemplo, si tengo un producto que es una bicicleta o una prenda de ropa, la información a guardar es distinta a si se trata de un computador.

Documentos en formato JSON

La figura muestra 3 documentos en un formato conocido como JSON que ilustran esta idea.

bases de datos NoSQL

Puede verse de inmediato la gran ventaja de este modelo en términos de flexibilidad para el manejo de información no tan estructurada.

El modelo de documentos puede usar otros estándares para describir los documentos (XML) pero el formato JSON es por lejos el más popular.

La idea de gestionar información no estructurada ha tomado especial importancia en los últimos años con la irrupción de la big data.

Información como las publicaciones en las redes sociales que son externas a las organizaciones puede ser muy útil para la toma de decisiones. Sin embargo, ese tipo de información no se lleva bien con el esquema predeterminado de cierto número de columnas de cierto tipo característico del modelo relacional.

Uno de los motores de BD más populares entre los que implementan este modelo de datos basado en documentos JSON es MongoDB. Cientos de compañías muy importantes utilizan este software para manejar parte de su información. MongoDB tiene otra ventaja importante sobre los motores relacionales, sobre todo en el contexto de big data, que es el escalamiento horizontal.

Así, es más simple implementar una base de datos distribuida (ningún nodo tiene la base de datos completa) en MongoDB que en un motor relacional. Operaciones como cambios en el esquema son también mucho menos costosos en un motor de documentos.

BD: ¿Tendremos que dejar SQL?

Finalmente, el punto que suelen hacer quienes se resisten a dejar el viejo y querido modelo relacional es ¿tendremos que dejar también el SQL? ¿Tendremos que escribir ahora un programa cada vez que se nos ocurra preguntar por información almacenada?

La respuesta es no. Existe un lenguaje de consultas sobre documentos que permite extraer información de la base de datos en forma rápida y fácil. Eso sí, no es un estándar, por lo que el aprender a usarlo en MongoDB no garantiza que pueda hacerlo por ejemplo en CouchDB.

En definitiva, las bases de datos de documentos y los motores asociados no van a reemplazar al modelo relacional, pero si se utilizarán en forma creciente en casos de uso donde se requiere manejar información poco estructurada o necesariamente particionar la base de datos en múltiples nodos. Este contexto es justamente el que uno encuentra en situaciones de manejo de big data.

 

Actualízate con el curso sobre Python y base de datos (online) de Clase Ejecutiva UC.





Artículos más recientes del autor