Está en la página 1de 46

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


DIRECCIÓN DE POSGRADO

“NoSQL la Nueva Generación de Base de Datos”

TRABAJO FINAL PRESENTADO PARA OBTENER EL CERTIFICADO


DE DIPLOMADO EXPERTO EN DESARROLLO DE APLICACIONES
EMPRESARIALES VERSIÓN I
.

POSTULANTE : ZAMBRANA ALDUNATE NELIO FARID


TUTOR : MSc. MARÍA ANGÉLICA CLAURE FUENTES

Cochabamba – Bolivia
2018
Agradezco a Dios y a mis padres, que han

dado todo el esfuerzo para que yo ahora

este culminando esta etapa de mi vida y

ser un orgullo para ellos, a mi esposa e

hijas darles las gracias por apoyarme y

comprenderme en todos los momentos

difíciles de mí vida, agradezco a mis

maestros y docentes por brindarme

sabiduría para ser un gran profesional.


ÍNDICE

Resumen……………..…………………………………………………………………………………... 4

Introducción……………………...……………………………………………………………………… 5

1 GENERALIDADES…………………….………………………………………………………….. 6

1.1 Antecedentes……………………….……………………………………………………….. 6

1.2 Formulación del Problema…………………………………………………………………6

1.3 Alcance…………………………………………...………………………………………… 7

1.4 Objetivo General…....………………………………….…………………………………… 7

1.5 Objetivos Específicos..………………………………..…………………………………… 7

1.6 Justificación……….....……………………………………………………………………… 8

2 METODOLOGÍA………………………………………………………………..…………………. 9

2.1 Método Bibliográfico..……………………………………………………………………… 9

3 BASES DE DATOS RELACIONALES…………………………………………………..…... 10

3.1 ¿Qué son las BD Relacionales?...……..……….……………………………….……… 10

3.2 Aspectos importantes de las bases de datos Relacionales..………………………10

3.3 Características principales en bases de datos Relacionales………………………11

3.4 ¿Por qué usar una base de datos Relacional?....…………………………….....……11

3.5 ¿Cuándo usar una base de datos Relacional?...………………………………..……11

3.6 Motor de base de datos Relacional…………….…………………………………….…12

4 BASES DE DATOS NoSQL..…………………………………………………………....………13

4.1 ¿Qué son las BD NoSQL?..................……….………………………………….……… 13

4.2 Características principales en bases de datos NoSQL …………………….……… 13

4.3 ¿Por qué usar una base de datos NoSQL?........………………………………...……13

4.4 ¿Cuándo usar una base de datos NoSQL?.....…………………………………..…… 14

5 PRINCIPALES BASES DE DATOS NoSQL………………………………………………….. 15

5.1 Bases de Datos orientadas a Clave-Valor…………………………………………….. 15

1
5.2 Bases de Datos Orientadas a Columnas….……….………………………………..…16

5.3 Bases de Datos Orientadas a Documentos….…….……………………………….… 18

5.4 Bases de Datos Orientadas a Grafos…………………………………………..……… 20

6 BASES DE DATOS NoSQL MÁS UTILIZADAS EN LA ACTUALIDAD……………...…. 22

6.1 MongoDB ……………………………… ………………………………………………….. 22

6.1.1 Funcionamiento de MongoDB ….………………………………………….… 23

6.1.2 Uso de MongoDB ….…………………………………………………………… 24

6.1.3 ¿ Dónde no usar MongoDB? ..……. ….……………………………………… 24

6.1.4 Instalación de MongoDB ………..……………………………………….…… 24

6.2 Cassandra……………………………… ……………………………………………….… 25

6.2.1 Funcionamiento de Cassandra ….………………………………………..… 26

6.2.2 Uso de Cassandra ….……………………………………………………..…… 27

6.2.3 ¿ Dónde no usar Cassandra?.....…. ….……………………………………… 27

6.2.4 Instalación de Cassandra ……..……………………………………………… 28

6.3 Redis…….……………………………….………………………………………………..… 28

6.3.1 Funcionamiento de Redis……..….…………………………………………… 29

6.3.2 Uso de Redis ……….…………………………………………………………… 30

6.3.3 ¿Dónde no usar Redis?..........................………………………………………31

6.3.4 Instalación de Redis .…………..……………………………………………… 32

7 CUADROS COMPARATIVOS 34

8 CONCLUSIONES……………………………………………………………………………..… 39

9 BIBLIOGRAFÍA………………………………………………………………………………….. 41

10 ANEXOS………………………………………………………………………………………….. 43

2
ÍNDICE DE CUADROS Y FIGURAS

CUADROS

Cuadro 1. Motores más comunes de BD Relacionales...………..…..…….…………………... 12

Cuadro 2. Listado Clave-Valor..………………………………………………..…………………... 16

Cuadro 3. Bases de Datos orientado a Objetos..…….………………………….……………… 17

Cuadro 4. Comparativa entre las Bases de Datos Relacionales y las NoSQL….………… 34

Cuadro 5. Cuando usar las Bases de Datos Relacionales y las NoSQL………….………… 36

FIGURAS

Figura 1. Base de Datos orientado a Objetos.………………………………..…………….…... 21

Figura 2. Modelo de datos en MongoDB.……..………………………………..……….............. 23

Figura 3. Modelo de datos en Cassandra.……..…………………………………..…………….. 26

Figura 4. Estructura de Redis.…………..……..……………………………………..…………..... 33

Figura 5. Funcionalidades de NoSQL y las Bases de Datos Relacionales..……………….. 36

Figura 6. Diferencias entre las Bases de Datos Relacionales y NoSQL..…………………... 37

Figura 7. Teorema CAP…...………….…..……..……………………………………..…………….. 38

3
Resumen

Las bases de datos NoSQL1, forman una agrupación dentro de las bases de datos,
diferenciándose de las demás al no seguir al modelo de bases de datos relacionales y sus
propiedades.

Las bases de datos NoSQL hacen referencia a variedad de bases de datos que tienen el
propósito de solventar algunas limitaciones que el modelo relacional presenta, se caracterizan
por no tener esquemas, no usan SQL2 como parte fundamental en el lenguaje de consultas, no
aseguran cumplir con la propiedad ACID3, los datos almacenados en una BD4 no requieren
necesariamente cumplir con estructuras fijas como tablas, por lo regular no sostienen
5
operaciones de tipo JOIN y tienden a tener un escalamiento horizontal, ocupan un extenso
recurso de la memoria principal del ordenador, solventan las dificultades en el elevado volumen
de información y las innumerables cantidades de consultas y transacciones que se realizan de
forma diaria.

1,2,3,4,5.Ver Glosario de Acrónimos en Anexos

4
Introducción

La expresión NoSQL denota las palabras en Ingles Not only SQL. Se usa para asociar
sistemas de administración de bases de datos distintos a los acostumbrados relacionales. Los
conceptos de Big Data, Big Users, y Cloud Computing han impulsado intensamente el
crecimiento de la tecnología NoSQL.

Con el paso del tiempo algunas compañías como Google, Facebook, Amazon, Mozilla, Adobe,
McGraw-Hill Education, Linkedln descubrieron limitaciones en el uso de la tecnología relacional
y optaron por desarrollar sus propios sistemas. Con la iniciativa de apoyar estos proyectos se
desarrollaron proyectos de código abierto y otros comerciales.

La expresión NoSQL tuvo fuerza en 1991 en un artículo especial de Unix y más adelante en
1998 se lo nombró para referenciar a una base de datos open-source, esta se caracterizaba
por no usar una interface SQL, sin embargo seguía el modelo relacional. Posteriormente en el
año 2009, se reutilizó la expresión en un evento enfocado a las bases de datos no relacionales
dirigido por Eric Evans, a partir de ese entonces las tecnologías NoSQL empezaron a tener una
aceptación y crecimiento considerable.

Por lo general los sistemas convencionales relacionales se inclinaron por implementar en un


mismo sistema una gran variedad de propiedades como tener un modelo relacional de datos,
lenguajes de consulta declarativos, control en las transacciones, eficiencia, concurrencia,
seguridad y permanente almacenamiento en grandes cantidades de datos, en su mayoría no
requeridas para algunos sistemas.

En la actualidad los nuevos requerimientos necesitan tener: disponibilidad total, flexibilidad a


fallos, almacenamiento masivo de información distribuida en cientos de servidores, buen
rendimiento sin límites y con progresión lineal, gestión de datos masivos estructurados y no
estructurados, nuevos procedimientos de consultas, independencia y control a la hora de
gestionar nuevos esquemas y datos.

5
1 GENERALIDADES

1.1 Antecedentes

Con el avance de la tecnología, la cantidad de la información en los últimos años se incrementó


exageradamente, estimulando la creación de nuevas soluciones a los problemas provocados
por este crecimiento gigantesco de información, debido a que en los distintos portales web, los
usuarios ya no son solo espectadores si no que ahora participan activamente añadiendo
información a través de formularios, videos, comentarios, imágenes, etc., es por ello la
aparición de un nuevo tipo de BD. 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.[1]

Son cientos de aplicaciones web que utilizan algún tipo de bases de datos para estar
funcionales en la red. Hasta ahora en su mayoría estamos habituados a utilizar en nuestras
aplicaciones bases de datos SQL como ser: MySQL, Oracle, MS SQL, entre otras, sin embargo
desde hace algunos años han aparecido otras que reciben el nombre de NoSQL y que han
llegado con la intención de subsanar aquellas falencias que tienen las BD relacionales.
Brindando la posibilidad de que las empresas usen modelos híbridos por que puede darse la
situación donde una BD Relacional no satisfaga las necesidades y una BD NoSQL si lo haga o
viceversa.

1.2 Formulación del Problema

Los nuevos requerimientos para manipulación de una BD en la época actual requieren:


disponibilidad total, flexibilidad a fallos, almacenamiento masivo de información distribuida en
cientos de servidores, buen rendimiento sin límites y con progresión lineal, gestión de datos
masivos estructurados y no estructurados, nuevos procedimientos de consultas, independencia
y control a la hora de gestionar nuevos esquemas y datos.

Las Bases de Datos NoSQL surgen para solventar estos nuevos requerimientos proponiendo
una estructura de almacenamiento más versátil, aunque logren este objetivo descuidando
funcionalidades importantes como las transacciones y operaciones en diferentes colecciones
de datos.

6
1.3 Alcance

El presente proyecto hará un análisis de las BD NoSQL vs las BD relaciones en términos


generales y no así de otro tipo de Base de Datos.

Mostrará las características más relevantes y se darán ejemplos de los diferentes tipos de
DBMS6 NoSQL agrupados en:

 Almacenamientos clave-valor
 Almacenamientos de documentos
 Almacenamientos de Columnas
 Bases de Datos de grafos

1.4 Objetivo General

Elaborar una monografía de compilación para evidenciar las tendencias actuales en cuanto al
uso de BD para manejo de grandes volúmenes de información en la WEB.

1.5 Objetivos Específicos

 Estudiar características de BD NoSQL


 Estudiar características de BD relacionales
 Elaborar cuadros comparativos entre BD NoSQL y BD relacionales
 Mostrar las características más relevantes de los diferentes tipos de Sistemas de
Administración de Bases de Datos NoSQL

6. Ver Glosario de Acrónimos en Anexos


7
1.6 Justificación

En un mundo de constantes cambios a nivel de sistemas, es necesario volver a pensar acerca


de los paradigmas que maneja la industria. Se necesita ajustar herramientas a las necesidades
reales que se tiene hoy en día con el fin de tener sistemas cumpliendo con éxito todos los
requerimientos.

En el campo de los datos, este cambio fue detenido. Desde que en 1970 Edgar F. Codd publicó
sobre bases de datos relacionales, este paradigma ha dominado el panorama de los datos
sobre los sistemas. Su longevidad es debido en gran parte a que es un modelo bien fundado en
bases matemáticas, que puede representarse fácilmente usando algoritmos computacionales.
Gracias a esto existe una oferta amplia de RDBMS7, hecho que a su vez ha llevado a los
desarrolladores a usarlos en prácticamente todas sus aplicaciones.

Aun así, se llegó a un punto en que seguir usando bases de datos relacionales para todos los
casos es simplemente inviable. Existen varios problemas, para escalar un sistema cada vez se
necesita escalar servidores costosos, pues, las BD hacen un escalamiento vertical, que hace
que la escalación de los sistemas resulte simplemente no rentable debido a que se debe
aumentar recursos al mismo hardware, como por ejemplo aumentar memoria etc., en cambio
las BD NoSQL hacen un escalamiento horizontal lo cual es más viable económicamente
hablando por que se agrega ordenadores con las mismas características en recursos.

Las bases de datos NoSQL de código abierto tienen una implementación rentable. Debido a
que no requieren las tarifas de licencia y pueden ejecutarse en hardware de precio bajo.

7. Ver Glosario de Acrónimos en Anexos

8
2 METODOLOGÍA

2.1 Método Bibliográfico

El método que se utilizó para elaborar esta monografía es el método Bibliográfico que,
constituye una metodología de investigación y recolección de información de diferentes autores
para formar un recopilado general acerca de la nueva generación de Bases de Datos NoSQL, la
finalidad es la integración de las descripciones de diferentes autores que tienen diferentes
conceptos o experiencias en el uso de bases de Datos Relacionales y las Bases de Datos
NoSQL que son las que estudiaremos en esta presente monografía.

En este documento se hace una comparación entre las Bases de Datos Relacionales con las
Bases de Datos NoSQL, enfocándonos en su concepto, funcionalidad, características y sus
diferentes tipos de Bases de Datos NoSQL que existen.

Con toda la información obtenida de las Bases de Datos Relacionales y las Bases de Datos
NoSQL se desarrolla un análisis comparativo de las características, funcionalidades y el uso
recomendado para este tipo de Base de Datos, con el objetivo de orientar de manera clara
acerca del correcto uso de Base de datos acorde a cada proyecto de software.

9
3 BASES DE DATOS RELACIONALES

3.1 ¿Qué son las BD Relacionales?

Las Bases de Datos Relacionales son una colección de elementos de datos relacionados
entre sí. Estos elementos están organizados en un conjunto de tablas compuesto por columnas
y filas. Las tablas están diseñadas para guardar información referente a los objetos de las
bases de datos. Cada columna de una tabla almacena un determinado tipo de dato y un campo
almacena el valor real de un atributo. Las filas de la tabla representan una recopilación de
valores relacionados de un objeto o entidad. Cada fila de una tabla podría marcarse con un
identificador único denominado clave principal, mientras que filas de varias tablas pueden
relacionarse con claves extranjeras. Se puede obtener acceso a estos datos de muchas formas
distintas sin reorganizar las propias tablas de la base de datos.[2]

3.2 Aspectos importantes de las bases de datos relacionales

SQL o conocido como lenguaje de consulta estructurada es la interfaz principal que se utiliza
para comunicarse con bases de datos relacionales.

Las bases de datos relacionales para aplicar la integridad de los datos en la base de datos
utilizan un conjunto de restricciones.

Las transacciones en una base de datos son sentencias SQL que se ejecutan en secuencia de
operaciones con la finalidad de formar una unidad lógica única de trabajo.

Todas las transacciones de base de datos deben cumplir con la propiedad ACID para garantizar
la integridad de los datos.

La atomicidad como objetivo principal requiere que la transacción completa se ejecute


correctamente; es decir si una parte de la transacción falla, toda la transacción quedará
invalidada.

La consistencia requiere que los datos insertados en la base de datos como parte de la
transacción deben cumplir todas las reglas definidas, todas las restricciones, cascadas y
disparadores.

El aislamiento asegura que una operación no puede afectar a otras, son independientes.

La durabilidad asegura que una vez realizada la operación, ésta persistirá y no se podrá
deshacer aunque falle el sistema.

Cumpliendo estos 4 requisitos un sistema gestor de bases de datos puede ser considerado
ACID complaciente.[3]
10
3.3 Características principales en bases de datos Relacionales:

 Una Base de Datos Relacional está compuesta por tablas o relaciones.


 No se acepta tener dos tablas con el mismo nombre o registro.
 Cada tabla se compone por un conjunto de campos conocidos como columnas y
registros conocidos como filas.
 La relación que puede existir entre una tabla padre y una tabla hijo se relaciona por
medio de las claves primarias y claves extranjeras.
 Las claves primarias prácticamente son la clave principal en un registro dentro de una
tabla y estas deben cumplir con la integridad de datos.
 Las claves extranjeras se registran en la tabla hija, deben contener el mismo valor que la
clave primaria de la tabla padre; a través de ellas se forma la relación entre tablas.

