Вы находитесь на странице: 1из 33

Minería de Datos Facultad de Ingeniería

FACULTAD DE INGENIERÍA
E.A.P. DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN
Filial - Chanchamayo

“EJEMPLOS DE BASE DE DATOS EN NOSQL”

INFORME DE INVESTIGACIÓN

PRESENTADO POR:
VIVANCO IZURRAGA, Mario Antonio

RESPONSABLE:
Ing. HUAYLINOS GONZALES, Enrique Grimaldo

CHANCHAMAYO – Perú
2019
Minería de Datos Facultad de Ingeniería

I. Introducción

NoSQL, siglas que significan “Not Only SQL” se refiere a un


grupo de sistemas de bases de datos no relacionales; cuya
característica principal es que no se encuentran construidas en tablas
y generalmente no se usa lenguajes comunes del SQL para manipular
los datos. Los sistemas de bases de datos en NoSQL también por su
naturaleza tienen la utilidad en la facilidad de trabajar con grandes
cantidades de datos, uno de los requerimientos necesarios para el uso
de la Big data.

Los sistemas NoSQL se encuentran diseñados para el


almacenamiento de datos en larga escala y procesamiento de datos en
paralelo a través de varios servidores, son usados por varias
compañías reconocidas en internet como Google, Amazon y Facebook,
cuyos retos yacían en almacenamiento de grandes cantidades de datos
los cuales las RDBMS (Relational Data Base Management Systems)
no podían soportar debido a sus diseños. Los sistemas NoSQL pueden
soportar múltiples actividades de consulta y análisis de tipo predictivo
como exploratorio.

Los sistemas NoSQL se encuentran diseñadas de acuerdo por


los parámetros establecidos por el ACID (Atomicidad Consistencia
Aislamiento Durabilidad), BASE (Basic Availavility Soft state Eventual
consistency), OLTP (Online Transaction Processing) en tiempo real y
la solución OLAP (On-Line Analytical Processing) garantizando la
necesidad de las organizaciones en sistemas que puedan almacenar y
trabajar datos en cantidades descomunales.
Minería de Datos Facultad de Ingeniería

II. NoSQL

2.1. ANTECEDENTE

El termino NoSQL fue acuñado en 1998, originalmente se


refería una base de datos relacional de código abierto que no usaba
un lenguaje de consultas SQL, al principio fue un concepto el cual
no lo tomaron en cuenta, pero conforme al paso del tiempo en el
año 2009 un empleado de Rackspace Rick Evans reintrodujo el
termino en evento el cual discutía las bases de datos de código
abierto.

En la actualidad con las organizaciones que recolectan


grandes cantidades de datos sin estructurar se encuentran
migrando hacia el uso de bases de datos no relacionales, también
conocidos como bases de datos NoSQL, las bases de datos
NoSQL se enfocan en los procesos analíticos de datasets a larga
escalan ofreciendo escalabilidad en campos como la analítica en
Big Data, Inteligencia de negocios y Social Networking.

2.2. PRINCIPALES DIFERENCIAS CON LAS BASES DE DATOS


SQL

Algunas de las diferencias más destacables que nos


podemos encontrar entre los sistemas NoSQL y los sistemas SQL
están:

 No utilizan SQL como lenguaje de consultas. La


mayoría de las bases de datos NoSQL evitan utilizar
este tipo de lenguaje o lo utilizan como un lenguaje de
apoyo. Por poner algunos ejemplos, Cassandra utiliza
Minería de Datos Facultad de Ingeniería

el lenguaje CQL, MongoDB utiliza JSON o BigTable


hace uso de GQL.

 No utilizan estructuras fijas como tablas para el


almacenamiento de los datos. Permiten hacer uso de
otros tipos de modelos de almacenamiento de
información como sistemas de clave–valor, objetos o
grafos.

 No suelen permitir operaciones JOIN. Al disponer de


un volumen de datos tan extremadamente grande
suele resultar deseable evitar los JOIN. Esto se debe a
que, cuando la operación no es la búsqueda de una
clave, la sobrecarga puede llegar a ser muy costosa.
Las soluciones más directas consisten en
desnormalizar los datos, o bien realizar el JOIN
mediante software, en la capa de aplicación.

 Arquitectura distribuida. Las bases de datos


relacionales suelen estar centralizadas en una única
máquina o bien en una estructura máster–esclavo, sin
embargo, en los casos NoSQL la información puede
estar compartida en varias máquinas mediante
mecanismos de tablas Hash distribuidas.

