NoSQL (Not Only SQL), hace referencia a los sistemas de bases de datos no estructurados o no relacionales. Los NoSQL Son aquellos sistemas de bases de datos capaces de procesar datos que provienen de distintas fuentes de información y que estos, no están estructurados entre ellos, como sí lo suelen estar los sistemas relacionales SQL.

La tecnología que se ha venido utilizando hasta ahora no estaba preparada para procesar datos no estructurados provenientes de diferentes fuentes de información. Éstos son almacenados de forma no estructurada al ser conjuntos de datos con distintos formatos. Son los muy utilizados en diferentes proyectos de Big data, que manejan grandes volúmenes de datos.
Características del NoSQL
Los sistemas de bases de bases de datos NoSQL tienen como principal característica el no utilizar el SQL como lenguaje habitual para realizar consultas contra las bases de datos. Aunque también soportan el lenguaje SQL. De ahí su nombre, NoSQL.
En NoSQL, los datos disponibles que son almacenados no necesitan las clásicas tablas utilizadas en los sistemas relacionales. No son necesarias estructuras fijas como las tablas, y en muchas ocasiones no cumplen con los requisitos de atomicidad, consistencia, aislamiento y durabilidad (ACID).
Estos sistemas de almacenamiento de datos surgen gracias a la necesidad de crear sistemas donde el rendimiento y la velocidad de procesamiento al consultar o agregar datos fuera mayor que el de los tradicionales sistemas de bases de datos relacionales.
Esta necesidad de procesar datos en tiempo real y con la aparición de las redes sociales permitió comprobar que los sistemas tradicionales no resolvían los problemas a la hora de procesar grandes volúmenes de datos en un tiempo razonable y empezó a gestarse la idea del NoSQL.
Por lo tanto podemos decir que el NoSQL, además almacenar datos no estructurados, tiene como otra de sus principales características, el rendimiento y la optimización a la hora de agregar y recuperar datos.
- Big Data implica habitualmente NoSQL.
- NoSQL no implica necesariamente Big Data
- No utilizan SQL, aunque en parte pueden simularlo.
- Escalabilidad horizontal.
- Nodos interconectados trabajando en paralelo (MapReduce).
- Los nodos no necesitan grandes capacidades de hardware
- Modelo de computación distribuida
- Reducción de costes
Tipos de archivos procesados por NoSQL
A continuación mostramos una lista con algunos de los archivos que son capaces de procesar los modelos de bases de datos no relacionales. No olvidemos que una de las principales razones por las que nace el concepto NoSQL, es la capacidad de almacenar y procesar distintos formatos de datos.
Hoy en día, se generan cantidades ingentes de datos que crecen de forma exponencial día tras día y son susceptibles de ser analizados. Es por esto por los que contar con sistemas capaces de almacenar y estructurar archivos con distintos formatos es tan importante. Algunos de estos son:
- Publicaciones de redes sociales
- Archivos en formato texto
- Emails
- Archivos CSV (Hojas de cálculo)
- Vídeo.
- Audio
- Imágenes
- Web logs
- Json
- Xml
- BBDD
Ventajas del NoSQL
Una de las principales ventajas es que las bases de datos NoSQL suelen ser open source, o lo que es lo mismo, código abierto. Por lo tanto, al tener disponible el código fuente de estos sistemas, se pueden personalizar y adaptar a las necesidades de cada proyecto.
Otra de las características es su capacidad de manejar enormes cantidades de datos, gracias a su idea no estructurada y su escalabilidad horizontal.
Uno de sus principales atractivos es su capacidad adaptación y su flexibilidad para con los diferentes proyectos. Estas bases de datos tienen la capacidad de almacenar y procesar distintos y diversos tipos de documentos por lo que les permite adaptarse al proyecto.
Por otro lado, los sistemas NoSQL presentan una reducción de costes respecto a otros sistemas, lo que les hace encajar en los presupuestos que manejan proyectos de este tipo.
Desventajas del NoSQL y los modelos no relacionales
El NoSQL es una tecnología relativamente nueva, lo que hace que sus sistemas no sean lo suficientemente robustos. El hecho de que sean sistemas de código abierto es por esta razón. La comunidad aún está desarrollando soluciones para los problemas a los que se enfrentan algunos proyectos.
Esta es una de las razones por las que muchas empresas, aún dudan y cuestionan la idoneidad del NoSQL para ser aplicado en sus proyectos. Ya que no son lo suficiente maduros, y los proveedores de estos sistemas aún no prestan soporte.
Por otro lado, al primar la capacidad de almacenamiento y optimización del rendimiento en el procesamiento de las consultas sobre la rigurosidad y el concepto ACID (atomicidad, consistencia, aislamiento y durabilidad), hacen que estos sistemas sean descartados en proyectos de minería de datos. La minería de datos necesita un mínimo de garantías en la fiabilidad y calidad de sus datos, por lo que en muchas ocasiones, se decanta por los sistemas de bases de datos relacionales.
Tampoco podemos olvidar que existe una gran inexperiencia de esta tecnología respecto a otras. En muchas ocasiones los sistemas aún se encuentran en una fase muy temprana y son sistemas muy adaptados a cada proyecto y distintos entre sí, lo que hace que carezcan de estándares y una normalización que los hace incompatibles con otras herramientas.
Otras desventajas respecto a los sistemas de bases de datos relacionales son:
- Alta necesidad de redundancia.
- Altas latencias.
- Reducen la “impedancia de datos”.
Herramientas NoSQL y sus ecosistemas
Podemos clasificar las herramientas NoSQL dependiendo de los documentos que se pretenden almacenar y procesar, estos son:
- Bases de datos orientados a documentos.
- Sistemas de clave – valor.
- Sistemas de bases de datos orientados a grafos.
NoSQL orientado a documentos
Estos sistemas permiten almacenar datos con estructura compleja que se almacenan y recuperan en forma de documento. Son muy útiles para interactuar con la programación orientada a objetos. Algunos de estos son:
- MongoDB
- IBM Lotus Domino
- SimpleDB (Amazon)
- CouchBase
- DynamoDB
- CouchDB
- BaseX
- RavenDB
- djondb
- eXist
- Terrastore
Sistemas NoSQL orientados a grafos
Estos sistemas se basan en estructuras matemáticas de grafos y conjunto de nodos interconectados por aristas. Un ejemplo podrían ser los mapas de autovías o carreteras. Son muy difíciles de procesar por los sistemas de bases de datos relacionales.
Algunas de sus aplicaciones pueden ser calcular recorridos entre nodos, recomendadores o análisis de redes sociales por ejemplo. Algunas de estas herramientas son:
Sistemas Clave – Valor
Los sistemas clave – valor permiten asociar una clave, a modo de identificador único a un valor determinado. EStas claves se añaden a cualquier elemento, pueden ser objetos simples u objetos compuestos complejos. Son muy eficientes y rápidas para las recuperaciones de datos en los que la estructura del objeto no es demasiado relevante. Algunos de estos sistemas son: