Práctica 15. Bases de datos no relacionales (NoSQL)

José Juan Sánchez Hernández

IES Celia Viñas (Almería) - 2018/2019

1 Bases de datos NoSQL

Las bases de datos no relacionales o NoSQL nos permiten almacenar información en situaciones donde las bases de datos relaciones pueden tener problemas de escalabilidad y rendimiento. Estas bases de datos están diseñadas para modelos de datos específicos y tienen esquemas flexibles.

Ejemplo:

Por ejemplo, suponga que queremos modelar el esquema de una base de datos sencilla para almacenar libros.

Si utilizásemos una base de datos relacional almacenaríamos la información en diferentes tablas, que estarían relacionadas entre sí mediante restricciones de claves primarias y ajenas. El modelo relacional está diseñado para permitir que exista integridad referencial entre tablas y para reducir la redundancia de la información mediante la normalización. En este ejemplo, tendríamos las siguientes tablas:

En una base de datos NoSQL, el registro de un libro se podría almacenar en un único documento JSON. Para cada libro, tendríamos los siguientes elementos: isbn, título, año_edición, id_autor y nombre_autor.

{
    "isbn": 9788448190330,
    "título": "Fundamentos de Bases de Datos",
    "año_edición": 2015,
    "id_autor": 11,
    "nombre_autor": "Abraham Silverschatz"
}

1.1 Características de las bases de datos NoSQL

1.2 Tipos de bases de datos NoSQL

1.2.1 Bases de datos de tipo clave-valor

Las bases de datos clave-valor son altamente divisibles y permiten un escalado horizontal a escalas que otros tipos de bases de datos no pueden alcanzar.

Imagen: Ejemplo de un base de datos clave-valor. Amazon Web Services.

Casos de uso

Ejemplos de bases de datos de tipo clave-valor

Tutoriales

Práctica

Iniciamos un contenedor Docker con redis en el puerto 6379.

docker run --rm --name redis-server -p 6379:6379 redis

Iniciamos un contenedor Docker con redis-cli que conecta con el servidor redis que hemos creado en el paso anterior.

docker run -it --rm --link redis-server:redis-server redis redis-cli -h redis-server -p 6379

Para almacenar valores utilizamos SET.

redis-server:6379> SET miclave "¡Hola mundo!"
OK

Para recuperar valores utilizamos GET.

redis-server:6379> GET miclave
"\xc2\xa1Hola mundo!"

1.2.2 Bases de datos de tipo documentos JSON

En algunas aplicaciones, los datos se representan como un objeto o un documento de tipo JSON porque es un modelo de datos intuitivo para los desarrolladores. Las bases de datos de JSON tienen una naturaleza flexible y facilitan a los desarrolladores el almacenamiento y la consulta de datos en una base de datos mediante el uso del mismo formato de modelo de documento que emplean en el código de aplicación.

Ejemplo

Ejemplo de un documento JSONque describe una película.

{
    "year" : 2019,
    "title" : "Avengers: Endgame",
    "info" : {
        "directors" : [ "Anthony Russo", "Joe Russo"],
        "release_date" : "2019-04-25T00:00:00Z",
        "rating" : 8.8,
        "genres" : ["Action", "Adventure", "Sci-Fi"],
        "image_url" : "https://your.server.com/images/avengers.jpg",
        "plot" : "After the devastating events of Vengadores: Infinity War (2018), the universe is in ruins. With the help of remaining allies, the Avengers assemble once more in order to undo Thanos' actions and restore order to the universe.",
        "actors" : ["Robert Downey Jr.", " Chris Evans", "Mark Ruffalo"]
    }
}

Casos de uso

Ejemplos de bases de datos comerciales de tipo documentos JSON

Tutoriales

1.2.3 Bases de datos de tipo grafo

Las bases de datos no relacionales basadas en grafos utilizan nodos para almacenar las entidades de datos y aristas para almacenar las relaciones entre las entidades. Una arista siempre tiene un nodo de inicio, un nodo final, un tipo y una dirección, y puede describir relaciones principales y secundarias, las acciones, la propiedad y cosas similares. No hay límite para la cantidad y el tipo de relaciones que puede tener un nodo.

Ejemplo

Este ejemplo muestra cómo sería el grafo de una red social. Las personas serían los nodos y us relaciones son las aristas. De este modo es posible conocer quiénes son los amigos de los amigos de una persona específica.

Imagen: Ejemplo de un base de datos basada en grafos. Amazon Web Services.

Casos de uso

1.3 Referencias

El contenido de esta web ha sido extraído de las siguientes referencias:

2 Licencia

Licencia de Creative Commons
Esta web está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.