2.3. VENTAJAS DE LOS SISTEMAS NoSQL

Esta forma de almacenar la información ofrece ciertas


ventajas sobre los modelos relacionales. Entre las ventajas más
significativas podemos destacar:

 Se ejecutan en máquinas con pocos recursos:


Estos sistemas, a diferencia de los sistemas basados
en SQL, no requieren de apenas computación, por lo
Minería de Datos Facultad de Ingeniería

que se pueden montar en máquinas de un coste más


reducido.

 Escalabilidad horizontal: Para mejorar el rendimiento


de estos sistemas simplemente se consigue añadiendo
más nodos, con la única operación de indicar al
sistema cuáles son los nodos que están disponibles.

 Pueden manejar gran cantidad de datos: Esto es


debido a que utiliza una estructura distribuida, en
muchos casos mediante tablas Hash.

 No genera cuellos de botella: El principal problema


de los sistemas SQL es que necesitan transcribir cada
sentencia para poder ser ejecutada, y cada sentencia
compleja requiere además de un nivel de ejecución aún
más complejo, lo que constituye un punto de entrada
en común, que ante muchas peticiones puede
ralentizar el sistema.

2.4. CARACTERÍSTICAS DE LAS BASES DE DATOS NoSQL

Es difícil determinar propiedades comunes para un


conjunto de tecnologías, se proponen seis características
específicas para poder encasillar a las bases de datos NoSQL.

 Escalabilidad horizontal: refiriéndose a la facilidad


añadir, eliminar o realizar operaciones con elementos
(hardware) del sistema, sin afectar el rendimiento.

 Habilidad de distribución: tiene que ver con la


escalabilidad horizontal, pero haciendo énfasis en su
soporte; para ello se tiene en cuenta la habilidad de
replicar y distribuir los datos sobre los servidores.
Minería de Datos Facultad de Ingeniería

 Uso eficiente de recursos: aprovecha las nuevas


tecnologías, como los discos en estado sólido, el uso
eficiente de recursos como la memoria RAM y los
sistemas distribuidos en general.

 Libertad de esquema: al no tener un esquema rígido se


permite mayor libertad para modelar los datos; además
facilita la integración con los lenguajes de
programación orientados a objetos, lo que evita el
proceso de mapeado.

 Modelo concurrencia débil: no implementa ACID


(Atomicity, Consistency, Isolation and Durability), que
reúne las características necesarias para que una serie
de instrucciones puedan ser consideradas una
transacción, sin emba rgo sí se tienen en cuenta
algunas consideraciones para asegurar estos
aspectos, pero no son tan estrictas.

 Consultas simples: las consultas requieren menos


operaciones y son más naturales, por la tanto, se gana
en simplicidad y eficiencia.

2.5. ASPECTOS TEÓRICOS

Para garantizar la integridad de los datos, la mayoría de los


sistemas de bases de datos están basados en transacciones. Esto
asegura la consistencia de los datos en todas las situaciones de
manejo de datos. Estas características transaccionales son
también conocidas como ACID. Aunque todas las métricas
propuestas por el ACID, no todas pueden ser cumplidas en los
sistemas de bases de datos, por eso se formula teorema de CAP
Minería de Datos Facultad de Ingeniería

como también BASE.

2.5.1. TEOREMA DE CAP

Según el teorema de CAP o teorema de Brewer


formulado por el profesor Eric Brewer en el año 1999, las
bases de datos solo pueden garantizar dos de tres
características:

Figura 1. Teorema de CAP

 Consistencia: todos los usuarios pueden ver


la misma versión de los datos incluyendo
actualizaciones o cambios en los datasets.

 Availability (disponibilidad): todos los


clientes pueden siempre encontrar al menos
una copia de los datos solicitados incluso si
uno de las maquinas en un clúster se
encuentra caído.
Minería de Datos Facultad de Ingeniería

 Partition Tolerance (Tolerancia a las


particiones): los sistemas en su integridad
mantienen sus características incluso cuando
se encuentra desplegados en diferentes
servidores, transparente al cliente.

El teorema de CAP postula que solo dos de los tres


diferentes aspectos de escalamiento pueden lograrse el
mismo tiempo, por tanto, un sistema distribuido podrá
asegurarnos:

 CP: el sistema ejecuta las operaciones de


forma consistente, aunque se pierda la
comunicación entre nodos, pero no asegura
que el sistema responda.

 AP: el sistema siempre responderá a las