3.4 ¿Por qué usar una base de datos Relacional?

Una base de datos relacional con una proyección de gran alcance se la puede diseñar de
manera sencilla, por lo que no se requiere un mínimo de conocimiento de programación.

La estructura de una Base de Datos Relacional permite la adición de nuevos campos no


previstos en el diseño inicial de la base de datos en cualquier momento debido a que es flexible
y escalable.

El registro de datos es más simple porque el usuario introduce los datos y estos se almacena
en un bit sólo una vez. De esta manera se tiene una menor entrada de datos y se reduce el
riesgo en la entrada de datos.

Los datos obtenidos en las consultas se pueden almacenar y actualizar de acuerdo a las
necesidades del usuario.

El diseño fino de una base de datos relacional brinda la generación de metadatos, o datos
sobre los datos.[3]

3.5 ¿Cuándo usar una base de datos Relacional?

Es recomendable usar una BD Relacional cuando se requiere que los datos a ser
almacenados sean consistentes sin probabilidad a tener errores en el registro, también si la
información a ser almacenada requiere estar bien estructurada para su correcta lectura y si se
desea mantener una jerarquía en los datos.

11
3.6 Motor de Base de Datos Relacional

El Motor de base de datos es el servicio principal para almacenar, procesar y proteger los datos.
El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones
rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos más exigentes
de su empresa. Se usa el Motor de base de datos para crear bases de datos relacionales para
el procesamiento de transacciones en línea o datos de procesamiento analíticos en línea, se
pueden crear tablas para almacenar datos y objetos de base de datos como índices, vistas y
procedimientos almacenados para ver, administrar y proteger los datos.[4]

Entre los motores más comunes de Bases de datos, se puede mencionar los siguientes que se
ven en el Cuadro 1:

DBMS Definición

MySQL Es un sistema de administración de bases de datos relacionales de


código abierto.

PostgreSQL Es un potente sistema de base de datos relacional orientado a


objetos de código abierto y clase empresarial.

Oracle Es un sistema de gestión de base de datos relacionales y de tipo


objeto-relacional.

MSSQL Es un sistema para la gestión de BD producido por Microsoft.

SQLite Es un sistema de gestión de bases de datos relacional compatible


con ACID.

MariaDB Es un motor de base de datos compatible con MySQL y derivado de


MySQL, que desarrollan los desarrolladores originales de MySQL.

Amazon Aurora Es un motor de base de datos relacional compatible con MySQL y


PostgreSQL .

MS Access Es un gestor de datos que recopila información relativa y que viene


incluido en Microsoft Office.

Cuadro 1. Motores más comunes de BD Relacionales


Fuente: Elaboración propia.

12
4 BASES DE DATOS NoSQL

4.1 ¿Que son las BD NoSQL?

Las Bases de Datos NoSQL son Bases de Datos que se caracterizan por no seguir el modelo
relacional SQL, es decir no recuperan los datos en una estructura basada en tablas.

Las bases de datos NoSQL son más flexibles y de escalabilidad horizontal, de esta manera
permite usar y generar tipo de datos complejos y de cambios constantes.

Las bases de datos NoSQL permiten agregar datos nuevos en cualquier momento sin tener
que definirlos previamente en el esquema de la Base de Datos, de esta manera puede procesar
grandes volúmenes de datos sin estructura.

El esquema de las bases de datos NoSQL, es dinámico y permite realizar desarrollos ágiles,
donde las iteraciones son rápidas y significativas, eliminando así el tiempo de inactividad.[5]

4.2 Características principales en bases de datos NoSQL:

 Utilizan diferentes APIs8 para comunicarse, en su mayoría reconocen el formato JSON9.


 Manejan un esquema flexible, que permite la incorporación de nuevos datos en todo
momento y tienden a tener diferentes modelos de datos.
 Por lo general no soportan operaciones de tipo JOIN.
 Son escalables, principalmente de forma horizontal.
 Son distribuidas y de código abierto.

4.3 ¿Por qué usar una base de datos NoSQL?

Porque tiene un mejor rendimiento, porque permiten resolver problemas con el escalado de
grandes volúmenes de datos relacionales estructurados, a la vez que hacen posible la latencia
baja y un rendimiento alto.

Porque son más flexibles para utilizar cantidades masivas de datos estructurados,
semiestructurados y no estructurados, así como datos no relacionales.

Porque tiene variedad de opciones de bajo costo y código abierto que ofrecen una arquitectura
eficiente y escalada horizontalmente en vez de una arquitectura costosa y monolítica.

Porque la programación orientada a objetos permite a los desarrolladores ejecutar consultas


con menos preparación y sin tener que navegar por arquitecturas de bases de datos SQL.[6]

8,9. Ver Glosario de Acrónimos en Anexos

13
4.4 ¿Cuándo usar una base de datos NoSQL?

Es muy útil al usar en una minería de datos, porque permite acceder a todos los registros en y
en diferentes servidores para relacionarlos y analizarlos.

Muchas empresas proporcionan a sus usuarios practicar informática social a través de foros de
mensajes, blogs, etc.

Muchas empresas tienen la necesidad de integrar datos de diferentes puntos de negocio con el
objetivo de integrar todas las fuentes de datos externos.

Las empresas tienen poco control sobre el formato en los datos que reciben y la frecuencia con
la que estos cambian.

Muchas empresas necesitan un servicio de gestión de contenido empresarial para la


administración de datos en diferentes grupos de trabajo, como recursos humanos o ventas. El
objetivo es agrupar las diferentes estructuras de metadatos en un solo servicio de
administración.

Algunas veces es prioritario utilizar la base de datos para tener un análisis en tiempo real para
obtener métricas de rendimiento en sitios web (visitas a páginas, visitas únicas, páginas más
visitadas, ultimo visitante, etc.), esta función por lo general se obtiene con herramientas como
Google Analytics pero no son en tiempo real; es por ello necesario construir sistemas que
proporcionan estadísticas básicas en tiempo real.[7]

14
5 PRINCIPALES BASES DE DATOS NoSQL

5.1 Bases de Datos orientadas a Clave-Valor

Una base de datos orientada a Clave - Valor (también nombrada como almacén de valores-
clave y base de datos key-value) pertenece a las bases de datos NoSQL y se caracteriza por
almacenar datos utilizando el método simple de clave-valor.

La expresión clave-valor hace referencia que los datos se almacenan en una agrupación de
pares clave / valor. Este es un método sencillo y eficaz de almacenar datos, y como resultado
se tiene un buen escalamiento.

En muchos lenguajes de programación se usa como referencia el par clave-valor. Los lenguajes
de programación generalmente se refieren a una clave-valor como una matriz asociativa o
estructura de datos. Una clave-valor también es conocido como diccionario o hash.

Un almacenamiento de valor-clave es una base de datos simple que hace uso del modelo de
datos fundamental donde se asocia cada clave con un solo valor dentro de una colección. Esta
relación es conocida como el par Clave-Valor.[9]

a) La clave

La clave es representada como una cadena o hash y el valor puede ser representado como
algún tipo de datos como una imagen, archivo o documento de preferencia de cada usuario. El
valor se almacena como un objeto tipo fichero de datos que no requiere modelado de datos
inicial o que esté definido en el esquema.

La clave se caracteriza en un par clave-valor por ser única para acceder al valor asociado a
esta clave. La clave para ser definida podría depender del DBMS. Sin embargo debe evitar
tener una clave demasiado larga.[9]

b) El valor

El valor en un almacenamiento de clave-valor puede ser representado por cualquier tipo de


datos, como texto, número, código HTML, código de programación, una imagen, etc.

El valor también podría ser representado por una lista, u otro par clave-valor incluido dentro de
un objeto, en resumen el valor podría ser de cualquier tipo de dato.[9]

15
Como ejemplo se puede ver un listado simple de clave-valor que es representado por un
identificador único a través de la clave y que permite acceder al valor asociado a esa clave con
su valor respectivo en el Cuadro 2:

Clave Valor
José (123) 694-8210
Antonio (569) 543-4744
Luciana (123) 125-4519
Gabriel (981) 415-47892

Cuadro 2. Listado clave-valor.


Fuente: Elaboración propia.

A continuación se pueden citar algunos sistemas de gestión de bases de datos clave-valor:

 Redis
 Bases de Datos Oracle NoSQL
 DynamoBD
 Voldemorte
 Aerospike
 Oracle Berkeley DB

