Implementacion de Riak
Implementacion de Riak
Implementacion de Riak
En principio, Riak se basa en REST, esto quiere decir que cada URI especifica un recurso
dentro de la base de datos, y sobre ese recurso podemos realizar las acciones HTTP que se
relacionan a cualquiera de las acciones básicas de una petición:
GET equivale a tomar datos, sería la R del CRUD (retrieve) o el SELECT del SQL.
PUT equivale a insertar datos nuevos, sería la C del CRUD (create) o el INSERT del
SQL.
POST equivale a una modificación o actualización de datos, sería la U del CRUD
(update) o el UPDATE de SQL.
DELETE equivale a una eliminación del dato, sería la D (delete) o el DELETE de SQL.
Esto permite muchas ventajas, como el uso, en el GET, de la cabecera If-Modified-Since, que nos
dará la posibilidad de comprobar si un elemento pesado (imagen, vídeo o similar) es nuevo o no,
para volver a descargarlo. Riak nos retornará el objeto con el mensaje 200 para indicar que hay uno
nuevo, o solo la cabecera 304 (Not Modified) para indicarnos de que es el mismo que ya tenemos,
por lo que no hace falta volver a transmitirlo.
Composición de la URI
URI para localizar recursos dentro de Riak se puede establecer como sigue:
/riak/BUCKET/RESOURCE
Estos recursos son un espacio en el que podemos guardar la información que necesitemos.
Puede ser un texto normal, codificado como YAML, como JSON, como XML, o incluso
una imagen o un vídeo... o incluso una imagen ISO (comprobado con una ISO de Sabayon
de 700 MB aproximadamente).
Por lo que, podemos probar a hacer algunas prácticas. Lanzamos Riak. Si lo tenemos en
ejecución en el puerto 8098 (es el de por defecto cuando se instala el paquete deb),
podemos hacer lo siguiente:
La comprobación más simple es a través del cualquier navegador que tengas instalado en
esa misma máquina:
http://127.0.0.1:8098/riak/pruebas/imagen.jpg
Como decíamos antes, vamos a dar un repaso al sistema de MapReduce, el cual fue
popularizado por Google. Este se basa en el algoritmo de divide y vencerás, realmente, ya
que realiza un lanzamiento sobre cada elemento individual (map) tomando un resultado y,
después, la parte de reduce, se encarga de analizar y unificarlo todo en un solo resultado.
Por lo tanto, tenemos que enviar mediante POST, a una URI concreta, un formato JSON de
dato que será el siguiente:
{"map": {
"language":"javascript",
"keep": true
}}
]}
return [value.key];
else
return [];
Conclusión
Hay que tener presente que Riak es una muy buena base de datos, que fundamenta sus
potencias en la posibilidad de contar con un cluster, lecturas rápidas con caché, y búsquedas
artificiosas con MapReduce, pero puede haber otros usos en los que las consultas de
modificación y eliminación masivas sean lo más importante y esto ya sería mejor abarcarlo
con otra base de datos de otro tipo.