peticiones, aunque se pierda la comunicación
entre nodos, pero los datos procesados
podrían faltarle la consistencia.

 CA: el sistema siempre responderá las


particiones y los datos procesados serán
consistentes, pero en este caso no se permite
una pérdida de comunicación entre nodos.
Minería de Datos Facultad de Ingeniería

El siguiente cuadro simplificara lo anterior expuesto.

2.5.2. TEOREMA DE ACID

Los dos modelos de consistencia en las bases de


datos más conocidos son ACID y BASE, ambas explican las
métricas que se deben tener al realizar una transacción
(consulta, actualizaciones, borrar) y están enfocadas en las
bases de datos relacionales (ACID) como las bases de datos
no relacionales (Base).

Según ACID transacciones de datos deben ser:

 Atómico: todo el contenido de una transacción


deberá llevarse a cabo y tener éxito, en caso
contrario no se habrá cambios en la base de
datos.

 Consistente: nada en la realización de la


transacción va a dejar la base de datos en un
estado inconsistente.
Minería de Datos Facultad de Ingeniería

 Isolated (aislado): las transacciones no


pueden interferir una de la otra, operaran de
manera independiente una de la otra.

 Durable: las transacciones completadas


deben persistir, incluso cuando los servidores
se reinicien, también implica que los cambios
hechos en la base de datos con la transacción
no se podrán deshacer.

2.5.3. TEOREMA de BASE

El modelo BASE posee un enfoque cercano al ACID


solo que en este permite mayor disponibilidad, perdiendo la
consistencia y el aislamiento, a favor de la disponibilidad y el
rendimiento.
 Basically Available: hace que el sistema aun
funcione a pesar de que alguna parte falle
debido a que el almacenamiento sigue los
principios de distribución y replicación. Los
datos no pueden ser correctos, pero aún puede
dar y aceptar respuestas

 Soft state (Estado suave): los datos se


encuentran en un constante estado de cambio,
eso significa que los nodos no tienen que estar
consistentes entre si todo el tiempo

 Eventual consistency: los datos


eventualmente serán consistentes entre todos
los nodos en todas las bases de datos, pero no
a cada transacción en todo momento. Llegará
con el tiempo a un estado consistente.
Minería de Datos Facultad de Ingeniería

III. TIPOS DE BASES DE DATOS NoSQL

Dependiendo de la forma en la que almacenen la información,


nos podemos encontrar varios tipos distintos de bases de datos NoSQL.
Veamos los tipos más utilizados.

3.1. TIPOS DE BASES DE DATOS NOSQL

3.1.1. BASES DE DATOS CLAVE VALOR

Estas bases de datos guardan objetos como


identificadores alfanuméricos y valores relacionados, en tablas
simples y autónomas (referidas como tablas de hash), los
valores pueden ser simplemente strings de texto hasta
complejas listas y sets de datos. Las búsquedas de los datos
en clave valores solo se pueden ser realizadas hacia las llaves,
pero no hacia los valores y son limitados a pares exactos.

Este tipo de base de datos permite velocidades de


consulta mayores que las bases de datos relacionales dándole
la utilidad en bases de datos masivas y que requieran alta
concurrencia, su simplicidad las hace ideales en el uso de
extracción y recuperación de datos y valores necesitados en
tareas de aplicaciones como el manejo de perfiles de usuario o
sesiones o la recuperación de características de un producto.
Minería de Datos Facultad de Ingeniería

Figura 2. Ejemplo de un registro guardado en BD clave valor

Ejemplos de bases de datos clave valor pueden ser


DynamoBD; Voldemort, Redis, BerkeleyDB, Riak, Cassandra,
BigTable o HBase.

3.1.1.1. DynamoDB

Amazon DynamoDB es un SGBD NoSQL


distribuido multi maestro con modelo de datos clave
valor. Pero es un SGBD especial, puesto que lo que
Amazon ofrece realmente es el servicio de base de
datos de manera totalmente gestionado (Amazon 2012).

DynamoDB es un SGBD propietaria


desarrollada internamente por Amazon y lanzada allá
por 2007, que se incluye dentro de la oferta de servicios
que se ofrecen como parte de los AWS (Amazon Web
Services).
Minería de Datos Facultad de Ingeniería

a) Características principales

El servicio de Amazon permite únicamente crear


nuevas tablas en las que alojar los datos, e interactuar
con ellas mediante tus 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). 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.

b) Arquitectura

DynamoDB ha sido implementado como un


