Escolar Documentos
Profissional Documentos
Cultura Documentos
Presentado a:
Resumen
Con este proyecto, se busca aplicar los conceptos relacionados a las bases de
datos NoSQL esto con el fin de saber su respectivo manejo y acceso a la
información para hacer frente a las necesidades actuales de las organizaciones.
Introducción
Antecedentes
González (2016) afirma “Se puede señalar que desde el inicio de la historia hasta
2003 los humanos habíamos creado 5 exabytes (es decir, 5 mil millones de
gigabytes) de información. En 2011 ya creábamos esa misma cantidad de
información cada dos días, esto debido a la llegada de la Internet y de la social
media, y se sigue generando más información cada día.”(p.18)
Es por tanto que los sistemas gestores de bases de datos populares tuvieron fallos
con respecto a lentitud de accesos, problemas de bloqueos, mantener bases de
datos distribuidas geográficamente, instancias de bases de datos que toman
recursos de hardware.
Por tanto, en 1998 nació un concepto llamado NoSQL del cual no implementa el
modelo de datos relacional ni el lenguaje estructurado de consultas SQL. No
fueron creadas por una compañía específica, sino que fueron creadas por varias
empresas que buscaban soluciones a sus problemas.
¿Qué es NoSQL?
NoSQL significa (No only SQL) por su traducción al español “No solamente SQL”
son sistemas de almacenamiento que no hacen parte del modelo relacional, por
tanto, los datos que almacenan no requieren de una estructura tabular, maneja
múltiples modelos de datos por lo que su almacenamiento es de forma rápida y
escalable ya que puede albergar datos estructurados o sin una estructura previa.
Según (Arcitura Education Inc, S.F) “Una base de datos NoSQL generalmente
proporciona una interfaz de consulta basada en API, en vez de una interfaz SQL.
Sin embargo, algunas bases de datos NoSQL también proporcionan una interfaz
de consulta basada en SQL”. (p.75)
Figura 2 – Base de datos NoSQL puede proporcionar una interfaz de consulta basada en API o en SQL.[2]
Las bases de datos NoSQL tienen unas características únicas que las diferencian
de las bases de datos relacionales como lo son:
Las bases de datos NoSQL poseen varias diferencias con respecto a las bases
relacionales entre las cuales se pueden destacar los siguientes aspectos:
Modelo de Datos El modelo relacional normaliza los datos en tablas Las bases de datos NoSQL no suelen contener
conformadas por filas y columnas. Un esquema un esquema. Se suele utilizar una clave de
define estrictamente las tablas, las filas, las partición para recuperar valores, conjuntos de
columnas, los índices, las relaciones entre las tablas columnas o documentos JSON o XML
y otros elementos de las bases de datos. semiestructurados, así como otros documentos
que contengan atributos de elementos
relacionados.
Propiedades ACID Los RDBMS tradicionales admiten las propiedades Habitualmente, las bases de datos NoSQL
ACID de una base de datos relacional. intercambian algunas de las propiedades ACID
de los RDBSM. Estas características convierten
las bases de datos NoSQL en una excelente
opción para cuando los SGBD detectan
desafíos a la hora de resolver limitaciones de
desempeño, escalabilidad, complejidad
operativa y el aumento de los costos de
administración y soporte.
Desempeño Normalmente, el desempeño depende del El desempeño es, por lo general, depende del
subsistema de disco. Es necesaria la optimización tamaño del clúster de hardware subyacente, la
de consultas, índices y estructura de tabla para latencia de red y la aplicación que efectúa la
lograr el máximo desempeño. llamada.
Escalado Lo más sencillo es ampliar la escala con un Está diseñada para escalar horizontalmente con
hardware más rápido. Se requieren inversiones clústeres distribuidos de hardware de bajo costo
adicionales para que las tablas relacionales a fin de aumentar el nivel de procesamiento sin
abarquen un sistema distribuido. incrementar la latencia.
Solicita almacenar y recuperar datos que están Las API basadas en objetos permiten a los
comunicados mediante consultas que se ajustan a desarrolladores almacenar y recuperar
API un lenguaje de consulta estructurado (SQL). Estas fácilmente estructuras de datos en memoria.
consultas se analizan y ejecutan con RDBMS. Las claves de partición permiten que las
aplicaciones busquen pares de clave-valor,
conjuntos de columnas o documentos
semiestructurados que contengan atributos y
objetos de aplicación serializados
Herramientas Las bases de datos SQL normalmente ofrecen un Las bases de datos NoSQL suelen ofrecer
amplio conjunto de herramientas que simplifican el herramientas para administrar los clústeres y el
desarrollo de aplicaciones de base de datos. escalado. Las aplicaciones representan la
interfaz primaria de los datos subyacentes.
ACID vs BASE
ACID
Las propiedades ACID son aquellas características que debería tener toda
transacción en una base de datos. García (2016) afirma: “Una transacción es un
conjunto de instrucciones que deben ejecutarse como si fueran una sola de tal
forma que, si falla alguna y existe peligro de que la información en la base de
datos quede en un estado inconsistente, se pueda revertir y volver justo al estado
en el que se inició la transacción.”(p.9)
BASE
Las propiedades BASE con respecto a las bases de datos NoSQL permiten una
mayor disponibilidad, perdiendo la consistencia y el aislamiento, a favor de la
disponilidad y del rendimiento.
Teorema de CAP
• AP: Son las bases de datos que cumplen con la disponibilidad y tolerancia
a particiones, pero no la consistencia, al menos no de forma completa.
Algunas de ellas consiguen una consistencia parcial a través de la
replicación y la verificación.
• CP: Son las bases de datos que cumplen con la consistencia y tolerancia a
particiones. Para lograr la consistencia y replicar los datos a través de
nodos, no permite la disponibilidad.
• CA: Son las bases de datos que cumplen con la consistencia y
disponibilidad, pero poseen fallas en la tolerancia a particiones. Este
problema lo suelen gestionar replicando los datos.
Cabe recalcar que es posible tener sistemas de bases de datos que cumplan con
las tres condiciones, sino que debido a problemas de infraestructura y de dinero
no es viable su rentabilidad.
Tipos de Bases de Datos NoSQL
Se han creado varias herramientas de bases de datos NoSQL para soportar las
necesidades especificas actuales de las organizaciones, de las cuales se dividen
en cuatro categorías:
Este tipo de bases de datos almacenan información en tablas hash. Las tablas
hash son estructuras de datos que se utilizan para almacenar un número elevado
de datos sobre los que se necesitan operaciones de búsqueda e inserción muy
eficientes. Una tabla hash almacena un conjunto de pares “(clave, valor)”. La clave
es única para cada elemento de la tabla y es el dato que se utiliza para buscar un
determinado valor. [5]
DynamoDB
Herranz (2014) afirma: “El servicio de Amazon permite únicamente crear nuevas
tablas en las que alojar los datos, e interactuar con ellas mediante aplicaciones a
través de APIs (interfaces de programación que proporciona Amazon para poder
añadir, actualizar, borrar y consultar información de la base de datos.” (p.57). Es
decir, no se tiene acceso al código fuente, ni al hardware ni a los servicios que
hacen funcionar a la base de datos.
Las bases de datos documentales son muy similares a las bases de datos Clave-
valor debido a que no tienen un esquema definido, su principal diferencia con
respecto a clave-valor es en la forma de almacenamiento ya que usa archivos con
formatos JSON, XML. Otra diferencia que cabe resaltar es que la columna puede
almacenar diferentes atributos y los tipos de atributos pueden cambiar de fila en
fila.
MongoDB
“La forma que tiene MongoDB de mantener replicación entre sus nodos es a
través de lo que se conoce como replica set. Un replica set es un conjunto de
servidores que siguen una arquitectura de maestro – esclavo. Existe un servidor
maestro y uno o varios esclavos. El servidor maestro puede realizar operaciones
de escritura y lectura, pero los esclavos únicamente permiten la lectura.” Herranz
(2014, p.117)
Teniendo esto en cuenta luego MongoDB maneja el “Sharding” que según Bellido
(S.F) “El sharding hace referencia al proceso de repartir los datos de la base de
datos entremúltiples nodos. El sharding es lo que tradicionalmente se conoce
como particionado horizontal.” (p.44). Mientras que en la replicación buscar
realizar copias de los datos y repartirlos entre los nodos, el sharing busca
particionar las tablas y los distribuye entre múltiples servidores nombrados como
shards, esto a que se hace mas grandes y son más difíciles de particionar.
Este tipo de base de datos, almacenan sus datos en forma de columnas, cabe
recalcar que en las bases de datos relacionales se almacenan en filas. Se agrupan
por una clave que se utiliza para identificar el número de columnas que posea la
base de datos. Uno de sus aspectos importantes es, se gana mucha velocidad de
lectura, pero no es tan eficiente para realizar escritura, esto debido a la inserción y
actualización de los datos no es tan rápida como otras.
Cada columna contiene filas que muestra sus atributos con sus respectivos
valores, ordenados y separados por comas.
Cassandra
Implementa una arquitectura Peer-to-Peer, de esta manera hace que los nodos
sean iguales entre ellos, sin haber nodos maestro-esclavo, es decir, que no
posean permisos de escritura ni lectura, sino que todos los nodos posean las
mismas propiedades. Herranz (2014) afirma que “El diseño peer-to-peer hace que
el sistema escale de una forma mucho más sencilla, además de mejorar la
disponibilidad de los datos, ya que la pérdida de un nodo no supone una
degradación del servicio demasiado elevada. Agregar nuevos nodos al clúster se
convierte en una tarea casi trivial, puesto que todos los nodos desempeñan el
mismo rol, lo único que hay que hacer es añadir un nodo nuevo al clúster y él solo
aprenderá la topología existente en ese momento, y cuando esté preparado, se
unirá al anillo de servidores para ser un miembro más del anillo“. (p.107).
Estas bases de datos reemplazan las tablas relacionales por grafos relacionales,
es decir, que cada elemento tiene un puntero directo hacia elementos adyacentes,
por lo que no es necesario realizar consultas mediante los índices o llaves
primarias.
Las relaciones de los grafos se definen por clave-valor, por tanto, añaden más
información adicional para aplicar algoritmos en cuanto a filtros para encontrar el
camino más corto, el grado de conectividad de los nodos, o la realización de
consultas
Las siguientes expresiones definen las funciones que cumplen cada uno de estos
elementos relacionados con los grafos:
Neo4j es una base de datos basada en grafos, escrita en java que ha sido
diseñada para correr tanto en modo single-node, es decir, solamente un nodo,
como también en un modo distribuido en el que siempre existe un maestro como
nodo principal del clúster, existiendo la posibilidad de tener también cero, uno o
más esclavos.
• Las bases de datos NoSQL al ser una tecnología que maneja muchos datos
en masa y al emplearse de la mejor manera, resulta ser una herramienta
valiosa que permitirá generar valor a las organizaciones y extraer
conocimiento de ellos de forma eficiente.
• Estas bases de datos son muy flexibles y versátiles, proponiendo
soluciones a problemas que de otra manera han resultado ser difíciles de
abordar con las bases de datos tradicionales. Esta tecnología no llegará a
reemplazar las bases de datos relacionales, solo busca otras opciones para
la manipulación de datos.
• Los tipos de bases de datos NoSQL responden a las necesidades actuales,
por lo que se convierten en una alternativa, debido a su capacidad y
velocidad, que son dos principios que priman hoy en el mundo de los
sistemas.
Referencias
[1] Internet Live Stats (s.f). Internet Live Stats [Figura]. Recuperado de
https://www.internetlivestats.com/
[8] acens(2014). Bases de datos NoSQL. Qué son y tipos que podemos encontrar
[Figura]. Recuperado de https://www.acens.com/wp-content/images/2014/02/bbdd-
nosql-wp-acens.pdf
[15] BBVA API_Market(2015). Neo4j: que es y para que sirvauna base de datos
orientada a grafos. Reccuperado de https://bbvaopen4u.com/es/actualidad/neo4j-
que-es-y-para-que-sirve-una-base-de-datos-orientada-grafos