lunes, 16 de septiembre de 2019

Introducción 

En unos pocos años las bases de datos NoSQL se han dado a conocer ampliamente. Resuelven algunas problemáticas para las que las bases de datos relacionales más longevas no proporcionan una solución totalmente satisfactoria como el escalado horizontal y un modelo de datos normalizado en varias tablas, filas y columnas predefinidas y significativamente diferente del modelo de datos usados por las aplicaciones.

¿Qué es?

También conocido como no solo sql(Not only SQL) es un amplia clase de sistemas de gestión de datos caracterizado por no usar SQL como el principal lenguaje de consultas.
Capaz de almacenar grandes cantidades de datos facilitando un crecimiento horizontal, enfocándose en rendimiento más que en consistencia.

Resultado de imagen para not only sql

¿Qué es una BD NoSQL?

• Sistema de almacenamiento de información 
• No cumple con el esquema entidad-relación 
• No impone una estructura de datos 
• Almacena los datos en diferentes formatos 


Resultado de imagen para bd nosql


¿Por qué surgen las base de datos NoSQL?

Surgen en respuesta a las limitaciones de las tablas convencionales SQL las cuales vienen con restricciones como un esquema rígido que las hacen menos adecuadas para otros tipos de aplicaciones.

Los sistemas NoSQL almacenan y gestionan datos de forma que permiten una gran velocidad de funcionamiento y una gran flexibilidad por parte de los desarrolladores. Debido al gran crecimiento de la web, servicios en la nube y startups de éxito con millones de usuarios nacen las bases de datos NoSQL las cuales muchas fueron desarrolladas por compañias como Google, Amazon, Yahoo y Facebook quienes buscaban mejores formas de almacenar contenido o procesar datos para sitios web masivos.

Resultado de imagen para compañias que usan NoSQL


Retos de las base de datos NoSQL


Dada la amplia variedad de bases de datos NoSQL, es necesario prestar atención a las debilidades genéricas de estos modelos y, en cada caso particular aplicar las medidas necesarias en cada implementación particular. Comparando con las bases de datos relacionales podemos resumir los siguientes campos de seguridad:
Autenticación.
La fortaleza de la autenticación es uno de los campos de batalla donde muchas implementaciones NoSQL muestran debilidad. Es común encontrar que la las bases de datos NoSQL incorporen credenciales por defecto, o incluso sin autenticación necesaria o deshabilitada (por ejemplo, Redis). En muchos casos se basan en entornos de confianza en lugar de autenticación de usuario. Dependiendo del software siempre será un punto fundamental a chequear.
Integridad de los datos.
Siguiendo una filosofía donde prima la disponibilidad y el rendimiento, se penaliza en la integridad de los datos. Por ello es necesario utilizar frecuentemente mecanismos complementarios ajenos al motor de la base de datos para asegurar la integridad.
Confidencialidad y cifrado en el almacenamiento.
Por lo general, el almacenamiento de los datos se realiza en texto plano y salvo escasas excepciones como por ejemplo Cassandra y su tecnología Transparent data encryption, no se incorporan mecanismos de cifrado integrados. En la mayoría de los casos sigue siendo necesario delegar el cifrado a procesos en la capa de aplicación o del propio sistema de ficheros.
Auditoria de datos
La mayoría de bases de datos NoSQL carecen de mecanismos propios y robustos de auditoría de datos, de gran peso a la hora de detectar posibles ataques mediante la observación de eventos sobre registros concretos tal y como se hace en bases de datos relacionales.
Seguridad en las comunicaciones.
El uso de cifrado y protocolo SSL es habitual en bases de datos relaciones, en cambio en sistemas NoSQL generalmente se encuentra deshabilitado por defecto, es opcional (por ejemplo Cassandra), o bien es necesaria una configuración específica en la instalación (MongoDB).

Resultado de imagen para retos seguridad  bd nosql

Tipos de base de datos NoSQL