sistema particionado con replicación y ventanas muy
concretas de consistencia (DeCandia, et al. 2007). Está
hecho de esta manera para poder ofrecer una alta
disponibilidad a cambio de una consistencia eventual.

Además, DynamoDB ha sido diseñado para


estar siempre disponible para escribir, es decir, en
cualquier momento en cualquier nodo se puede realizar
una escritura en base de datos. Ya se encargará más
adelante el sistema en hacer consistente esa lectura con
el resto de nodos.

El diseño de la base de datos ha sido pensando


en un esquema de replicación que incluso permita
escribir teniendo errores de comunicaciones entre las
máquinas, dejando la consistencia inmediata entre
servidores en un segundo plano. Por eso es que se dice
que DynamoDB es una base de datos altamente
disponible para escrituras.
Minería de Datos Facultad de Ingeniería

3.1.1.2. Redis

Redis es un Sistema Gestor de Bases de Datos


en memoria de conjuntos clave – valor, que además
permite persistir los datos que residen en memoria a
disco.

El origen del nombre de la base de datos, Redis,


es el acrónimo de REmote DIctionary Server. Redis
funciona de forma similar a como lo hacen el resto de los
SGBD clave - valor, presentando una serie de ventajas
sobre éstas.

Memcached es un tipo de base de datos similar


en el sentido de que es un sistema de almacenamiento
clave – valor, que almacena datos únicamente en
memoria. Esto significa que cuando un nodo que tiene
información del clúster almacenada se apaga, esta
información se pierde.

Redis, a diferencia de Memcached, extiende la


funcionalidad de éste permitiendo persistir los datos que
aloja a disco, de tal manera que, si un nodo se apaga,
siempre podría recuperar la última información que haya
escrito previamente a disco. Otra de las funcionalidades
comunes para las que se emplea esta base de datos es
la de gestionar su almacenamiento como si fuera un
gestor de colas.

Un gestor de colas es un sistema que permite


controlar y planificar el uso de recursos de un sistema.
Por ejemplo, en el caso de una aplicación muy pesada
como pueda ser un servicio que grabe videos y los
procese: los redimensione, realice copias, etc. Este
Minería de Datos Facultad de Ingeniería

proceso puede llevar minutos o incluso horas. Mediante


un gestor de colas, el agente encargado de grabar los
videos encolaría los trabajos una vez filmados y los
servidores dedicados a realizar el trabajo irían
abordándolos a medida que van quedando libres.

Redis es utilizado por algunas de las empresas


más importantes del panorama actual de internet, como
Twitter, GitHub, Weibo, Digg, Hulu, StackOverflow,
Instagram o Tumblr, y forma parte de muchos proyectos
de software libre como una pieza que aporta un
componente de colas o persistencia en, por ejemplo, el
gestor de logs centralizado Logstash o el sistema de
monitorización Sensu.

a) Características principales

 Tipos de datos: Redis es capaz de reconocer y


manejar cinco tipos de datos diferentes, lo cual
es una ventaja con respecto a otras bases de
datos que únicamente trabajan con cadenas de
caracteres (String). Esto le da ventaja en lo que
a manejo de los datos y almacenamiento de los
mismos se refiere.

Los tipos de datos son:


 String
 Set
 Hash
 List
 Sorted Set

En la sección Modelo de Datos en la que se


describe el modelo de datos con mayor
Minería de Datos Facultad de Ingeniería

profundidad, se expondrán distintos ejemplos de


utilización de estos tipos de datos.

Poder manejar varios tipos de datos de forma


nativa otorga al sistema diversas ventajas. Cada
uno de ellos ofrece una serie de métodos para
acceder y manipular la información que
almacena. Dependiendo del tipo de uso que se
le vaya a hacer a esos datos. Redis da la opción
de elegir que estructura se adapta mejor a las
necesidades

 Usos del SGBD Redis es un SGBD con multitud


de aplicaciones prácticas. Se puede hacer uso
de sus distintos tipos de datos para gestionar un
ranking, listas de contactos, un sistema de
puntuaciones, etc. Se puede utilizar como
sistema de cachés puro en memoria sin ningún
tipo de opción de persistencia, o con ella
activada pero únicamente desempeñando
funciones de cacheado intermedio.

También se puede utilizar como sistema de


colas para desacoplar las llamadas del front de
una aplicación hacia la capa de servicios, para
encolar trabajos pesados y no tener que esperar
una respuesta síncrona, etc.
b) Arquitectura

La funcionalidad básica de Redis es el de servir


