Las bases de datos NoSQL son almacenamientos de información que no cumplen las restricciones básicas del modelo relacional y que por tanto, no tienen un conjunto de tablas relacionadas entre sí de una manera ordenada y lógico.
Las bases de datos NoSQL surgen por las deficiencias encontradas en los modelos relacionales para manejar gigantescas cantidades de información de una manera rápida y eficaz.
En una base de datos relacional, todo funciona correctamente hasta el momento en el que el devenir de los acontecimientos nos obliga a realizar una modificación del sistema de tablas y relaciones que definen la estructura de nuestra base de datos. En ese momento es cuando nos preguntamos “¿por qué habré realizado un sistema tan robusto en el que ahora no tengo manera de meterle mano?”.
Un sistema de almacenamiento NoSQL no precisa de un sistema de tablas y relaciones entre ellas, sino que trabaja con otro tipo de información como clave-valor, objetos, grafos o documentos.
De esta estructuración de las bases de datos se puede suponer, que al no tener una estructura de tablas relacionadas, no se podrás realizar las temidas sentencias JOIN. Esto es un gran avance con respecto las bases de datos relacionales, puesto que este tipo de sentencias sobre campos no clave suelen ralentizar el funcionamiento del software por la gran cantidad de datos relacionados a manejar.
Otra diferencia de las bases de datos NoSQL con las bases de datos relacionales es que, como se puede imaginar por el nombre dado a estos sistemas de almacenamiento, no usan lenguaje SQL como lenguaje principal de consulta. Así pues algunos gestores de estas bases de datos como pueden ser BigTable, desarrollado por Google, utiliza GQL, MongoDB utiliza JSON y Cassandra utiliza CQL.
Una desventaja importante de estos sistemas de almacenamiento es que la información almacenada no guarda los principios de atomicidad, consistencia, aislamiento y durabilidad (ACID), principios básicos en la definición de las bases de datos relacionales propuesta por Codd. Estos sistemas prescinden de esta robustez de información en pos de una mayor agilidad en las consultas que devuelven gran cantidad de datos con millones de registros involucrados.
Una ventaja de estos sistemas de almacenamiento basados en bases de datos NoSQL es la facilidad de manejar y definir bases de datos distribuidas, puesto que al no depender de una estructura de tablas prefijada por el diseñador de la base de datos es muy fácil realizar las particiones horizontales características de estos diseño de bases de datos distribuidas y definirlas en diferentes servidores, mientras que en las bases de datos relacionales la distribución es mucho más complicada por el complejo sistema diseñado de tablas y relaciones, en los que resultaba muy complicado determinar qué datos debemos ubicar en los diferentes servidores, puesto que siempre existían datos ubicados en otros servidores y provocaban una ralentización del funcionamiento del software que se estuviese manejando.
Llegados a este punto, cabe preguntarse “¿Cuándo debemos de utilizar una base de datos NoSQL y cuando una base de datos relacional?.
La respuesta es sencilla: una base de datos NoSQL se utilizará cuando dispongamos de una base de datos relacional que no sea capaz de satisfacer las necesidades de nuestro software.
Por tanto, este tipo de bases de datos no es que reemplace a las bases de datos relacionales, sino que las complementa cuando estas se quedan pequeñas o poco prácticas para el manejo de grandes cantidades de información.
SEAS es el centro de formación online del Grupo San Valero, especializado en el ámbito técnico, industrial y de empresa. Visita www.seas.es para consultar nuestra oferta formativa de cursos y másteres. Formación profesional para el empleo de calidad y accesible para todos.