04. BDs orientadas a Llave-Valor

Este tipo de bases de datos van a almacenar la información utilizando pares llaves-valor. Cada dato se guarda teniendo como identificador la llave, y almacenando el respectivo valor con el que se identifica. Y para poder extraer un valor hay que hacerlo a través de su llave única. Es como si cada valor fuera un ID único, como si tuviéramos tablas de un sólo registro con un sólo campo que es el ID.

Este modelo no va a tener relaciones ni jerarquías complejas, son muy eficientes en términos de rendimiento y escalabilidad. Al no tener esquemas fijos nos permiten con gran flexibilidad almacenar la información. Con estos tipos de bases de datos se pueden hacer los 4 tipos de operaciones básicas (CRUD). La velocidad y la simplicidad son cuestiones prioritarias. Pueden servir para aplicaciones que usan la caché como un sistema de acceso a la información, también para almacenar metadatos, para sistemas que utilicen colas…

Algunos ejms son Redis, React o Amazon Dynamo DB.

Redys

Redys es una base de datos de alto rendimiento y de almacenamiento en caché en memoria, que se utiliza ampliamente en aplicaciones web y sistemas distribuidos. Su nombre es la abreviación de Remove Diccionary Server (Servidor de Diccionario Remoto).

Algunas de las características son:

  • Almacenamiento en memoria: almacena todos los datos en la memoria principal del servidor, lo que permite un acceso muy rápido de los datos.
  • Modelos de datos versátiles: Redis permite una gran cantidad de estructuras de datos, como cadenas de texto, listas, conjuntos, hash, bitmaps… lo que permite una mayor flexibilidad en los tipos de datos que se pueden almacenar, y la manipulación según las necesidades que necesitemos.
  • Se pueden realizar operaciones atómicas, es decir, operaciones del CRUD.
  • La ejecución de las consultas se puede hacer de forma concurrente, por lo que la consistencia y la seguridad están aseguradas.

Trabajar con Redis es utilizar la terminal de línea de comandos, En https://redis.io encontramos toda la parte de la documentación. Si nos logeamos, nos lleva a una interfaz de administración donde tenemos una instancia de Redis ya sea en AWS, Google Cloud Plattform o Microsoft Azure, que son los 3 servicios de cómputo en la nube más importantes del mundo.

Nota: el uso de la terminal es imprescindible si queremos trabajar con este sistema gestor.

Instalar localmente Redis

Vamos a necesitar 100% la terminal de comandos. Vamos a la página https://redis.io, a la sección Get Started, y nos muestra las diferentes instalaciones dependiendo del sistema operativo. Para Mac sugiere hacer la instalación mediante Homebrew, que es un gestor de paquetes para los entornos de Mac. Para Windows no hay un ejecutable, propone instalar.

Existe un servicio para poder hacer pruebas, denominado Upstash, cuya URL es https://upstash.com/, y es una plataforma SeverLess, que provee servicios para diferentes productos, entre los que se encuentra Redis. Podemos comenzar con una versión gratuita. Para hacer el ejercicio que viene a continuación, si no tenemos instalado Redis en modo local podemos hacernos una cuenta gratuita en este servicio.

Creando un servicio en la nube de Redis

Vamos a utilizar la plataforma online de Upstash, cuya URL es https://upstash.com, crearnos una cuenta, y una vez creada tendremos un panel de control, en el cual existe una opción para crear bases de datos Redis. Vamos a crear una base de datos nueva denominada Demo Redis, por ejm, después elegimos una región y activamos SSL, y el servicio crea la base de datos.

Lo siguiente que tenemos que hacer es abrir una terminal en nuestro equipo y copiar el código que nos ofrece Upstash una vez hemos creado nuestra base de datos.

Comandos

Vamos a trabajar en un caso hipotético para empezar a trabajar con los comandos que vamos a ir viendo.

  • HSET: Este comando crea o modifica el valor de un campo de tipo hash. Nos sirve tanto para la creación como para la actualización. Un hash es como una colección. Veamos su sintaxis.
  • LPUSH: Este comando inserta antes.
  • RPUSH: Este comando inserta después.
  • HGETALL: Muestra todo.
  • HSET: Modifica contenido
  • DEL: Borra contenido.

Ejm

-- Crear dos usuarios
HSET user:1 name "Francisco" age 51 location "Madrid"
HSET user:2 name "Beatriz" age 35 location "Madrid"

LPUSH user:1:post 1001
LPUSH user:1:post 1002
LPUSH user:2:post 2001

HSET post:1001 content "Buenos días" created_ad "2023-11-04 10:00:00" likes 10
HSET post:1001 content "Buenas tardes" created_ad "2023-11-05 10:00:00" likes 20

-- Crear un tercer usuario
HSET user3: name "Inés" age 33 location "Bilbao"

-- Mostrar el objeto
HGETALL user:1
HGET user:1 name

-- Modifica la edad del usuario 2
HSER user:2 age 75

-- Elimina el usuario 3
DEL user:3

-- El usuario 1 crea un nuevo post
LPUSH user:1:post 1003

-- Mostrar la información del post 1001
HGETALL post 1001

-- Modificamos los likes del post 1002
HSET post:1002 likes 50

-- Eliminamos el post 1003
DEL post:1003

Con estos comandos podemos insertar información a una base de datos.

Nota: desde la opción Redis CLI podemos lanzar estos comandos.

Scroll al inicio