General NoSQL

Redis Labs great alternative to AWS Elastic Cache

1 – Introduction

Redis Labs provides a commercially backed implementation of the Redis data structure. It has two solutions, RedisLabs in the Cloud which is the product more used and on-premises solution called RLEC (Redis Labs Enterprise Cluster).

In both cases, Redis Labs adds core functionality to open-source Redis for clustering and HA, and advanced capabilities for data processing over and above traditional key-value implementations. It also provides MemcacheD Cloud like ElasticCache. In the other hand, most hosted services like Amazon, Azure or Heroku offer standard cloud instances pre-loaded with open source Redis. This approach does not provide great advantage over the do-it-yourself approach. In contrast, Redis Cloud adds a breakthrough technological layer to open source Redis, while fully supporting it. The technology visualizes multiple cloud servers into an infinite pool of memory, consumed by users according to the actual size of their datasets.

2 – Evolution from ElasticCache to RedisLabs

Redis AWS Elastic Cache

Amazon Elastic Cache is the platform included in Amazon Web Services. With this platform is easy to deploy, operate and use Redis in the Cloud. The clustering architecture of ElasticCache has a master-slave solution with Multi-AZ.

In this sense, for a lot of people was enough and works fine. Nevertheless, ElasticCache is expensive, secondly has limitations to scale up and down the Redis cluster. Moreover we need to consider another point, the Amazon instances architecture is not optimal for Redis because Redis is based on a single-threaded, so scaling CPU vertical is not optimum, so is better to scale in horizontal, for that we need a Redis Cluster solution and not a heavy increase instance size in master-slave architecture. Amazon uses a sledgehammer to crack a nut.

More inconveniences about Elastic Cache: For example, ElasticCache is using a Redis 2.8 version that is deprecated and now the stable version is 3.2. This stable version contains significant changes: memory optimizations, geovariables, clustering and others improvements. [ ]

Although the scalability problem we pointed, Elastic Cache recently announced hot scaling up for Redis nodes [ ]


An important point to consider is that Amazon main business is not Redis, however Redislabs is mainly focused in Redis. Moreover, Redislabs has Salvatore Sanfilippo, who is the creator of Redis and the company’s lead for open source development, steers the evolution of OSS Redis together with a dedicated team of Redis engineers. In order to adapt Redis for enterprise use, Redis Labs developed an additional technology layer that encapsulates the open source software and provides an enhanced deployment architecture for Redis, while supporting the open source API.

RedisLab has a good clustering architecture called Redis Cluster solution with a unique endpoint based on the Open Source solution. So the Backend Software only needs to point to a unique endpoint to read and write data, in contrast to use a master-slave architecture with ElasticCache. Good point.

Talking about the price, as we have been mentioning previously, this was an important aspects to consider and to decide to migrate finally to RedisLabs.

Also we have another Redislab product that is the RLEC on-promise solution. Also the RLEC solution can be installed with Amazon AMI [ ] or in your on-promise servers or wherever you want using an RPM.

3 – Redis PaaS comparison and benchmarks

Official Redislabs comparison:

Benchmark comparison:

A company called Altoros created an interesting Redis Benchmakrs. [ Redis as a Service Performance Benchmark: Redis Cloud, ElastiCache, openredis, RedisGreen, and Redis To Go, By Vladimir Starostenkov, R&D Engineer at Altoros ]. They designed a scenario to evaluate Redis Performance. So, in this Benchmark we can see the most importants Redis solutionts in the Cloud.

In summary to the Altoros documentation, RedisLabs outperformed the rest of the RaaS offerings in most use cases. The most important thing that you could see in the benchamarks is, Redislabs was the only solution that still scaled linearly in the combined scenario.

Our own small comparative.


Elastic Cache


Redis Version

2.8 (opensource)

Like 3.2 (commercially backed implementation)


Amazon AWS



RDB – each hour

AOF – every second





Number of databases per node











By Hash-Tag or RegEx

Database creating time



Maximum Database connections



VPC compatiblity



AWS Security group



(you need to configurate)

Password / SSL Authentication / Encrypthion




Hot Scalability

Up (recent feature)

Up / Down

Redis.conf configuration






Easy and simple to configure

Monitoring / Graphs



API Management





AWS, GCE Azure, IBM, SoftLayer

AWS Regions




We pay for instance size

We pay for data size

* MultiAZ = Cost data size x2


General In detail OpenSource

How to install Terminix on Ubuntu 15.10

What is Terminix?
Terminix is a tiling terminal emulator based on the gnome-terminal VTE widget that allows you to arbitrarily split terminals horizontally and vertically. It has similar features like iTerm or Terminator.
More information:

Terminix requires the following libraries to be installed in order to run:
* GTK 3.14 or later
* GTK VTE Widget 0.42
* Dconf
* GSettings
* DMD and DUB
Easy way to install DMD and DUB

sudo wget -O /etc/apt/sources.list.d/d-apt.list
sudo apt-get update
sudo apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring && sudo apt-get update
sudo apt-get -y install git build-essential
sudo apt-get -y install dmd-bin dmd-doc dub

Other options to install DMD and DUB

dpkg -i dmd_2.066.1-0_amd64.deb
unzip dub-0.9.25-linux-x86_64.tar.gz
mv dub /usr/local/bin

Main Installation 
If we have all the dependencies to Install Terminix on Ubuntu 15.10 or others Ubuntu versions, we can install Terminix with the next commands:

cd /
sudo unzip -d /
glib-compile-schemas /usr/share/glib-2.0/schemas/
cd /terminix-master