5.2 Bases de Datos Orientadas a Columnas

El propósito de una base de datos orientada a columnas denominada como columnar en la


actualidad, es tener eficacia en la escritura y lectura de datos en el almacenamiento en disco
duro, para obtener una mejora en el tiempo que se demora en tener los resultados de una
consulta.

Las bases de datos orientadas a columnas con un DBMS, se caracterizan por almacenar los
datos en columnas en lugar de la filas, es decir los datos se almacenan de columna en
columna. Esto las convierte más eficientes a la hora de realizar consultas analíticas.

Una base de datos columnar en la actualidad está ganando mucha importancia porque brinda
una mejor propuesta de valor a la hora de la carga de datos, de la misma manera para usar en
un Datawarehouse, que es una base de datos corporativa que se caracteriza por integrar y
depurar información de una o más fuentes.

En una base de datos columnar, físicamente se encuentran juntos todos los valores de la
columna 1, seguido por la columna 2, columna 3 etc. Los datos son almacenados en orden de

16
registro, por lo que la entrada número 50 para la columna 1 y la entrada número 50 para la
columna 2 se encuentran en el mismo registro de entrada. Esto ayuda que a los elementos de
datos individuales, se acceda a través de columnas como un grupo en lugar de individualmente
fila por fila.[8]

Como ejemplo se puede ver una base datos de 4 columnas y 3 filas en el Cuadro 3.

ID Apellido Nombre Sueldo


1 García Alberto 6000
2 Quintanilla José 3500
3 Alcocer Virginia 5000

Cuadro 3. Base de Datos Orientada a Objetos.


Fuente: Elaboración propia.

En un sistema de gestión de base de datos orientado a filas los datos se almacenarán de la


siguiente manera: 1, García , Alberto , 6000; 2, Quintanilla , José , 3000; 3, Alcocer , Virginia ,
5000;

En un sistema de gestión de base de datos orientado a columnas los datos se almacenan de la


siguiente manera: 1, 2, 3; García , Quintanilla , Alcocer ; Alberto ,José ,Virginia ; 6000, 3000,
5000;

A continuación se puede listar algunos tipos de base de datos columnar como:

 HBase, Hypertable, Cassandra, Riak


 Sybase IQ
 SAND
 Vertica
 ParAccel
 InfoBright
 Kickfire
 Exasol
 MonetDB
 Microsoft SQL Server 2008 R2 Gemini/Vertipaq
 Oracle Exadata2 (ambos, por filas y columnar)
 Calpont’s InifiniDB

17
Uno de los principales beneficios de una base de datos columnar es que tienen la factibilidad de
comprimir los datos. La compresión de datos permite en operaciones columnares como MIN,
MAX, SUM, COUNT y AVG se desarrollen muy rápidamente. Otra ventaja es que utiliza menos
espacio en disco en relación a una base de datos relacional que contenga los mismos datos.

Sin embargo, a medida que se incrementa la utilización de análisis de datos en memoria, los
beneficios relativos de la base de datos columnar comparados con los de las bases de datos
orientadas a filas pueden llegar a ser menos importantes. La analítica en memoria no tiene en
cuenta la eficiencia en lectura y escritura de datos en un disco duro. En su lugar los datos se
consultan en la memoria de acceso aleatorio RAM.[8]

5.3 Bases de Datos Orientadas a Documentos

Una base de datos orientada a documentos se caracteriza por almacenar grandes volúmenes
de información de forma organizada estructuralmente para que pueda ser encontrada y utilizada
fácilmente. Estos volúmenes de información son guardados en archivos y es administrada por
un gestor de bases de datos

Una Base de Datos orientada a documentos es representada en formatos XML 10, JSON o
BJSON11 incluso en formatos binarios como PDF12 y Microsoft Office (MS Word, Excel y
demás), de esa manera llega a ser más flexible en esquemas de datos dinámicos, teniendo
una reducción considerable en la complejidad de las consultas para datos asociados.

El Sistema Gestor de Bases de Datos es el encargado de la gestión de documentos,


optimizando el almacenamiento y facilitando la recuperación de datos estructurados o semi-
estructurados.

Los documentos se pueden recuperar por medio de consultas dinámicas e inciertas, de esta
manera las bases de datos orientada a documentos suelen asociar cualquier número de
campos de cualquier longitud en un documento, por ejemplo junto con el nombre de una imagen
de perfil de un cliente los datos de nacimiento. En otra circunstancia se puede adicionar otros
datos como edad, sexo, etc. incluso si no se tomó en cuenta al principio.

Como desventaja de este gestor de base de datos orientada a documentos es que el modelado
del código no afecta directamente a la base de datos, sino en la misma aplicación llegando a
tener limitaciones en las consultas.[7]

10,11,12. Ver Glosario de Acrónimos en Anexos

18
Como ejemplo podemos ver su estructura de un documento:

Nombre:"Antonio", Apellido:"Ferrufino", Dirección:"Av. San Martin #526",

