Categories
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. [ https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES ]

Although the scalability problem we pointed, Elastic Cache recently announced hot scaling up for Redis nodes [ http://amzn.to/1pKWKKo ]

RedisLabs

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 [ https://aws.amazon.com/marketplace/pp/B016WJQY84?ref=cns_srchrow ] or in your on-promise servers or wherever you want using an RPM.

3 – Redis PaaS comparison and benchmarks

Official Redislabs comparison:

https://redislabs.com/redis-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

Redislabs

Redis Version

2.8 (opensource)

Like 3.2 (commercially backed implementation)

Company

Amazon AWS

RedisLabs

Persistence

RDB – each hour

AOF – every second

RDB

Snapshots

yes

yes

Number of databases per node

16

1

MultiAZ

yes

yes

Clustering

No
(master-slave)

yes

Sharding

no

By Hash-Tag or RegEx

Database creating time

minutes

seconds

Maximum Database connections

65.000

infinite

VPC compatiblity

integrated

yes

AWS Security group

yes

Yes

(you need to configurate)

Password / SSL Authentication / Encrypthion

no

yes

     

Hot Scalability

Up (recent feature)

Up / Down

Redis.conf configuration

Yes

Limited

     

Alerts

CloudWatch

Easy and simple to configure

Monitoring / Graphs

Yes

Yes

API Management

Yes

No

Clouds

AWS

AWS, GCE Azure, IBM, SoftLayer

AWS Regions

All

AWS/us-east-1
AWS/us-west-2
AWS/eu-west-1
AWS/northeast-1
AWS/southeast-1
AWS/southeast-2

Price

We pay for instance size

We pay for data size

* MultiAZ = Cost data size x2

 

Categories
Bigdata General NoSQL

Construye tu propio Cloud Storage con Riak CS

Riak CS es una solución Open Source, desarrollada por Basho, que te permite montar tu propio servicio de almacenamiento en la nube, de manera similar a los servicios S3 de Amazon.

Riak CS permite crear tanto nubes públicas como privadas de almacenamiento y está basado en una base de datos de código abierto NoSQL.
Los principales puntos fuertes de la solución son:

  • Almacenamiento tolerante a fallos en alta disponibilidad.
  • Soporte para almacenar objetos de gran tamaño.
  • API compatible-S3 y autenticación.
  • Multi-tenancy y presentación de informes por usuario.
  • Modelo operativo simple para añadir capacidad, altamente escalable.
  • Estadísticas sólidas para el seguimiento y métricas.

En la web de Basho, disponemos de documentación especifica (Riak CS Fast Track) para construir un entorno virtual rápidamente utilizando Vagrant Chef y así poder probar y testear la solución.

Una vez desplegado, simplemente necesitaremos un cliente de S3, por ejemplo: s3cmd, para interaccionar con el entorno.
Interaccionar con Riak CS a través de s3cmd

  • Crear un bucket de pruebas
s3cmd mb s3://test-bucket
  • Listar el contenido de un bucket
s3cmd ls s3://test-bucket
  • Subir un fichero al bucket
dd if=/dev/zero of=test_file bs=1m count=2 # Create a test file
s3cmd put test_file s3://test-bucket
  • Obtener o descargar un fichero del bucket
s3cmd get s3://test-bucket/test_file

En definitiva, Riak CS se presenta como una buena alternativa al Object Storage (Swift) de OpenStack.
En la web de Basho se puede consultar documentación adicional del proyecto, tanto de Riak como de Riak CS, así como otros proyectos creados a partir de Riak:

 
 

Categories
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

grafic1

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.

OWL, RDF y XML

grafic2

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.

grafic

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, Last.fm. dónde el usuario, a partir de un grupo de música puede ir descubriendo grupos o músicas semejantes.

  • Hay experimentos como la Dbpedia.org 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)

Antecedentes

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.

Categories
Bigdata General NoSQL OpenSource Social

Datos en formato Grafo (NoSQL) – 1a Entrega

Actualmente las base de datos NoSQL están en auge (http://nosql-database.org). 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. (http://stackoverflow.com/questions/5689091/how-to-choose-which-type-of-nosql-to-use). A parte luego ya hay base de datos NoSQL que ya son casos híbridos que es el caso de OrientDB (http://www.orientechnologies.com/orientdb) que es un híbrido orientado entre base de datos en formato grafo y documentales.
dex
Dex introducción
Os queríamos introducir DEX una base de datos NoSQL de grafos con muchos casos de éxitos. DEX (http://www.sparsity-technologies.com/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)

Ref: http://www.cbsolution.net/techniques/ontarget/databases_relational_vs_object_vs

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 (http://docs.neo4j.org/chunked/stable/cypher-query-lang.html)
– 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: http://architects.dzone.com/articles/graph-databases-features-graph
– 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 . http://docs.neo4j.org/chunked/stable/tutorials-java-embedded-graph-algo.html
Ejemplo simple de un HelloWorld con DEX

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

En la web de DEX podeis encontrar muchos más ejemplos. (http://www.sparsity-technologies.com/dex)

Las alternativa a DEX

La más conocida y más utilizada a parte de DEX es Neo4j. http://en.wikipedia.org/wiki/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: http://jasperpeilee.wordpress.com/2011/11/25/a-survey-on-graph-databases/
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.
451db_map_06.13
Ref: https://blogs.the451group.com/information_management/files/2013/06/451db_map_06.13.jpg