dub build --build=release



Installing PGLOADER into Amazon Linux 2015.03 or Centos6

Pgloader is a usefull tool to migrate data from Mysql to Postgress with a simple command or Python execution
For more information about this useful tool:
So basically, I write this post because I want to expand a little the Centos and Amazon Linux information that we can find in the Pgloader Official Page.
First of all we need SBCL to be able to compile Pgloader

How to install SBCL

  • It is curious because to install SBCL 1.1.14, we need sbcl 1.0.8 to compile sbcl 1.1.14)

sudo yum -y install yum-utils rpmdevtools @development-tools sbcl sqlite-devel zlib-devel
sudo yum -y groupinstall “Development Tools”
sudo rpm -Uvh epel-release-6*.rpm
sudo yum install -y sbcl.x86_64
tar xfj sbcl-1.1.14-source.tar.bz2
cd sbcl-1.1.14
./ –with-sb-thread –with-sb-core-compression
sudo sh

  • And finally we need to remove the old version that we used to compile the newer one.

sudo yum remove -y sbcl

  • softlink creation that we need it to compile Pgloader

ln -s /usr/local/bin/sbcl /usr/bin/sbcl

How to install PGLoader

  • After that we can install Pgloader

make pgloader
(or make or make make COMPRESS_CORE=no)

  • In Debian we use the next >> apt-get install sbcl unzip libsqlite3-dev make curl gawk freetds-dev libzip-dev


  • So in Amazon Linux or Centos6 we use:

yum install unzip make curl gawk libzip-devel
yum install freetds-devel.x86_64 yum install freetds.x86_64
yum install openssl-devel openssl
cd /path/to/pgloader
make pgloader
./build/bin/pgloader –help

General Hybrid Clouds OpenSource Social

Resumen CentOS Dojo en Barcelona

El CentOS Dojo tuvo lugar el pasado 29 de Octubre, organizada por el CSUC y patrocinada por Red HatFlytech, la Universitat Oberta de Catalunya y la Universitat Politècnica de Catalunya. Fue visitada por casi un centenar de personas, hubo unas ocho ponencias que resumimos en este POST:


Flytech presentó varias soluciones de infraestructura para centros de datos, centrándose en el rendimiento y en aspectos relacionados con la eficiencia energética; vimos tecnologías como el Fast Path, SSD y NVMe. Muy utilizadas por empresas nacionales muy conocidas como el PIC (IFAE), Tuenti, ADW, etc. Cuyos casos de éxito se sitúan en la utilización de grandes base de datos Mysql con discos SSD’s.


En esta parte del evento se realizaron dos presentaciones de OpenNebula: Una introducción de OpenNebula por Javier Fontan (Ingeniero de OpenNebula)  y un caso de éxito de OpenNebula por Jordi Guijarro y Xavier Peralta del CSUC y de la inicativa CloudAdmins; donde nos hablaron de su experiencia de uso para la comunidad científica y académica catalana.
La primera nos presentó las funciones de ONE como Cloud IaaS. Como ONE unifica la gestión de redes, almacenamiento, maquinas virtuales y todo empaquetado bajo una misma plataforma. Luego vimos como se pueden manejar las maquinas virtuales de forma sencilla (pensada para personas no técnicas), destacando la vista de administrador dónde se provee mucha información respecto a tratamiento de logs (stdout y stdin error’s) y la facilidad en la automatización de tareas. Con esto hay grandes beneficios para el usuario y para el Sysadmin, por lo tanto ONE tiene una buena gestión de grupos de usuarios donde uno puede dar permisos específicos para cada grupo (Admin, QA, test, …)
Para automatizar vimos que tiene una API, un command line interface, un interface para perfiles de tipo admin, una para usuarios y un dashboard donde podemos graficar y monitorizar nuestro Cloud. Otra gran característica es que puede interoperar con Clouds públicos como EC2, Azure, IBM… y pueden proveer servicios como una instancia de EC2 si ellos no tienen infraestructura disponible en ese momento. Nos mostraron tambien la diferencia entre la vision de administrador y la vision de un usuario normal, los templates en los que podemos basarnos para crear un servidor (centos, ubuntu….), la posibilidad de usar GlusterFS… .
También nos avanzaron que Opennebula puede funcionar con LXC, nos recomendaron el uso de la herramienta qemu-img y recomendaron que si usamos KVM sobretodo usar virtio para red y storage que mejora mucho rendimiento.
Luego Jordi Guijarro del CSUC nos explico su experiencia ONE en el CSUC, porqué se decidieron a usar OpenNebula y no Openstack y mostraron su entorno híbrido, en el que vimos que OpenNebula tiene funcionalidades de Vmware y también de AWS . Una de las características que destacaron fue su adaptación a Openvswitch (a nivel de red) y su recomendación de usar Qcow2 a nivel de disco. A su vez, nos demostraron su política de tarifas con una orientación al pago por uso mediante templates.
En su demostración, Xavier Peralta del  CSUC. nos presentó la nueva solución de Autoscaling (funcionalidad con la que AWS se ha hecho tan famosa) disponible a partir de  version de OpenNebula 4.2, llamada OneFlow y OneGate


Roger Pau Monne nos detalló sobre los tipos de guests que se pueden usar con Xen y sus distintas opciones para obtener el mejor rendimiento posible. A modo de ejemplo, quedó muy claro que no siempre es mejor full-virtualización que paravirtualización. No vale en instalar XEN y ya está, una buena recomendación es tunearlo o elegir el mejor tipo de virtualización para cada caso de uso. Quizás las siguientes imagenes les da una mejor idea de lo que se pretendía.
20141029_121836 20141029_121657 20141029_124027