Hijos:[

{Nombre:"Juan",Edad:9},

{Nombre:"Maria", Edad:7},

{Nombre:"Elena", Edad:5},

{Nombre:"Marco", Edad:2}

A continuación se puede listar algunos Motores de bases de datos orientados a documentos:

 MongoDB, de 10gen
 RavenDB, de Hibernating Rhinos.
 djondb
 SimpleDB
 IBM Lotus Domino
 Terrastore
 CouchDB, de Apache CouchDB
 CouchBase
 eXist
 BaseX

19
5.4 Bases de Datos Orientadas a Grafos

Una base de datos orientada a grafos se identifica por guardar la información en forma de
nodos de un grafo y en otros nodos sus relaciones respectivas, de esta manera sigue la teoría
de grafos para leer la base de datos y la convierte muy eficaz a la hora de almacenar
información en modelos con infinidad de relaciones como son las redes y conexiones sociales.
Cada nodo se compone por un grado que señala el número de aristas que tiene, a su vez cada
grafo puede ser dirigido o no dirigido, dependiendo directamente si las aristas tienen nodos
origen y/o nodos destino. El manejo de este tipo de bases de datos orientado a grafos está
relacionado con la lógica de negocio donde se desee almacenar esta información respectiva,
ya que no se puede aplicar en todos los ambientes, o no se podrá dar uso en su amplitud del
potencial que maneja este modelo de grafos.

Las bases de datos orientadas a grafos cumplen las siguientes características que las hacen
especiales en comparación a bases de datos relacionales u otro tipo de bases de datos
NoSQL:

El almacenamiento realiza recorridos en el grafo sin utilizar un índice para interacción entre
nodos.

No es indispensable la declaración del tipo de datos entre los nodos y sus relaciones.

Se aplica la teoría de los algoritmos de grafos para encontrar el camino más corto.

El uso de las bases de datos orientadas a grafos puede tener ventajas en escenarios donde los
sistemas a implementar requieran de una adaptación constante a los cambios de lógica de
negocio, y en modelos donde existe una alta dependencia funcional entre las entidades
involucradas en un sistema. El rendimiento es una fortaleza clave para el uso de bases de datos
con grafos; en comparación con el uso de bases de datos relacionales, donde su Bases de
datos orientadas a grafos, donde su rendimiento está fuertemente ligado al tamaño de los datos
y las numerosas relaciones entre las entidades, implicando que el rendimiento en las consultas
esté inversamente proporcional a la totalidad de los registros y relaciones envueltas entre las
entidades que satisfacen la consulta.

En un sistema donde se utilizan muchos niveles de profundidad de datos relacionados entre sí,
se puede ver la eficacia y velocidad en la ejecución de consultas en bases de datos orientadas
a grafos.[10]

20
Algunos ejemplos de este tipo de Bases de Datos :

 Neo4j
 InfinityGraph
 OrientDB
 *Dex
 RDF
 AllegroGraph
 Sones

Podemos ver un ejemplo de bases de datos orientada a grafos en la figura 1

Figura 1. BD Orientado a Grafos. Tanapat Fhangphet, 22 de Diciembre 1992


Fuente: https://picksed.com/tanapat/note/16:1

21
6 BASES DE DATOS NoSQL MÁS UTILIZADAS EN LA ACTUALIDAD

6.1 MongoDB

Dentro de las bases de datos existentes NoSQL, MongoDB es la base de datos más usada y
muy diferente al de las bases de datos relacionales, de esta manera se está convirtiendo en una
interesante alternativa.

MongoDB es un sistema de bases de datos que se caracteriza por ser NoSQL o no relacional,
multiplataforma y creada en base a la unión de dos tipos de bases de datos como es la
documental y clave/valor, el término Mongo proviene del término en inglés "humongous" que
significa “extremadamente largo”. Está liberada bajo licencia de software libre. MongoDB en
lugar de guardar los datos en registros, guarda los datos en documentos. Estos documentos
son almacenados en formato BJSON (JSON Compilado), de esta manera tiene la libertad de
manejar un esquema libre. En MongoDB no se usa tablas, no tiene registros y lo que es más
importante, no usa SQL. De esta manera MongoDB se convierte en una buena alternativa para
almacenar los datos de nuestras aplicaciones.[11]

A continuación se puede ver un documento como se almacena:

{
Nombre: "Alberto",
Apellidos: "Quiroz Ramos",
Edad: 27,
Deportes: ["fútbol","tenis","ciclismo"],
Amigos: [
{
Nombre:"Elena",
Edad:25
},
{
Nombre:"Ana",
Edad:27
}
]
}

22
El documento anterior es un documento JSON, que presenta strings, arrays, subdocumentos y
números. En la misma colección se puede guardar un documento de otra manera:

{
Nombre: "Simón",
Estudios: "Ingeniería Comercial",
Amigos:7
}

Ambos documentos no siguen el mismo esquema, tiene diferentes campos, esto es algo
impensable en una base de datos relacional, sin embargo es muy permitido en MongoDB.

6.1.1 Funcionamiento de MongoDB

MongoDB realiza las consultas pasando objetos JSON como parámetro, sin embargo está
desarrollado en lenguaje C++,. En los propios documentos se almacenan en BJSON. Por
ejemplo:

db.Usuarios.find({Nombre:"Antonio"});

La consulta anterior realiza una búsqueda en todos los usuarios cuyo nombre sea Antonio.

MongoDB viene por defecto con una consola construida sobre JavaScript desde la que
podemos ejecutar los distintos comandos, también se puede definir variables, funciones o
utilizar bucles.

Si se quiere usar MongoDB en nuestro lenguaje de programación favorito, existen drivers


oficiales para C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos
drivers están soportados por MongoDB, no todos están en la misma versión.[12]

A continuación se puede ver el funcionamiento de MongoDB en la figura 2.

Figura 2. Modelado de Datos en MongoDB. R. Moya, 24 de Julio 2014.


Fuente: https://jarroba.com/mean-mongo-express-angular-node-ejemplo-de-aplicacion-web-parte-
ii/
23
6.1.2 Uso de MongoDB

MongoDB se puede utilizar en variedad de los proyectos que son desarrollados en la actualidad.

Cualquier aplicación que necesite almacenar datos semi estructurados puede usar MongoDB.
como son las típicas aplicaciones CRUD13.

MongoDB no necesita definir un esquema, sin embargo es importante que se diseñe la


aplicación para seguir un esquema propio.

MongoDB es especialmente útil en entornos que requieran escalabilidad, se puede conseguir


un sistema que escale horizontalmente sin dificultad.[14]

6.1.3 ¿Dónde no usar MongoDB?

MongoDB no tiene capacidad para uso de transacciones, Solo garantiza operaciones atómicas
a nivel de documento. Si las transacciones son algo indispensable en el desarrollo, se debe
pensar en otro sistema de BD.

Al necesitar consultas del tipo JOINS se debe realizar consultas de agregación. MongoDB
tiene un framework para realizar consultas de este tipo llamado Aggregation Frameworko o Map
Reduce. Sin embargo estos métodos no se comparan al sistema relacional. Si se necesita
explotar informes complejos, se debe pensar en utilizar un RDBMS clásico.[12]

6.1.4 Instalación de MongoDB

La instalación es sencilla, primero se debe bajar los binarios para el sistema operativo. Existen
versiones para Windows, Linux y MacOs. Una vez bajado el binario correspondiente se puede
arrancar el servicio de MongoDB con un solo comando:

mongod --dbpath data

Con este comando se arranca el servicio MongoDB e iniciará y escuchará las peticiones a
través del puerto 27017. También es importante el parámetro --dbpath, con la ruta dónde se
almacenarán los ficheros de nuestra base de datos.[11]

13. Ver Glosario de Acrónimos en Anexos

24
6.2 Cassandra

Cassandra es una base de datos NoSQL, que está orientada en el almacenamiento en


columnas, el desarrollo de Cassandra tuvo un origen en el inicio del desarrollo en Facebook al
tener que solucionar el crecimiento de las consultas en tiempo real que se hacían a través de su
sitio oficial. Y no sólo crecían las consultas de manera expansiva, sino que además el volumen
de datos que se manejaba empezaba a ser gigantesco, de esta manera tenían que encontrar la
mejor forma de aumentar la velocidad en la respuesta a las consultas, y rapidez en la lectura de
grandes volúmenes de datos, luego de ver el potencial de Cassandra en el año 2008 decidieron
liberarlo como proyecto open source y en febrero de 2010 llego a convertirse en un proyecto de
alto nivel de la fundación Apache.[12]

Apache Cassandra ofrece los siguientes beneficios:

 Permite la replicación de lectura/escritura entre multi-datacenters geográficamente


distribuidos.

 Los nodos son iguales y pueden crecer o decrecer en forma masiva.

 Se tiene una disponibilidad continua, tanto para los datos como para los nodos, lo que
permite que siempre el sistema esté en funcionamiento.

 Todos los nodos tienen la capacidad de leer y escribir, lo que quiere decir que es una
arquitectura descentralizada, evitando cuellos de botella de red.

 Puede manejar diferentes modelos de datos, tanto los relacionales como los no-
relacionales, con altas tasas de lectura y escritura.

 La escalabilidad lineal permite aumentar los nodos, sin producir pérdidas en producción,
reconociendo inmediatamente la mejora en el desempeño del sistema.

 Puede soportar gran consistencia de datos a través de un distribuido cluster de nodos.

 Un nodo que falla puede ser restaurado o reemplazado fácilmente.

 Maneja un lenguaje conocido como CQL14, que es una especie de SQL para hacer más
sencilla la transición de las personas que vienen del mundo de las bases relacionales.

 Los datos son protegidos fuertemente mediante un sistema de log de transacciones, y


con un sistema incluido de respaldo y restauración.

 Permite una alta tasa de compresión sin perder desempeño. [13]

14. Ver Glosario de Acrónimos en Anexos


25
6.2.1 Funcionamiento de Cassandra

Cassandra funciona basado en un modelo de datos compuesto en filas particionadas que son
almacenadas en tablas con un nivel de consistencia configurable. Las tablas se indexan por
medio de llaves e indica que el primer componente de la llave primaria de una tabla, primary
key, es la llave de partición, partition key. Estas son definidas por las columnas que definen una
entrada en la tabla. Dentro de cada partición, las filas se almacenan siguiendo el orden de las
columnas restantes que conforman la llave, estas son la llamadas clustering keys.

El nivel de consistencia hace mención a como se sincronizan y actualizan réplicas de las filas
de datos a lo largo del cluster (nodos). El nivel de consistencia viene marcado en cada lectura o
escritura en función de las necesidades de velocidad y precisión.

La interfaz primaria y por defecto para comunicarnos con Cassandra es CQL. Su sintaxis es
muy similar a SQL con la principal diferencia de que Cassandra no soporta joins o subqueries.
Para ejecutar sentencias CQL, Cassandra viene con una herramienta por consola llamada
Cqlsh.[14]

A continuación se puede ver el funcionamiento de la BD Cassandra en la figura 3.

Figura 3.Modelado de Datos en Cassandra. Manuel Zaforas, 17 de Marzo del 2016.


Fuente: https://www.paradigmadigital.com/dev/cassandra-la-dama-de-las-bases-de-datos-nosql/

26
6.2.2 Uso de Cassandra

Cuando se requiere una base de datos que permita una escalación lineal con alto rendimiento y
de alta disponibilidad, es una gran opción optar por Cassandra.

Igualmente, al tener una arquitectura distribuida y su manera característica en almacenar los


datos evita caídas que pueden suponer pérdida de dinero o pérdida de datos.

Cuando se trabaja con grandes cantidades de datos y preferimos la velocidad para acceder a
los datos en comparación a necesitar la normalización de estos datos, entonces Cassandra es
una buena opción.

Si se requiere manejar grandes volúmenes de datos, lo mejor es pensar en el almacenamiento


en columnas.[15]

A continuación podemos citar algunas empresas que utilizan Cassandra:

 Apple usa 75,000 nodos de Cassandra para iMessage, iTunes passwords y otros
servicios más

 La Organización Europea para la Investigación Nuclear, más conocida como Cern, usa
un prototipo basado en Cassandra para el experimento ATLAS15 para archivar su
sistema de monitorización on-line

 Facebook usa Cassandra para su sistema de búsquedas en la bandeja de entrada, con


una implemetanción de más de 200 nodos

 Netflix usa Cassandra como base de datos de back-end para su servicio de streaming

 eBay lo utiliza, entre otros, para anotar los clic del usuario en los botones "Like", "Want"
or "Own" en su página de favoritos.

6.2.3 ¿Dónde no usar Cassandra ?

En sistemas que requieren el uso de transacciones, como el de insertar, actualizar o borrar un


registro en más de una ubicación en la BD, no es recomendable el uso de Cassandra por que
no está orientado a transacciones de alta concurrencia.[15]

15. Ver Glosario de Acrónimos en Anexos


27
6.2.4 Instalación de Cassandra

La instalación de Cassandra se realiza en un equipo con Windows 8, en el cual debemos


cumplir con ciertos requerimientos antes, veamos que necesitamos:

1- Se necesita tener al menos Java 7 instalado en el sistema.

2- Se requiere adicionalmente Microsoft Visual C++ 2008 Redistributable Package (x86).

3- Por último conexión a Internet para descargar el paquete de DataStax.

Con la instalación, varias herramientas son instaladas en el sistema, una de ellas es la interfaz
web de Cassandra llamada OpsCenter, a la cual se debe ingresar si colocamos en nuestro
navegador la siguiente dirección:

http://localhost:8888/opscenter/index.html

Esta interfaz permite realizar varias acciones, aunque no es lo más óptimo para trabajar con
Cassandra.[14]

6.3 Redis

El desarrollo de Redis fue iniciado por Salvatore Sanfilippo a principios del 2009, para acelerar
los tiempos de respuesta de un producto de servicio web llamado LLOGG 16. Pronto fue
ganando popularidad, hasta que en Marzo del 2012 la empresa VMWare17 contrató a Salvatore
para trabajar a tiempo completo en Redis. Poco después VMWare contrató también a uno de
los principales desarrolladores de Redis, Pieter Noordhuis. Desde entonces Redis ha
evolucionado muy rápidamente, incluyendo funcionalidades que le hacen tan útil.

Redis es un motor de base de datos open source con licencia BSD 18 y viene del acrónico de
Remote Dictionary Server (servidor de diccionario remoto). Es un depósito de estructura de
datos de valores de clave en memoria rápido y de código abierto, es decir basa su
funcionamiento en el uso de tablas de hashes (clave – valor) además incorpora un conjunto de
estructuras de datos en memoria versátiles que permiten crear con facilidad diversas
aplicaciones personalizadas, también puede llegar a usarse como base de datos persistente.
Entre los casos de uso principales de Redis se encuentran el almacenamiento en caché, la
administración de sesiones, pub/sub y las clasificaciones. Es el almacén de valores de clave
más popular en la actualidad. Está escrito en código C optimizado y admite numerosos
lenguajes de desarrollo.[16]

16,17,18. Ver Glosario de Acrónimos en Anexos

28
6.3.1 Funcionamiento de Redis

Redis asiente ajustar la información usando las siguientes estructuras de datos que puede
reconocer:

a) Strings