como motor de base de datos en memoria. Esto le
confiere una velocidad y unos tiempos de respuesta que
quedan lejos de los sistemas de bases de datos
tradicionales y de otro tipo de sistemas NoSQL.
Minería de Datos Facultad de Ingeniería

Que sea una base de datos en memoria significa


que cuando un dato es añadido, modificado o
consultado, el lugar donde ir a añadir, modificar o leer
esta información directamente a disco, lo que hará será
utilizar la memoria principal como elemento de
almacenamiento principal.

La persistencia de estos datos es un proceso


automático que recoge los datos que se están utilizando
en memoria y realiza un volcado a disco, de tal forma
que, en caso de apagado de la máquina, esos datos no
se pierdan y el tiempo de recuperación del servidor para
el clúster sea menos costoso.

3.1.2. BASES DE DATOS BASADAS EN COLUMNAS

Como las bases de datos basadas en documentos, las


bases de datos basadas en columnas emplean una estructura
de datos orientada en columnas en vez de filas, la cual
acomoda varios atributos por llaves, los datos son separados y
almacenados en familias de columnas, cada columna es un
índice para búsqueda y todos los datos en la columna tienen
un mismo tipo para acceso concurrente, todo con el objetivo de
que en una consulta sea más fácil y que puedan ser realizados
en un mismo proceso.
Minería de Datos Facultad de Ingeniería

Figura 3. Ejemplo de registros guardados en DB de columnas

Las ventajas principales de guardar datos en columnas


sobre los RDBMS yacen en el rápido acceso como búsqueda
e inserción de datos, en el caso de las filas estas son
guardadas en diferentes lugares de un disco mientras las bases
de datos en columnas guardan continuamente los datos en una
entrada, facilitando los procesos de búsqueda y acceso.

Ejemplos de bases de datos basadas en columnas


pueden ser Bigtable, HBase, Cassandra, SimpleDB,
DynamoDB
Minería de Datos Facultad de Ingeniería

3.1.2.1. HBase

HBase fue concebida inicialmente a partir de los


artículos que liberó Google sobre BigTable allá por 2004.
Se podría decir que HBase es la implementación Open
Source del proyecto Bigtable de Google.

HBase es un software construido sobre Hadoop,


sin el cual no podría funcionar a día de hoy. Hadoop
confiere a HBase una característica indispensable en su
modelo de datos: la capa de almacenamiento que
proporciona disponibilidad y fiabilidad (HDFS), mientras
que la otra capacidad de Hadoop, el entorno de
computación de alto rendimiento (MapReduce)
frecuentemente es utilizado junto con HBase para
acceder a la base de datos y tratar datos en ella.

a) Características principales

HBase es una base de datos distribuida,


persistente, dispersa y ordenada en un mapa
multidimensional. Una celda de esta base de datos viene
definida por una clave primaria de fila (rowkey), por una
clave de columna (columnkey) y una marca de tiempo
(timestamp).

b) Arquitectura

La arquitectura de HBase sigue un modelo


tradicional Maestro-Esclavo. Típicamente, el clúster
posee un nodo maestro denominado HMaster, y uno o
más servidores esclavos, conocidos como
HRegionServer, servidores que a su vez son capaces de
gestionar una o varias regiones, HRegion.
Minería de Datos Facultad de Ingeniería

3.1.2.2. Cassandra

Cassandra es un almacén clave valor, altamente


escalable, distribuido y eventualmente consistente.

Cassandra es similar a DynamoDB con respecto


a la consistencia eventual que implementa en su
sistema, y a la vez, toma prestados de Google y de su
proyecto BigTable el modelo de datos estilo columnar.

Cassandra ha sido concebido e inicialmente


desarrollado por Facebook hasta que su código fue
liberado en el año 2008. Desde 2010 forma parte de los
proyectos de primer nivel de Apache.

Cassandra fue inicialmente ideado para mejorar


la barra de búsqueda de la popular red social Facebook,
y uno de sus creadores originales, Avinash Lakshman,
llegó de trabajar directamente con Amazon, formando
parte del grupo de ingenieros que dio forma a
DynamoDB.

Actualmente Cassandra se utiliza en varios de


los sitios más conocidos y con más necesidades en
cuanto a tráfico y almacenamiento tienen en el mundo,
como, por ejemplo, Netflix, Ebay, Spotify, Twitter,
Reddit, SoundCloud o Digg entre otros.

a) Características Principales

Cassandra, al tener un modelo de datos tan


similar al presentado por Google en BigTable, comparte
muchas de las características con las que se han
expuesto en el apartado anterior de HBase. Aunque
Minería de Datos Facultad de Ingeniería