Colin Charles, de la comunidad CentOS, nos mostró las diferencias entre MySQL y Maria DB (MySQL++). Introduciendo ejemplos de nuevas features, consejos, trucos para ajustar mejor el rendimiento en los desarrollos o en la escalabilidad y como enfocar distintas estrategias con MariaDB. Destacó como del global de TOP20 sites de Internet usan MariaDB, por ejemplo Google, Facebook, Youtube, Baidu, Wikipedia, Amazon, Linkedin, etc.
Empezó presentando la nueva arquitectura MariaDB, las mejoras en los storage engines de toda la vida como MyISAM, InnoDB y introdujo los nuevos storage engines usados por MariaDB del tipo clave-valor.
Como no, se compararon con Mysql. Comentando las nuevas mejoras de rendimientos en comparación con el Mysql, destacando algunos benchmarks que en Mysql se habla de milisegundos, en MariaDB mejoraban hasta Microsegundos. A parte, otras hizo distintas comparaciones y destacó su gran compatibilidad con Mysql. A parte de destacar sus 5 años de soporte que dan por versión y presentó la utilidad del MariaDB Galera Cluster 5.5, 10.0 muy buena alternativa a los Mysql vitaminados con Percona.
Por la parte de features presentó muchas cosas:
Virtual Columns, PCRE Regular Expressions, GIS, Geometry types (OpenGiS requirement) por ejemplo usado en OpenStreetMap, Synamic columns (mongodb, Redis, cassandra), SphinxSE, Full-text search via SphinxSE (como un ElasticSearch), etc.
Por la parte de conectividad y plugins, explicaron la gran posibilidad de instalar plugins, conectores externos (por ejemplo posibilidad de hacer Queries con Cassandra), además posibilidad de conectar con Oracle, MongoDB, ETL para BI o BA, Spider, etc.
A nivel performance y escalado presentaron muchas novedades y además mejoras en entornos Cloud:
Mejoras en el horizontal partitioning, built on top of partitions, sharding solutions, multiple shards backends, easy to expand, TokuDB (separate MariaDB + TokuDB), TokuDB uses fractal tree indexes instead of B-Tree, mejoras en el Threadpool, autenticación con PAM (usando /etc/shadow) podemos usar ldap, ssh pass phrases, password expiration, username mapping, multiple queries against giggles server, LIMIT ROWS EXAMINED, backups no bloqueantes, no needs for flush tables with read lock, no stalls for long running queries, consisten snapshot sees all of a transaction, or nothing, also for multi engines transactions, presentaron la solución Galera, MariaDB Galera Cluster, Multi-source replication, Global Transaction ID (GTID), support multisource replication, Automatic bin log position for master failover, change master running is simple! PARALLEL REPLICATION, NEW KILL SYNTAX (por ejemplo kill all queries by username), nuevas estadísticas, EXPLAIN enhanced, FUSION IO, OPTIMIZER maria db 10 vs mysql5.6
A nivel loggeo y auditoría presentaron el “SQL Error Logging Plugin” y el “MYSQL_AUDIT_PLUGIN”, por ejemplo muy recomendado para bancos y ciertas leyes de USA.
En resumen como se pudo ver un gran bombardeo de características nuevas, mejoras, rendimientos mejorados, etc. Vemos que MariaDB es una alternativa a Mysql o Postgres muy buena a tener en cuenta.


Fabian Arrotin, hizo un resumen de que herramientas son útiles para mantener nuestra Infraestructura con Centos.
Nos dieron una guia de “best practices” de como:
1. Instalación/deployment: Por ejemplo soluciones como PXE, Kickstart, cobbler, Foreman, VirtPlatform, CloudInit con VM.
2. Software: Usar RPM, sync, reposync, , pulp, katello, …
3. Mantenimiento: Nombró herramientas útiles como pdsh, cssh, mushh, shmxux, IaaCode (puppet/chef/ansible/Cfengine, bcfg2, SaltStack, etc.) y como no usar un GIT o un SVM, y separar el código de los datos con soluciones como (hiera).
4. Monitoring: (Agentless vs standard protocols vs agent), Nagios, Icinga, Zabbix, Zenoos .. Snmp / Ipmi, Centralizar logs con rsyslog, graylog2, ELK (Elastic search+Log stash+kibana), riemann.