En Redis un string es una serie de bytes, lo que permite almacenar cualquier dato, como
cadenas de texto, números, imágenes, vídeos, o un objeto serializado.

La información recolectada es opaca para la BBDD, lo que significa que ésta no tiene noción de
la estructura de la información, ni tiene capacidad para operar sobre ella, permite utilizarlo para
generar identificadores únicos desde múltiples clientes, o en general para casos de uso en los
que se requieran contadores, como contabilizar votos de usuarios, visualizaciones de
productos, cantidades compradas de un artículo, visitas a una página, en otras palabras se
puede usar los strings para almacenar y recuperar información como sesiones de usuario,
carritos de la compra, contadores, caché de HTML, caché de consultas a BBDD o llamadas a
un API, y en general objetos serializados en XML, JSON o cualquier otro formato.[17]

b) List

Las listas permiten coleccionar secuencias de strings en el orden en el que fueron insertadas,
también permiten casos de uso del tipo “muéstrame las últimas n actualizaciones de algo”. Las
listas en Redis también se usan para implementar sistemas del tipo productor-consumidor, en
los que un proceso añade tareas a la lista, y uno o más procesos sacan dichas tareas de la lista
para llevarlas a cabo, disponiendo la capacidad de limitar el número de elementos de una
lista.[17]

c) Sets

Los sets son colecciones de strings, sin ningún orden particular, en los que se garantiza que los
elementos del mismo son únicos y no pueden estar duplicados. Se debe añadir el mismo
elemento 10 veces, pero Redis garantiza que sólo existirá una vez, lo que permite añadir
elementos sin tener que preocuparse previamente de si ya existen o no.[17]

d) Sorted Sets

Son conjuntos agrupados con las propiedades de estos sets, que además permiten la
ordenación de los elementos en base a un valor (score) numérico asociado a cada uno de ellos.
Es importante aclarar que la unicidad de los elementos se hace sólo teniendo en cuenta los
datos almacenados, y no el valor del score. Si se añade el mismo elemento varias veces con

29
distintos valores del score, el elemento sólo existirá una vez, y el score será el de la última
actualización.

Otro caso de uso que sea tan conocido, es utilizar este tipo de dato como un índice para otras
estructuras que se tengan que almacenar en Redis. Si por ejemplo se tiene un hash de usuarios
con la información de los mismos, se puede recuperar la información de un usuario de manera
muy rápida por la clave asociada al hash, pero no por cualquier otro atributo del usuario. Para
remediar esto, se puede utilizar un set ordenado como índice secundario en el que se mantenga
el atributo que se desea indexar. Se suele utilizar para generar índices invertidos para sistemas
de búsqueda con autocompletado.[17]

e) Hashes

Un hash permite asociar a una clave una colección de pares clave-valor, habitualmente usado
para representar objetos. Con un hash se puede almacenar cualquier entidad con sus atributos
asociados (como una especie de tabla o diccionario), de forma que se pueda recuperar
únicamente el atributo de interés en cada momento. Además, Redis almacena los hashes de
forma muy eficiente, lo que permitirá sacar el máximo partido a la memoria disponible.

Redis gestiona la información en memoria, lo que hace que sea muy rápido almacenando y
recuperando datos, a la vez que permite persistir los datos en disco. Además se puede
configurar la expiración automática de las claves, y tiene funcionalidades de
publicación/suscripción (para crear canales), pipelines para ejecutar comandos en grupo y
transacciones.

También permite capacidades de scripting en el servidor utilizando el lenguaje Lua, lo que


supone poder crear nuevos comandos. No falta la capacidad de replicar datos.

Con todas estas capacidades, Redis es una base de datos clave-valor que ayudará a resolver
más casos de negocio de los que hubiéramos imaginado.[17]

6.3.2 Uso de Redis

El principal uso que se da a Redis es de caché para plataformas web y que acceden miles de
usuarios registrados por hora por ejemplo cada vez que un usuario visita una página de una
plataforma, se debe hacer varias consultas a la base de datos para saber si ese usuario con
esa cookie está registrado y está autorizado para ver esa página.

30
Si por ejemplo por promedio se tiene 10.000 usuarios por hora y cada usuario se ha movido por
una plataforma unas 50 veces, querrá decir que tendrás que hacer medio millón de consultas a
la base de datos por hora, conectarte, mandarle los datos, esperar a que responda, procesar la
información y devolverla al usuario. Esto con Redis no pasaría ya que, si retendrías en memoria
la primera vez los datos del usuario, se ahorraría 490.000 consultas de verificación por hora. Al
final del día se habrá ahorrado más de 11 millones de peticiones a la base de datos para ver si
el usuario está autentificado; Redis es ideal para retener archivos en memoria, dado que al
almacenar la información en RAM ésta es muy rápidamente accesible.[16]

Redis para PHP