como se verá, a nivel arquitectónico son dos sistemas


muy diferentes, por lo que resulta interesante analizarlas
por separado (Lakshman and Malik 2009).

Se puede afirmar que Cassandra y HBase son


las dos bases de datos orientado a columnas que más
se utilizan de todas las existentes.

b) Arquitectura

Espacio de Claves: Cassandra mantiene un


espacio en la base de datos llamado system que utiliza
para gestionar la información sobre los metadatos. Este
esquema almacena metadatos relacionados con el nodo
local, como, por ejemplo: el token del nodo, el nombre
del clúster, el espacio de claves, la definición del
esquema, etc.
Concretamente, existen dos column families
importantes. Una gestiona el espacio de claves del
usuario y las definiciones de los esquemas, y el otro los
cambios que se hacen sobre el espacio de claves. Son
las column families: Schema y Migrations.

Peer to Peer: El modelo que propone


Cassandra es un modelo basado en la comunicación
peer-topeer entre nodos. De esta manera se consigue
que todos los nodos sean funcionalmente idénticos entre
ellos. Es decir, no existe un maestro que controle las
escrituras, o cierta parte del clúster.
De este modo, el diseño peer-to-peer hace 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.
Minería de Datos Facultad de Ingeniería

3.1.3. BASES DE DATOS DOCUMENTALES

Este tipo de bases de datos se encuentran diseñadas


para manejar y guardad documentos, parecidos en estructura
al modelo clave-valor, pero su principal diferencia son los tipos
de datos que se guardan los cuales son archivos en formatos
XML, JSON (JavaScript Option Notation) o raramente BSON
(Binary JSON), otra de las diferencias encontradas con las
bases de datos clave-valor es que la columna de valores
contiene datos semi estructurados. Una sola columna puede
guardar cientos de atributos y los tipos de atributos
almacenados pueden variar en gran medida de fila en fila,
comparados con el almacenamiento de clave-valor, las llaves y
los valores se pueden encontrar en las bases de datos
documentadas.

Las Bases de datos documentales tienen una ventaja


en el almacenamiento y manejo de colecciones de documentos
como textos, mensajes de correo electrónico e incluso
representaciones sin normalizar de una entidad de bases de
datos como un producto a un usuario. También son buenos en
almacenar datos irregulares en general, de tal manera que, con
una base de datos relacional, se terminaría poniendo valores
nulos si se tratase de identificar en una tabla convencional.
Minería de Datos Facultad de Ingeniería

Figura 4. Comparación de bd relacional con bd documental

Algunos ejemplos de este tipo son MongoDB o


CouchDB.

3.1.3.1. MongoDB

MongoDB es un sistema de base de datos


NoSQL en multiplataforma de licencia libre, es una base
de datos basado en documentos, lo que implica que
cada registro puede tener un esquema de datos distinto,
la filosofía de diseño de MongoDB está enfocada en
combinar las capacidades críticas e importantes de las
bases de datos relacionales con las innovaciones de las
tecnologías NoSQL.

Es una solución pensada para mejorar la


escalabilidad horizontal de la capa de datos con un
desarrollo más sencillo; MongoDB cuenta con una serie
de herramientas que permiten trabajar con la base de
datos desde diferentes perspectivas, y tratar con ella
para diferentes propósitos.
Minería de Datos Facultad de Ingeniería

 Mongod: Servidor de bases de datos de


MongoDB

 Mongo: Cliente para la interacción con la


base de datos MongoDB

 Mongofiles: Herramienta para trabajar con


ficheros directamente sobre la base de
datos MongoDB.

a) Características Principales

 Indexado. MongoDB soporta índices


secundarios, permitiendo una buena aceleración
en muchas querys, pudiendo indexar cualquier
campo de la base de datos.

 Agregación. MongoDB viene con muchas


funciones predefinidas que facilitan en gran
medida el tratamiento de las colecciones
almacenadas.

 Replicación y Balanceo de Carga. MongoDB


utiliza un sistema de replicación empleando la
arquitectura maestra – esclavo con el resto de
máquinas. Además, hace uso de un tipo de
particionado horizontal llamado sharding. Estas
dos herramientas de escalado hacen de mongo
una herramienta poderosa cuando se trata de
crecer mucho en poco tiempo.
Minería de Datos Facultad de Ingeniería

b) Arquitectura

 Replicación: La replicación en MongoDB