Karanbir Singh ( hizo una guia rápida sobre Docker, explicó porqué se le da tanta importancia actualmente y como la gente lo puede utilizar.
A parte, para entender mejor Dockers, nos dio detalle de la diferencia entre virtualización y containers. Y con esta introducción nos detalló Docker, nos habló de los parecidos que tiene con Vagran según su funcionalidad, como instalarlo, como usarlo, como funciona, que sistema de ficheros usa (AUFS V/s Device mapper overlay support), ejemplos, demostraciones y finalzó la presentación haciendo una demo de un framework muy interesante para gestionar fácilmente Docker llamado Cockpit .

Running CentOS in the Cloud

El mismo Karanbir Singh finalmente hizo una demostración a todos los asistenes de uso de Centos en distintos entornos Cloud como el Google compute Cloud, Amazon, Rackspace, Eucalyptus, etc. A parte de sus usos con sus APIs correspondientes (GClod, AWS, EUCA,… )
Os dejamos algunas fotos del evento:
20141029_113325 20141029_112227 20141029_124638 20141029_165455



Desde Cloudadmins queríamos agradecer tan buenas conferencias que dieron todos y por su participación. Esperamos que se hagan más en un futuro. Saludos
Marius Duch, Jordi y Alex Vaqué


Un poco de humor para las vacaciones

Con la parada por vacaciones que tenemos en el Blog queríamos dar un pequeño post especial con un toque de humor al estilo DevOps Reaction. Ya aprovecho para dar las gracias a HP por la ayuda prestada en la elaboración de estos GIFs animados.
when all people in the company want you to do their requests at same time

when the junior sysadmin breaks production after running Puppet

Helpdesk guy going to fix laptop of the hottest girl in the office

General In detail OpenSource

Los principales sustitutos de EXT4 ( ZFS, XFS, BRTFS )

Ext4 tiene defectos de diseño que cada vez cuesta más superar y Ext4 ya no tiene las ventajas que tenía antes en comparación BRTFS, ZFS, XFS u otros. Por ejemplo, Ext4 es muy bueno hasta llegar a sistemas de archivos de hasta 16TB. Ext4 sigue siendo una opción estable y segura pero ya empezamos a ver que si quieres tener una partición de más de 1EB o si quieres almacenar archivos de más de 16TB pues entonces si que necesitas sistemas como ZFS o BRTFS. Además estos, tiene soporte para últimas tecnologías como SSD donde se notan una mejoría con respecto a Ext4. Además vemos que en los últimos Kernels de Linux con BRTFS ya empieza a superar en rendimiento al Ext4 y luego vemos que el ZFS se esta empezando a usar más en el mundo Linux y no solamente en Solaris y FreeBSD que es donde provenía en un principio.

BRTFS está siendo una opción muy buena para los nuevos Desktops; Ubuntu, Suse, Fedora ya empiezan a tenerlo en sus últimas versiones por defecto. BRTFS será el sistema de archivos en el que probablemente se asentará las versiones GNU/Linux Deskop en un futuro muy cercano. Este ya empieza a ser recomendado para ser utilizado ya en producción.

Para los que les gustan ir a la última ya podéis pasar vuestro EXT4 a BRTFS sin formatear.  A parte del BRTFS vemos el sistema de ficheros ZFS creado por SUN es una opción muy robusta y con una larga experiencia en el mundo del servidor. Las características del ZFS es que incluye integridad de datos (protección contra la corrupción de bits, etc), soporte para altas capacidades de almacenamiento, la integración de los conceptos de sistema de archivos y gestión de volúmenes, snapshots y copy-on-write clones, chequeos de integridad continua y reparación automática, RAID-Z y NFSv4 soportado nítidamente. Hay muchas comparativas que hablan mejor del ZFS que del BRTFS que está empezando a ser el nuevo estándar. En el siguiente enlace tenemos una tabla comparativa donde vemos que ZFS tiene unas características muy buenas en comparación BRTFS: Para los que quieran saber más:

A parte de BRTFS y ZFS tenemos otras opciones más opciones como XFS que sigue siendo una opción más para servidores que necesitan el mejor rendimiento posible com por ejemplo en base de datos, virtualización, etc. Proviene de Silicon Graphics (Irix) compañía que destacó en el mundo de la supercomputación y entornos multimedia de alto rendimiento. Fue diseñado para tratar grandes ficheros y para escalar grandes volúmenes. Por lo tanto video y ficheros multimedia son muy bien gestionados por este sistema de ficheros. Además actualmente vemos que se ha extendido en entornos de BigData y Cloud, como por ejemplo en Cassandra y EC2. Si quereis saber más de XFS:
Luego para temas de SSD tenemos opciones específicas como NILFS2, que ya no entraremos más en detalle. En resumen vemos que la tendencia está entre BRTFS para Desktops y para el mundo más profesional de alto rendimiento vemos opciones muy buenas como ZFS y XFS.

SGI Infinite Storage SGI
SGI Infinite Storage SGI

Bigdata General Guide In detail NoSQL OpenSource Social

Datos en formato Grafo (Parte II – Web Semántica o Linked Data)

La Web Semántica también llamada Web 3.0 o Linked Data, es una funcionalidad de la Web que permite encontrar, compartir y combinar la información más fácilmente. Es una iniciativa de Tim_Berners-Lee (director del W3C e inventor de la Web) para permitir que la información que reside en la red sea accesible y “comprensible” no sólo por los humanos, sino también por las máquinas. Es una revolución tecnológica que está cambiando la forma de entender la Web y obligando a que todo evolucione: los buscadores, los navegadores, el desarrollo y el SEO.  Aquí es donde aparecen actores que quizás no les interese esta evolución.

La Web Semántica propone nuevas técnicas y paradigmas para la representación del conocimiento que faciliten la localización, compartición e integración de recursos a través de la Web. Estas nuevas técnicas se basan en la introducción de conocimiento semántico explícito que describa y/o estructure la información y servicios disponibles, de forma apropiada de ser procesada automáticamente por un software. La Web Semántica mantiene los principios que han hecho de la web actual un éxito, como son los principios de descentralización, compartición, compatibilidad, y la apertura al crecimiento.

Hay artículos que mencionan el fin de los grandes buscadores como Google si se aplicara la Web Semántica en toda la red. En este contexto un problema clave es alcanzar un entendimiento entre usuarios, desarrolladores y programas de muy diverso perfil. Uno de los ejes principales de esta visión es la noción de ontología, que viene del campo de la Inteligencia artificial, como herramienta clave para alcanzar dicho entendimiento entre las partes que participan de este conocimiento común.

Esquema de la Web Semántica


Para entender la Web Semántica en su totalidad tenemos que entender las partes de RDF, OWL y el lenguaje de consultas sobre estos formatos denominados SPARQL. Como se puede ver en el siguiente esquema, un XML es un subconjunto RDF, como un RDF es un subconjunto de OWL. Vienen a ser un OWL que incluye las propiedades del RDF y el RDF incluya las propiedades del XML.



Comparación Web Actual con Web Semántica

En el gráfico se puede ver una comparativa de la Web Semántica con la Web actual, tal como se relacionan sus elementos entre ellas. El HTML tiene un tipo de relación simple llamada hipervínculo (HREF) que relaciona recursos (HTML) sin nombrar el tipo de relación, en cambio la Web Semántica tiene muchos tipos de relaciones entre distintos tipos de información, esta es una de las principales grandezas que tiene esta nueva tecnología.


Comparación generación Web actual con Web Semántica

Característica 1ª Generación 2ª Generación
Lenguaje principal HTML XML (RDF, OWL)
Forma y estructura Documentos no estructurados Documentos estructurados
Semántica Semántica implícita Etiquetado explícito (metadatos, web semántica)
Relación entre contenido y forma HTML = fusión de forma y contenido Estructura en capas de forma y contenido: XML + transformación (p.ej., XSL) a HTML, WML, PDF, u otros formatos
Editabilidad Documentos estáticos Documentos dinámicos
Descomponibilidad y recomponibilidad Sitios web monolíticos, independientes Bricolaje (agregación), sindicación, reasignación de contenido
Interactividad Medio de difusión unidireccional Web editable, bidireccional
Audiencias Para consumo humano Para humanos y ordenadores (p.ej., servicios web)
Control de producción Centralizado Descentralizado (peer-to-peer P2P)

Utilidad y ventajas de la Web Semántica

Para el fin de recuperar información, la Web semántica pretende la creación de una nueva forma de intercambio de datos que se fundamente en las representaciones de la información contenida en los recursos de la Web, de manera que puedan ser entendidos por las máquinas.

Se busca la mejora en la comunicación entre las máquinas y los humanos, reduciendo considerablemente la acción de estos segundos sobre los primeros. La forma de conseguirlo es dando a la Web un mayor significado, con lo cual se favorece la compartición, procesamiento y transferencia de información de forma sencilla.

La principal ventaja de la Web Semántica es recuperar información. Ésta permite al usuario dejar en manos del software, tareas de procesamiento o razonamiento de un determinado contenido. Por otra parte, el introducir significado a una Web mejora la eficacia de los buscadores, ya que facilita su tarea de estudio del documento. De esta manera, se puede afirmar que la Web Semántica facilita la localización de recursos; la comunicación entre programas y personas; y el procesamiento y manipulación de datos e información de manera automática en lugar de manualmente, como hasta ahora.

En conclusión, se intenta llegar a un estándar en esquematizar la información para poder poner la gran cantidad de información de la red en orden. Una mejor organización significa una mejor agilidad en moverse por la red. Además que se distribuye de forma más humana posible en comparación como se hace actualmente.

Algunos creen que la implementación de la nueva web será el fin de los grandes buscadores (ya que la web pasaría a ser descentralizada); otros que simplemente evolucionarán a mejor aunque tendremos más varias disponibilidades; o otros creen que habrán buscadores más temáticos y no tan generales. Lo más importante es que la libre circulación de la información dará mejores resultados.

Como ejemplos de casos prácticos actuales podemos encontrar:

  • Redes Sociales como Facebook, LinkedIn, Myspace, OpenSocial, etc.

  • Amarok y otros reproductores MP3 que tienen una base de datos de música en RDF.

  • Parecido a las redes sociales hay el buscador y reproductor musical Spotify, dónde el usuario, a partir de un grupo de música puede ir descubriendo grupos o músicas semejantes.

  • Hay experimentos como la que mapea toda la información de la Wikipedia para ser migrada a RDF. Otros como OntoWorld es un nuevo buscador desarrollado por MediaWiki. Hice pruebas con la DBPedia y busqué “Viajar+Joven” y me apareció Albergues (aquí la inteligéncia de que automáticamente relacionó Joven con viajes LowCost)


Antes de entender la Web Semántica, hay que entender sus antecedentes y su evolución hacia la posible Web 3.0.

En el inicio del WWW (World Wide Web) teníamos la Web 1.0 donde todas las páginas eran estáticas, principalmente creadas con el lenguaje HTML, con unos buscadores muy limitados. La mayoría de contribución de la red eran Webs de corporaciones, identidades públicas y privadas. El usuario tenía muy limitada su participación en ellas lo que la convertía en una red unidireccional. Más tarde, se empezó con la creación de páginas personales estáticas. Posteriormente, el Web 2.0 revolucionó el WWW con la llegada de lenguajes como el PHP, Flash, Java, etc. Estos lenguajes permitieron desarrollar Webs dinámicas y multimedia. La web dinámica tiene como principal protagonista el usuario humano que escribe artículos en su blog o colabora en un wiki. En cambio, la web semántica orienta el protagonismo en agentes inteligentes que entiendan de lógica descriptiva en OWL; y concebida para que las máquinas hagan el trabajo de las personas a la hora de procesar la avalancha de información publicada en la Web. Con ella encontramos ya inteligencia artificial en la web.

No está aún del todo claro si la Web Semántica y la Web 3.0 son sinónimas. Se comenta que “Web 3.0” es aún un concepto demasiado abstracto para definirlo. La web 3.0 será una revolución, si como hemos comentado anteriormente; se logra una combinación efectiva entre la inclusión de contenido semántico en las páginas web y el uso de inteligencia artificial que saque partido de ella.

Podemos comprobar que el rápido desarrollo de la sociedad de la información, en concreto de las tecnologías implicadas, ha hecho posible la superación de muchas barreras. Por ejemplo: el almacenamiento de datos es un reto superado, la comunicación es también otro problema resuelto gracias a Internet. Entonces, ¿cuáles son los nuevos retos a superar? Según muchos, es la búsqueda de información y su integración.

El ejemplo más claro y más rápido que se puede encontrar está en Internet. A pesar de la gran cantidad de información que hay en la red, no se encuentra siempre lo que se busca y a veces se tarda mucho en encontrarlo. Los metadatos y las ontologías intentan mejorar estos inconvenientes, y la Web Semántica se caracteriza por incorporar básicamente éstos.

Con las ontologías se intenta encontrar un lenguaje común para describir varios temas. Una ontología combina varios esquemas en una estructura de datos, que contiene todas las entidades relevantes y sus relaciones dentro del dominio. La ontología es usada para una variedad de propósitos, incluyendo el razonamiento inductivo, la clasificación, y una variedad de técnicas de resolución de problemas. Las ontologías se usan para establecer conceptos y relaciones, pudiendo ser compartidas por todos.

Dar significado a los datos ya disponibles en Internet es una tarea que se resuelve añadiendo nuevos datos a los datos previos. Estos “meta-datos” expresan la semántica de dicha información, haciendo referencia a elementos de una ontología (compartida por todos).

La idea de la web semántica es establecer un marco, a nivel mundial, capaz de abarcar tareas como la búsqueda, teniendo en cuenta la semántica y aportar esa tecnología de integración. Así, Berners Lee, a través del consorcio W3C, pretende establecer una serie de estándares lo suficientemente consensuados como para que sean globalmente utilizados. Por ello han planteado una arquitectura general:

Las siguientes diapositivas muestran un posible camino para la evolución de Internet. En éstas, ya se habla de la Web 4.0, pero lo curioso es que aún no se ha definido ni la Web 3.0. Se pueden comprobar los antecedentes de la Web Semántica, un posible después y su línea de evolución. Claramente son unos datos muy subjetivos y no oficiales, pero da una idea de los antecedentes previos y lo que puede llegar en un futuro. Se puede comprobar que cada tecnología viene acompañada de una serie de componentes e ideas que la forman.

Bigdata General NoSQL OpenSource Social

Datos en formato Grafo (NoSQL) – 1a Entrega

Actualmente las base de datos NoSQL están en auge ( Podemos encontrar una gran diversidad según su arquitectura; las más utilizadas son del tipo Key-Value (como Cassandra o Voldemort) 
o las documentales (por ejemplo MongoDB y CouchDB). Aunque existen otras no tan conocidas como las que os queremos presentar; BBDD NoSQL basadas en grafos o tripletas como DEX y Neo4j. ( A parte luego ya hay base de datos NoSQL que ya son casos híbridos que es el caso de OrientDB ( que es un híbrido orientado entre base de datos en formato grafo y documentales.
Dex introducción
Os queríamos introducir DEX una base de datos NoSQL de grafos con muchos casos de éxitos. DEX ( está escrita en C++ aunque se puede utilizar con muchos otros lenguajes de programación y una de sus características principales es que permite analizar grandes volúmenes de datos.
DEX está basado en el modelo2 de base de datos en grafo, que está caracterizado por cumplir 3 propiedades: las estructuras de los datos son grafos o estructuras similares a un grafo o tripleta, la manipulación de los datos y las consultas se realizan con operaciones orientadas a grafo y existen restricciones para garantizar la integridad de los datos y de sus relaciones.
Un grafo de DEX es un multigrafo dirigido etiquetado y con atributos. Está etiquetado porque tanto nodos como aristas pertenecen a tipos. El grafo es dirigido porque permite que existan tanto aristas dirigidas como no dirigidas. Nodos y aristas pueden tener tantos atributos como se desee. Finalmente también decimos que es un multigrafo porque permite que existan múltiples aristas entre dos nodos aunque éstas sean del mismo tipo.
La principal característica de DEX es su capacidad de almacenamiento de datos y rendimiento, con órdenes de magnitud de miles de millones de nodos, aristas y atributos, gracias a una implementación con estructuras ligeras especializadas. (Wikipedia)


Dex comparación con mysql

Depende mucho de cada caso de uso para saber cuando es más recomendado usar DEX u otro tipo de base de datos. Hemos querido hacer una típica comparación comparando DEX con MySQL. Elegimos MySQL ya que es una de las base de datos más usadas actualmente. Podemos ver en el siguiente listado que ventajas y desventajas nos aportan una base de datos relacional como el MySQL en comparación con una de grafos como DEX.

Ventajas del Mysql:
  • Mejor medición del performance (DEX tiene herramientas pero no suelen ser en tiempo real como pueden ser en MySQL)
  • Madurez. Está claro que las RDB como el MySQL son más maduras que DEX. Este hecho aporta que a nivel seguridad el MySQL es también más maduro y su interfície de gestión es más avanzada.
  • Claramente hay muchos más casos de éxito del MySQL
  • La implementación de MySQL es sencilla y además la mayoría de gente tiene más experiencia en este ámbito de las RDB. Siguiendo a nivel coste, DEX vuelca todos sus datos en RAM por lo cual es más costoso a nivel Hardware que las RDBs. Aunque actualmente el precio de la RAM se está reduciendo cada vez más.
  • Escalabilidad. Curioso caso, el NoSQL suele ser muy utilizado por las carencias de MySQL a nivel escalabilidad. El DEX en sus primeras versiones cojeaba un poco a nivel escalabilidad. Aunque tenemos que estar atentos porque las últimas versiones de DEX mejoran mucho esta característica y quizás este punto ahora sea más favorable para DEX.
Ventajas DEX sobre Mysql:

Ahora viene la parte interesante:

  • Aparentemente MySQL es más ineficiente para modelos de datos complejos o datos flexibles.
  • Es ineficiente para consultas estructurales. O para uso intenso de JOINS.
  • El DEX permite gran capacidad de tratamiento de grandes volumes con un alto rendimiento
  • Los Grafos suelen ser muy utilizado en redes sociales y en el mundo del Big Data.
  • El DEX se puede integrar con dos base de datos públicas.
  • WordNet: definiciones y diccionarios.
  • ConceptNet: relaciones entre conceptos.
  • Muy flexible para manejar Schemas desconocidos o dinámicos
  • El DEX tiene unas consultas estructurales y permite la navegación entre consultas.
  • Fácil mapeo entre ficheros CSV a DEX.
  • Tal como hemos comentado la escalabilidad a mejorado mucho en las últimas versiones. Cosa que seguramente ahora será mejor que el MySQL en este ámbito. Está aun por probar por parte nuestra.

Algunos casos para usarse de forma mucho mejor que MySQL u otras base de datos RDB y NoSQL:
– Encontrar todos los caminos entre 2 saltos de distancia (
– Encontrar amigo con el que tienes más amigos en común. Como también dar recomendaciones de grupos o música.
– Encontrar el camino más cortos entre dos elementos.
– Dijkstraa con DEX:
– Poner pesos entre diversos nodos con un coste. De esta forma podemos buscar el coste más pequeño entre nodos de distintos intereses entre todos .
Ejemplo simple de un HelloWorld con DEX

public class HelloWorld {
DEX dex = new DEX();
GraphPool gpool = dex.create("/tmp/image.dex");
System.out.println("Hello, World");

En la web de DEX podeis encontrar muchos más ejemplos. (

Las alternativa a DEX

La más conocida y más utilizada a parte de DEX es Neo4j. . También tiene varias versiones como DEX. En el caso del Neo4j, tiene 3 versiones:

  • Comunidad está licenciado bajo GPL, y contiene toda la graphiness impresionante que deseas
  • Advanced es AGPL licencia, y agrega capacidades de seguimiento para su base de datos
  • Enterprise es también AGPL licencia, y agrega el monitoreo, las copias de seguridad en vivo y alta disponibilidad.

A parte de DEX y Neo4j que son las más utilizadas también hay muchas otras más, os recomendamos la siguiente lectura:
Y por cierto, esta imagen hace un muy buen resumen y clasificación del estado del arte de como esta actualmente el mundo del SQL, NoSQL y el Big data.

Bigdata General Hybrid Clouds OpenSource

Storm Project una "alternativa" a Hadoop

StormProject es una alternativa a Hadoop creada por Twitter y liberada el 2011 como Open Source y cada vez más adoptada por muchas compañías del mundo.
Storm permite crear una forma fácil de escribir y escalar cálculos complejos en tiempo real en un clúster de computadoras, garantizando que cada mensaje sea procesado. Este consigue tolerancia a fallos. Además permite crear gran cantidad de topologías con senzilles en un clúster usando casi cualquier lenguaje de programación (Clojure, Java, Ruby, Python, … )
Storm tiene muchos casos de uso: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL y muchos más.
En definitiva es escalable, tiene tolerancia a fallos, garantiza que tus datos sean procesados y fácil de instalar y operar.


Un clúster de Storm es superficialmente similar a un clúster de Hadoop. Considerando que sobre Hadoop se trabaja con “MapReduce” y con Storm se trabaja con “topologías”.
Entre Hadoop y Storm hay la similitud que ambos procesan la carga de forma distribuida y fueron diseñados para distribuir el proceso entre una gran cantidad de máquinas, de esta forma pueden repartir y dividir la carga del trabajo.
Pero Hadoop no fue diseñado para trabajar con los datos en tiempo real sinó para dejar los procesos en batch, mientras se tiene que esperar que el trabajo MapReduce termine antes de cargar los resultados. En cambio Storm si ha estado pensado para trabajar de forma instantánea en tiempo real.
Tened en cuenta que los Sistemas más comparables con Storm no son Hadoop sino soluciones como Esper, Streambase, HStreaming y Yahoo S4. De estos el que más se asemeja es el S4 aunque Storm con comparación a este garantiza el procesamiento de los mensajes. Además vemos que ha salido el proyecto que es un híbrido Storm-Hadoop creado también por Twitter.


Storm se integra con tecnologías de gestión de colas y de base de datos que la mayoría ya conocemos y usamos. Una topología de Storm consume flujos de datos y procesa aquellas corrientes en formas arbitrariamente complejas, volviendo a particionar las corrientes entre cada etapa del cálculo.
Para aprender más de su funcionamiento les recomendamos los siguientes enlaces:
Básicamente veréis que Storm utiliza una cantidad reducida y simples de primitivas conocidas como: nodo (workers), streams, spouts, bolts, workers y topologías. Con estos elementos, el framework se encargará de repartir el trabajo entre sus diversos recursos.
A Storm topology


Storm es muy rápido, permite procesar millones de mensajes por segundo en un pequeño clúster.
Se ha visto que tiene un rendimiento muy alto ya que puede procesar una gran cantidad de mensajes con una latencia muy baja. Storm puede procesar un millón de mensajes de 100 bytes por segundo en una computadora con Intel 2x E5645@2.4Ghz y 24GB de memoria.

Dependencias tecnológicas para hacer funcionar Storm

Storm se basa en las siguientes tecnologías: Apache Zookeeper, un gestor de colas de mensajes como ZeroMQ, Java, JZMQ (Java Binding for ØMQ), Python 2.6, etc. ZooKeeper es usado para gestionar los distintos componentes del cluster.

Para instalar Storm se puede utilizar GIT y Maven. Además este permite crear fácilmente entornos de desarrollo en un solo nodo de esta forma se puede desarrollar y testear topologías en local. En los siguientes enlaces se explica como instalar Storm con ubuntu, centos, on a single machine y basic installation
Una curiosidad que a nivel Cloud nos encotramos el sub-proyecto que permite arrancar un cluster Storm dentro de Amazon Web Services ( Setting up a Storm cluster y storm-deploy ).

Más información en:

· Storm Wiki

General In detail OpenSource

Containers otra forma de virtualizar


Virtualization on the OS level, a.k.a. containers virtualization

No todo es Xen, KVM, Vmware,etc. también tenemos los Containers! Ya se ha hablado mucho de las grandes ventajas que nos ofrecen los hipervisores tipo XEN, KVM, VMWare… aislamiento, seguridad, etc. Pero si nos encontramos un entorno que no nos hace falta arrancar distintos tipos de sistemas operativos en nuestros servidores. Es cuando podríamos estudiar la opción de utilizar los Containers y su virtualización a nivel de OS. En este artículo queríamos introducir la virtualización a nivel Sistema Operativo. Ella nos permite arrancar multiples instancias del mismo Sistema Operativo. Actualmente hay muchas opciones del tipo OS-level virtualization como OpenVZ, Virtuozzo, Linux-VServer, Solaris Zones, LXC y FreeBSD Jails

Containers (LXC, Zones, Jails)

Containers es una tecnología de virtualización en el nivel de sistema operativo. En comparación otros como Xen, KVM, Vmware, etc. Los containers no proveen de una máquina virtual, más bien proveen un entorno virtual que tiene su propio espacio de procesos y redes. Por eso que los containers vienen integrados en el Kernel del Sistema Operativo. Pues según que tipo de sistema operativo nos encontremos, los podemos clasificar por: Linux Containers (LXC) en Linux, en Solaris tenemos Solaris Zones y en FreeBSD los Jails.
Normalmente las instancias tienen compartido el acceso al hardware principal, el hardware no está virtualizado como en el caso de las soluciones típicas de hipervisor. Y estas instancias suelen compartir el mismo kernel.
Los Containers son similarer a otras tecnologías de virtualización en el nivel de SO como OpenVZ y Linux-VServer,
Las ventajas de estos es que son entornos muy ligeros (no incluye el overhead de los hipervisores tradicionales). Además los discos virtuales són presentados como directorios en el sistema central. Luego dependiendo de que sistema operativo, tendrán su sistema de monitorizacion, herramientas de mantenimiento tipo ps, pkg, etc, herramientas de gestión para limitar CPU, RAM, etc.

OpenVZ and Linux V-Server

En comparación los containers, OpenVZ y Linux V-Server no vienen integrados en el kernel. Aunque igualmente aprovechan cosas de él . Los Kernels se tienen que parchear y compilar para ser usados.
En el resto de cosas, las características son muy parecidas a los Containers comentados anteriormente.
Las máquinas virtuales tienen compartido el acceso al hardware principal, ya que el hardware no está virtualizado como en el caso de las típicas soluciónes hypervisor. Por lo tanto no tienen este overhead de los hipervisores.
Las instancias virtuales tienen en común el mismo Kernel y los discos son presentados como directorios en el sistema principal.
Aunque en casos como Open-VZ es posible tener muchas distribuciones Linux, estas soluciones también permiten limitar los recursos de hardware como RAM, IO, CPU, … Hasta el momento V-Server no permite migración en caliente, OpenVZ si.
OpenVZ y V-Server eran una sólida alternativa a los LXC, ya que se encontraban antes un poco verdes. Actualmente con las últimas actualizaciónes del Kernel de Linux el LXC ya se encuentra en un estado más solido.

User Mode Linux

User Mode Linux es un caso poco común ya que UML se creó para que los desarrolladores del núcleo de Linux pudieran probar versiones inestables del núcleo sobre un sistema en funcionamiento. Como el núcleo en prueba es sólo un proceso de usuario, si se cuelga, no compromete al sistema que lo aloja. Pero además, el uso de UML se ha extendido a otras posibilidades como la creación de honeypots, ejecución de servicios de red, realizar pruebas con software inestable o incompatible, …
Wikipedia: UML es una modificación del núcleo Linux para que funcione sobre su propia interfaz de llamadas al sistema. De este modo, un núcleo compilado para la arquitectura um puede operar como un proceso de usuario más de otro núcleo Linux que hace las veces de anfitrión.

Tabla comparativa:

Esta tabla no incluye las Zonas de Solaris, ni los Jails de BSD:
Por cierto, para los que usais Libvirt , este soporta como Containers el LXC, OpenVZ y UML.