Tiene soporte para PHP19, no dispone de un estándar ya preinstalado en PHP por lo que se
debe instalar el módulo si se desea usar Redis para PHP.

Además se puede usar para las siguientes funciones:

 Expiración de claves basada en tiempo


 Sistema de Publicación y Subscripción a colas de mensajes
 Operaciones Atómicas y Transacciones
 Persistencia periódica de la memoria a disco, para recuperación ante caídas
 Replicación Maestro-Esclavo, para en el futuro implementar un Cluster
 Protocolo abierto, y uso desde decenas de lenguajes de programación

Los lenguajes soportados por Redis son los siguientes: Lua, PHP, Ruby, Python, ActionScript,
C, C++, C#, Clojure, Common Lisp, Erlang, Go, Haskell, haXe, Io, Java, Node.js, Objective-C,
Perl, Pure Data, Scala, Smalltalk y Tcl.[16]

6.3.3 ¿Dónde no usar Redis?

No se recomienda usar Redis para guardar tablas enteras ni muchos datos, debido a que
almacena los datos en la memoria del servidor. Aunque si está permitido guardar datos en
JSON (realmente se guarda en String) y aunque se puede conseguir crear una especie de
tablas, Redis está pensando sobre todo como una base de datos Clave-Valor.[16]

19. Ver Glosario de Acrónimos en Anexos

31
6.3.4 Instalación de Redis

Actualmente Redis no ofrece soporte oficial para Windows, pero puedes instalar una de las
versiones del grupo de desarrollo de Microsoft Open Technologies, Inc a través de los
repositorios de github https://github.com/MicrosoftArchive/redis. Microsoft Open Technologies,
Inc se ha encargado del desarrollo y mantenimiento de Redis para Windows, si se desea
montar esto en producción se debe asegurar que está configurado para ello.

Para los que usan sistemas operativos como Linux o Mac, la instalación es más sencilla ya que
se debe copiar y pegar unas líneas de código en la consola / terminal.

Para descargar la última versión de Redis se debe ir a la dirección


http://download.redis.io/releases/ y bajar el tar.gz con el comando:

wget http://download.redis.io/releases/redis-stable.tar.gz

tar xzf redis-stable.tar.gz

cd redis-stable

Compilamos e instalamos.

sudo make install clean

Se agrega el usuario redis.

sudo useradd -s /bin/false -d /var/lib/redis -M redis

Se crea el directorio de archivos pid redis y se otorga permisos.

sudo mkdir /var/run/redis/ -p && sudo chown redis:redis /var/run/redis

Se crea el directorio de configuración y se otorga permisos al usuario.

sudo mkdir /etc/redis && sudo chown redis:redis /etc/redis -Rf

Lo mismo con el directorio de logs.

sudo mkdir /var/log/redis/ -p && sudo chown redis:redis /var/log/redis/ -Rf

Se crea el archivo de configuración y se mueve a la carpeta correcta.

sudo mkdir /etc/redis

sudo cp redis.conf /etc/redis/redis.conf

sudo chown redis:redis /etc/redis/redis.conf.[18]

32
A continuación se muestra de forma gráfica la estructura de Redis en la figura 4.

Figura 4. Estructura de Redis. Luis Peris, 18 febrero 2016.


Fuente: https://www.sololinux.es/instalar-redis-y-phpredis-debian-ubuntu-derivados/

33
7 CUADROS COMPARATIVOS ENTRE LAS BASES DE DATOS NoSQL Y LAS
RELACIONALES

Se puede ver una comparación de los aspectos principales en las Bases de Datos relacionales
y las NoSQL en el Cuadro 4.[19]

Característica Bases de Datos Relacional Bases de Datos NoSQL

Transacción Soporta transacciones Maneja solo transacciones


complejas. sencillas.

Ubicación de Datos Los datos llegan desde una o Los datos pueden llegar
pocas ubicaciones. desde distintas ubicaciones.

Puntos de Falla Tiene únicos puntos de falla, No tiene puntos de falla


con recuperación. únicos, siempre está activa.

Datos Estructurados Esencialmente solo maneja Maneja tanto datos


datos estructurados. estructurados, como no
estructurados.

Despliegue En escala vertical. En escala horizontal.

Volumen de Datos Maneja moderados volúmenes Puede gestionar altos


de datos. volúmenes de datos.

Despliegue Despliegue centralizado. Despliegues


descentralizados.

Datos de Entrada Maneja moderados tipos de Maneja variedad de tipos de


datos como entrada. datos de entrada.

Escritura de Datos Escritura de datos La escritura de datos se


principalmente en una sola realiza en muchas
ubicación. ubicaciones.

Escalabilidad Soporta escalabilidad de Soporta escalabilidad de


escritura únicamente. lectura y escritura.

Soporte Tienen más soporte en el No tiene mucho soporte por


mercado por ser más ser relativamente nueva en
conocida. el mercado.

Recursos Se necesitan máquinas con Se ejecutan en máquinas


muchos recursos. con pocos recursos.

34
Esquema No se puede hacer cambios Se pueden hacer cambios en
en el esquema sin tener que el esquema sin tener que
parar la BD. parar la BD.

Integridad Los datos deben cumplir Los datos no necesitan


requisitos de integridad tanto cumplir los requisitos de
en el tipo de dato como en su integridad y de tipo de dato
compatibilidad. como su compatibilidad.

Propiedades ACID Admiten un conjunto de Intercambian algunas de las


propiedades ACID propiedades ACID por un
modelo de datos más
flexible.

Desempeño Es necesaria la optimización Depende del tamaño del


de consultas, índices y clúster de hardware, la
estructura de tabla para lograr latencia de red y la
el máximo desempeño. aplicación que se ejecuta.

Escalado Se requieren inversiones Reduce los costos utilizando


adicionales para actualizar el clústeres distribuidos de
Hardware. hardware.

API Almacenar y recupera datos Almacena y recupera


mediante consultas SQL fácilmente estructuras de
datos en memoria.

Herramientas Ofrecen varias herramientas Ofrecen herramientas para


para el desarrollo de administrar los clústeres y el
aplicaciones de base de datos. escalado.

Cuadro 4. Comparativa entre las Bases de Datos Relacionales y las NoSQL.


Fuente: Elaboración propia.

35
Se puede observar una comparación de las Funcionalidades de NoSQL y las bases de datos
relacionales en la Figura 5.

Figura 5. Funcionalidades de NoSQL y las Bases de Datos Relacionales. Mohamad Altarade, 2016.
Fuente: https://www.toptal.com/database/the-definitive-guide-to-nosql-databases

A continuación se puede observar una comparación de cuando usar Bases de Datos NoSQL o
Bases de datos relacionales en el Cuadro 5.[20]

Tipo de Aplicaciones Bases de Datos Relacionales Bases de Datos NoSQL

Educación Recomendado No Recomendado

Desarrollos web Aceptable Aceptable

Negocios Recomendado No Recomendado

Empresarial Recomendado No Recomendado

Redes sociales No Recomendado Recomendado

Desarrollo Móvil No Recomendado Recomendado

BigData No Recomendado Recomendado

Cloud (Todo servicio) Aceptable Aceptable

Cuadro 5. Uso de las Bases de Datos Relacionales y las NoSQL.


Fuente: Elaboración propia.

36
Además se puede ver las principales diferencias entre las Bases de Datos relacionales y las
Bases de Datos NoSQL en la Figura 6.

Figura 6. Diferencias entre las Bases de Datos Relacionales y NoSQL. Alberto Tizcape, 2015.
Fuente: https://es.slideshare.net/albertortizcape/20150429-nosql-riojadotnet

37
Mediante la Figura 7. Podemos ver el teorema CAP20, también llamado Conjetura de Brewer,
que indica que es imposible tener más de dos de estas tres características: Consistencia,
Tolerancia y Disponibilidad en un sistema de Cómputo distribuido, en esta figura se puede
apreciar las características que presentan diferentes BD Relacionales y BD NoSQL.

Figura 7. Teorema CAP. Nicola Strappazzon, Junio de 2016.


Fuente: https://www.swapbytes.com/

20. Ver Glosario de Acrónimos en Anexos


38
8 CONCLUSIONES