adquiere un papel fundamental. Se llama
replicación al proceso de sincronización de datos
entre múltiples servidores. Básicamente consiste
en tener copias idénticas de los datos en varios
servidores.
Pueden existir varios motivos por los cuales se
podría querer tener un entorno replicado de base
de datos: incrementar la capacidad de lectura,
proteger la base de datos de diferentes posibles
caídas de servidores, backup, incrementar la
localización y la disponibilidad de la información,
etc.
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. Además, existen varios tipos
de esclavos, cada uno de ellos con una serie de
funciones y competencias (10gen 2014).

 Sharding: MongoDB utiliza el método de


Sharding para dividir los datos a lo largo de
múltiples servidores de una solución, una tare que
también la realizan las bases de datos
relacionales.
Un shard son uno o varios servidores en un
clúster que son responsables de un subconjunto
Minería de Datos Facultad de Ingeniería

de datos, (un clúster con 1.000.000 de


documentos, un shard por ejemplo con 200.000).
En el caso de que el shard esté compuesto por
más de un servidor, cada uno de estos tendrá una
copia idéntica del subconjunto de datos. Para
distribuir uniformemente los datos, MongoDB
mueve los subconjuntos de shard en shard en
base a una clave que debemos elegir. MongoDB
también tiene una herramienta de balanceo, es un
proceso de MongoDB para equilibrar los datos en
un sistema. Mueve porciones de datos de un
shard a otro, de manera automática.

Figura 7. Sharding de MongoDB

MongoDB puede automatizar las consultas para


evaluación de la manera más eficiente como sea
posible. En la evaluación normalmente incluye la
selección datos basados en predicados y el
ordenamiento de datos basados en los criterios de
clasificación proporcionados.

La consulta de optimización selecciona el mejor


índice para usar periódicamente ejecutar planes de
consulta alternativos y seleccionar el índice con el mejor
Minería de Datos Facultad de Ingeniería

tiempo de respuesta para cada tipo de consulta. Los


resultados de esta prueba se almacenan como un plan
de consulta en caché y se actualizan periódicamente.
Los consultores de la base de datos pueden revisar y
optimizar los planes utilizando el poderoso método de
explicación y filtros de índice.

3.1.4. BASES DE DATOS ORIENTADAS A GRAFOS

Las bases de datos orientadas a grafos remplazan las


tablas relacionales con grafos relacionales estructuradas de
pares llave-valor. Son similares a las bases de datos orientadas
por objetos en el hecho que los grados se representan como
una red de nodos orientada en objetos, la información se
almacena partiéndola en fragmentos más básicos y
estableciendo relaciones entre ellas, cada uno de los nodos
tienen relaciones (edges) y propiedades (atributos de objetos
expresados como pares clave-valor).

En general las bases de datos basados en grafos son


de gran utilidad, en el caso de buscar las relaciones entre los
datos que los datos en sí mismos como por ejemplo la
representación de redes sociales, investigaciones forenses
para la detección de patrones.
Minería de Datos Facultad de Ingeniería

Figura 5. Ejemplo de registros guardados en BD en grafos

Algunos ejemplos de este tipo son Neo4j, InfoGrid


Sones GraphDB, AllegroGraph, InfiniteGraph, Virtuoso.

3.1.4.1. Neo4j

Neo4j es una base de datos basada en grafos.


Neo4j está escrita en Java y es desarrollada por la
empresa Sueca Neo Technology. Neo4j es
probablemente la base de datos basada en grafos más
conocida y más utilizada de todas.

La principal característica de las bases de datos


orientadas a grafos es que están especialmente ideadas
para representar relaciones entre datos y datos
conectados.

Las bases de datos orientadas a grafo son,


probablemente, las que más difieren del resto de bases
de datos NoSQL, primero porque abordan su diseño (el
diseño de la propia base de datos) de una forma
completamente distinta, y segundo porque de entre
Minería de Datos Facultad de Ingeniería

todas las bases de datos NoSQL son las que,


probablemente, más se parezca en su manera forma de
realizas las operaciones a las bases de datos
relacionales.

a) Características principales

Los beneficios que nos aportan los grafos


aplicados al campo de las bases de datos, se encontrará
una mejora en un conjunto de casos de uso para los
cuales aplicar una solución orientada a grafos nos
mejora en varios órdenes de magnitud el rendimiento, o
que nos proporciona una latencia mucho más baja
comparándola con otras soluciones NoSQL (Neo
Technology 2014).

Rendimiento: La principal ventaja a nivel de