Resultado de imagen para tipos bd nosql

  • Bases de datos de documentos (p. Ej., CouchDB, MongoDB). Los datos insertados se almacenan en forma de estructuras JSON de forma libre o «documentos», donde los datos pueden ser cualquier cosa, desde enteros hasta cadenas y texto de forma libre. No existe una necesidad inherente de especificar qué campos, si corresponde, contendrá un documento.
Resultado de imagen para bd nosql documento  
Resultado de imagen para bd nosql mongodb
  • Tiendas de valores clave (por ejemplo, Redis, Riak). Los valores de forma libre, desde enteros simples o cadenas hasta documentos JSON complejos, se acceden en la base de datos por medio de claves.
Resultado de imagen para bd nosql clave valor



Resultado de imagen para bd nosql redis


  • Tiendas de columna ancha (por ejemplo, HBase, Cassandra). Los datos se almacenan en columnas en lugar de filas como en un sistema SQL convencional. Se puede agrupar o agregar cualquier cantidad de columnas (y, por lo tanto, diferentes tipos de datos) según sea necesario para consultas o vistas de datos.
Resultado de imagen para bd nosql columnas

Resultado de imagen para bd nosql cassandra

  • Bases de datos Graph (por ejemplo, Neo4j). Los datos se representan como una red o gráfico de entidades y sus relaciones, con cada nodo en el gráfico como un fragmento de datos de forma libre.

Resultado de imagen para bd nosql grafos

Resultado de imagen para bd nosql neo4j



Conclusión 

NoSQL es un modelo no relacional, este nos facilita la programación de base de datos en las redes sociales, desarrollo web, desarrollo móvil, entre otras en donde se requiera almacenar una gran cantidad de datos y es más rápida ya que no utiliza los “join”, aunque estos “join” en SQL se pueden optimizar para trabajar más rápido.
NoSQL no utilizan completamente el sistema ACID (atomicidad, consistencia, aislamiento y durabilidad). Sin embargo pueden ofrecer operaciones de manera mas optimizadas como el agregar y recuperar, tienen una mejor escalabilidad y rendimiento dependiendo del modelo de datos.
Dependiendo los alcances de nuestro proyecto a elaborar es que dependerá si haremos uso de base de datos NoSQL o SQL ya que dependerá mas que nada el enfoque a futuro para saber que tipo de base de datos se adapta mejor a nuestro proyecto.


Referencias


AMAZON. (2019). AWS. Obtenido de AWS: https://aws.amazon.com/es/nosql/

Equipo de pandorafms. (20 de Abril de 2017). Pandorafms. Obtenido de Pandorafms: https://pandorafms.com/blog/nosql-databases-the-definitive-guide/

Innovacion Tecnologica. (19 de Abril de 2016). Blog oracle. Obtenido de Blog oracle: https://blogs.oracle.com/spain/qu-es-una-base-de-datos-nosql

Lopez, A. (3 de Febrero de 2015). Incibe Cert. Obtenido de Incibe Cert: https://www.incibe-cert.es/blog/bases-de-datos-nosql

Mesa, L. F. (31 de Agosto de 2018). Pragma. Obtenido de Pragma: https://www.pragma.com.co/blog/los-beneficios-de-las-bases-de-datos-nosql

MongoDB. (2019). MongoDB. Obtenido de MongoDB: https://www.mongodb.com/nosql-inline

Oscar. (9 de Diciembre de 2017). Code Hoven. Obtenido de Code Hoven: https://www.codehoven.com/nosql-vs-sql/

Prensa Cambio Digital. (4 de Agosto de 2018). Cambio Digital. Obtenido de Cambio Digital: https://cambiodigital-ol.com/2018/08/que-es-nosql-las-bases-de-datos-nosql-explicadas/

Rouse, M. (Marzo de 2017). TechTarget. Obtenido de TechTarget: https://searchdatamanagement.techtarget.com/definition/NoSQL-Not-Only-SQL

SaranshSharma. (2018). GeeksForGeeks. Obtenido de GeeksForGeeks: https://www.geeksforgeeks.org/introduction-to-nosql/