El objetivo de esta monografía es ampliar los conocimientos sobre las Bases de Datos NoSQL
y comparar ciertas características respecto a las Bases de Datos Relacionales a las que se
está más familiarizado, en definitiva de esta manera se llega a la conclusión que las Bases de
Datos NoSQL no son un reemplazo ni superiores o inferiores a las BD Tradicionales SQL, sino
que son una alternativa que ofrece otras posibilidades o beneficios para explotarlos en
determinados proyectos que requieren una alta escalabilidad y que los recursos son escasos y
la integridad de los datos no es lo más importante, como sí ocurre en cambio en aplicaciones
especializadas como por ejemplo en transacciones bancarias que son indispensables el
manejarlas con BD Relacionales.

A lo largo del contenido de esta monografía se pudo evidenciar que la gran diferencia entre los
dos tipos de bases de datos es la estructuración, es decir las BD NOSQL utilizan un tipo
almacenamiento no estructurado, todo lo contrario a una SQL. En este caso usan bases de
datos sin una tabla fija como las que sí se encuentran en las bases de datos relacionales, lo que
permite tener mayor escalabilidad en ellas. Además son flexibles a soportar diferentes tipos de
datos y no necesita tantos recursos para ejecutarse y el hardware necesario no es de un costo
muy elevado. En este sentido se tiene un menor coste si se desea expandir, ya que no
necesitan la actualización permanente en el hardware utilizado, sino que basta con hacer un
escalado horizontal, con más máquinas similares para distribuir la carga completa.

Se pudo evidenciar que las bases NoSQL no son perfectas, ya que al no existir tanta
estandarización, se limita el número de aplicaciones seguras para realizar transacciones o llevar
a cabo consultas SQL, lo que hace necesario un lenguaje de consulta que realice este tipo de
procesos.

Al ver un panorama más amplio de las diferentes BD NoSQL se evidencio que cuando se
trabaja con datos no estructurados o cuando no se define el tipo de datos que se almacenará, y
surge la necesidad de crear tablas adicionales en un sistema relacional y que obligan a realizar
JOINS para poder mostrar el resultado, en estos casos es cuando es recomendable utilizar las
bases de datos NOSQL como Cassandra ó MongoDB.

Se puede resaltar que las bases de datos NoSQL no tienen la necesidad de utilizar máquinas
más potentes cuando el crecimiento de solicitudes y datos afecta el rendimiento de la base de
datos, sino que basta con añadir más máquinas al mismo nivel, lo cual es un gran ahorro de
coste.

39
Por todo lo comentado anteriormente, se puede decir que las Bases de Datos NoSQL tienen
mucho recorrido por avanzar y mejorar lo obtenido hasta ahora si desean sacar una ventaja y
ponerse por encima de las bases de datos relacionales. De momento representan una
interesante alternativa para aplicarla en determinados proyectos que no son muy favorables al
usar Bases de Datos Relacionales.

40
9 BIBLIOGRAFÍA

Libros Consultados

2 Pérez Fernández, Vicente y coautores. Bases de datos. Ciudad de La habana, Editorial


Pueblo y Educación, 2001.

https://www.ecured.cu/Base_de_datos_relacional

3 Óscar Pérez Mora, Bases de Datos.Mexico (2005)

http://www.uoc.edu/masters/oficiales/img/913.pdf

5 Shashank Tiwari, John Wiley .Professional NoSQL, & Sons, 2011.

http://www.wrox.com/WileyCDA/WroxTitle/Professional-NoSQL.productCd-047094224X.html

10 Claudia Pinilla, Mauricio Bello y Cristian Peña. Bases de datos orientadas a grafos, 2017

http://revistas.udistrital.edu.co/ojs/index.php/tia/article/viewFile/8769/pdf

Páginas Web Consultadas


1 Germán Romeo, “Bases de datos NoSQL”, Noviembre 2013

https://www.seas.es/blog/informatica/bases-de-datos-nosql/
4 Gustavo Rodriguéz, “Motores de Bases de datos”, Octubre 2015

https://prezi.com/ry9ckaivktcx/motores-de-base-de-datos/
6 Diego López de Ipiña, “Bases de Datos No Relacionales (NoSQL)”, Noviembre de 2012

https://es.slideshare.net/dipina/bases-de-datos-no-relacionales-nosql

7 Marin Dimitrov .”NoSQL databases”, Marzo 2010

http://www.slideshare.net/marin_dimitrov/nosql-databases-3584443

8 Nicolas Ruflin.” NoSQL or not NoSQL?”, Enero 2011

https://www.slideshare.net/ruflin/nosql-or-not-nosql/

9 S/A “Bases de Datos Clave Valor”

https://www.tecnologias-informacion.com/clave-valor.html

11 Rubenfa. “MongoDB”, Febrero 2014

https://www.genbeta.com/desarrollo/mongodb-que-es-como-funciona-y-cuando-podemos-
usarlo-o-no

41
12 Kristof Kovacs. “Comparativa de diferentes soluciones NoSQL”, Febrero 2013

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

13 Fernando Ramirez. “¿Qué es la base de datos Apache Cassandra?”, Junio 2017

https://fireosoft.com.co/blogs/que-es-la-base-de-datos-apache-cassandra/

14 Manuel Zaforas “Cassandra, la dama de las bases de datos NoSQL”, Marzo de 2016

https://www.paradigmadigital.com/dev/cassandra-la-dama-de-las-bases-de-datos-nosql/

15 S/A “Cassandra vs. MongoDB vs. Redis”

https://db-engines.com/en/system/Cassandra%3BMongoDB%3BRedis

16 Gerard Auladell “ Redis”, Abril de 2017

https://www.drauta.com/que-es-redis

17 Vicente Ayestarán “Estructuras de datos en Redis” , Noviembre de 2015

https://www.paradigmadigital.com/dev/no-solo-clave-valor-estructuras-de-datos-en-redis/

18 S/A “Instalación de Redis” , Octubre 2017

https://www.sololinux.es/instalar-redis-y-phpredis-debian-ubuntu-derivados/

19 Diego López de Ipiña, “Bases de Datos No Relacionales (NoSQL)”, Noviembre de 2012

https://es.slideshare.net/dipina/bases-de-datos-no-relacionales-nosql

20 Marcela Sena, “SQL vs NoSQL”, Marzo de 2017

http://www.ciberespacio.com.ve/2015/10/articulos/sql-vs-nosql-cual-debo-usar/

42
ANEXOS

Glosario de Acrónimos

3 ACID (Atomicity, Consistency, Isolation and Durability), que en español quiere decir:
Atomicidad, consistencia, aislamiento y durabilidad.

8 APIs (Application Programming Interface), que en español quiere decir: Interfaz de


programación de aplicaciones.

15 ATLAS (A Toroidal LHC ApparatuS), que en español quiere decir: Aparatos de El Gran
Colisionador de Hadrones toroidales.

4 BD (Base of Data), que en español quiere decir: Base de Datos.

11 BJSON (Binary JSON), que en español quiere decir: JSON Binario.

18 BSD (The Berkeley Software Distribution), que en español quiere decir: La distribución de
software de Berkeley.

20 CAP (Consistency,Availability and Partition Tolerance),que en español quiere decir:


Consistencia, Disponibilidad y Tolerancia de Partición.

14 CQL (Cassandra Query Language), que en español quiere decir: Lenguaje de Consulta de
Cassandra.

13 CRUD (Create, Read, Update and Delete), que en español quiere decir: Crear, Leer,
Actualizar y Borrar.

6 DBMS (Database Management System), que en español quiere decir: Sistemas de


Administración de Bases de Datos.

5 JOIN (Join), que en español quiere decir: Unir, Combinar.

9 JSON (JavaScript Object Notation), que en español quiere decir: Notación de objetos de
JavaScript.

16 LLOOGG (Realtime Log Analyzer Web App), que en español quiere decir: Aplicación web de
analizador de registro en tiempo real.

1 NoSQL (Not Only SQL), que en español quiere decir: No Solo SQL.

12 PDF (Portable Document Format), que en español quiere decir: formato de documento
portátil.

19 PHP (PHP Hypertext Preprocessor), que en español quiere decir: preprocesador de


hipertexto.

43
7 RDBMS (Relational Database Management System), que en español quiere decir: Sistemas
de Bases de Datos Relacionales .

2 SQL (Structured Query Language), que en español quiere decir: Lenguaje de Consulta
Estructurado.

17 VMWare (software virtualization system), que en español quiere decir: Es un sistema de


virtualización por software.

10 XML (Extensible Markup Language), que en español quiere decir: Lenguaje de Marcado
Extensible.

44

También podría gustarte