rendimiento que se puede obtener de las bases de datos
orientadas a grafos es cuando se parte de la base de
que los datos que se van a almacenar poseen relaciones
entre sí o están conectados de alguna manera. Además,
en lo que respecta concretamente a los tiempos de
consulta, las bases de datos relacionales habitualmente
comienzan a arrojar tiempos muy elevados en el
momento en el que se hace un uso intensivo de
sentencias join. Esto es debido a que los tiempos de
respuesta se deterioran en gran medida a medida que la
base de datos se va haciendo más y más grande.

b) Arquitectura

Alta disponibilidad: Neo4j ha sido diseñado


para correr tanto en modo single-node como en un modo
distribuido en el que siempre existe un maestro como
Minería de Datos Facultad de Ingeniería

nodo principal del clúster, pudiendo existir también cero,


uno o más esclavos. La lógica que se sigue en este
apartado de Neo4j es muy similar a la que siguen otras
bases de datos como, por ejemplo, MongoDB.

La estructura que sigue Neo4j para proporcionar


al sistema de alta disponibilidad es similar a la que se
suele emplear de maestro-esclavo, con la salvedad de
que todos los nodos del sistema pueden recibir
operaciones de escritura, y no solo el maestro. Esto se
verá en profundidad más adelante.

Cada nodo contiene la lógica necesaria para


coordinarse y comunicarse con el resto de miembros del
clúster. Cuando un nodo arranca, examinará sus
ficheros de configuración. Si pertenece ya a un clúster,
pasará a formar parte del mismo como esclavo. En caso
de que pertenezca a un clúster que no exista, se creará
y se colocará como maestro.

Cuando un esclavo se hace cargo de una


escritura en el sistema, de forma síncrona deberá
escribirla también en el maestro. Recordar que será este
último el encargado de replicar la información por el
resto de esclavos del sistema.

Tras haber recibido la orden de escritura, la


operación se realizará síncronamente entre el esclavo y
el maestro. Para ello, el esclavo debe estar
completamente actualizado con el maestro, es decir,
mantener exactamente las mismas bases de datos. Una
vez que el maestro haya finalizado su escritura, el
esclavo comenzará su transacción.
Minería de Datos Facultad de Ingeniería

IV. Conclusiones

Las bases de datos NoSQL son una tecnología muy potente y


variada que, si se sabe emplear de forma correcta, resulta ser una
herramienta valiosísima que permitirá almacenar grandes cantidades de
datos y extraer conocimiento de ellos de forma eficiente.

Las características que plantean las bases de datos NoSQL


responden a las necesidades actuales de las diferentes organizaciones,
por lo que se convierten en una alternativa a las tradicionales bases de
datos, debido a su capacidad y a la velocidad, que son dos principios
que priman hoy en el mundo de los sistemas.

Al movimiento NoSQL le queda mucho camino por delante; las


tecnologías tienen que madurar, y para ello se hace necesaria la
participación de la comunidad académica; por esto el presente trabajo
es un punto de partida para conocer del tema y comenzar a vincularse y
tener en cuenta este movimiento.
Minería de Datos Facultad de Ingeniería

V. Bibliografía

 Leavitt, N. (2010). Will NoSQL databases live up to their promise?


Computer,43(2), 12-14

 Abadi, D. J. (2009). Data management in the cloud: Limitations


and opportunities. IEEE Data Eng. Bull, 32(1), 3-12.

 R. Cattell, (2010) "Scalable SQL and NoSQL


Data Stores," ACM SIGMODRecord, vol. 39.

 I. Pérez, B. León (2007). Lógica difusa para principiantes 1ra ed.


Caracas: Texto C.A.

 Microsoft SQL Server: Databases de la


página web:
http://www.microsoft.com/enus/sqlserver/default.aspx

 brewers-cap-theorem-on-distributed-systems de la
página web:
https://www.royans.net/wp/2010/02/14/brewers-cap-theorem-on-
distributed- systems/

 Henry F. Henry F. Korth, Abraham (2006) “Fundamentos de Bases


de Datos”. McGraw-Hill.
Minería de Datos Facultad de Ingeniería

 Bases de datos NoSQL: arquitectura y ejemplos de aplicación


de la página web:
https://earchivo.uc3m.es/bitstream/handle/10016/22895/PFC_rau
l_herranz_gomez_2014.p df

 Mongo DB Achitecture Guide encontrado en la


página web:
https://jira.mongodb.org/secure/attachment/112939/MongoDB_Ar
chitecture_ Guide.pdf.

Вам также может понравиться