viernes, noviembre 30, 2007

Amazon apuesta a Erlang

Amazon acaba de lanzar SimpleDB, un nuevo servicio de almacenamiento estructurado, con las características de alta disponibilidad y concurrencia de S3. Este es el segundo servicio basado en Erlang que lanza Amazon al mercado, el otro es el servicio de colas (Simple Queue Service), y es emocionante ver el rendimiento de la plataforma Erlang para la implementación de sistemas que deben operar confiablemente 24x7 y además proveer escalabilidad infinita, tanto en rendimiento como en capacidad.

Amazon, con su plataforma basada en Perl, Linux, Xen, y ahora Erlang, realmente le está sacando punta al software libre.

Pero veamos de que se trata este nuevo servicio que es el sueño mojado de los desarrolladores de la web 2.0.

SimpleDB no funciona como una base de datos relacional, no se necesita definir un esquema, en este sentido parece seguir la tendencia a la desaparición de las bases de datos relacionales, que mencioné en un artículo anterior.

Las características que más me gustan de este servicio:
  • Manipulación de conjuntos de datos realmente grandes (10GB por dominio y hasta 100 dominios por usuario)
  • Muy rápido (espero que se mantenga así)
  • Modelo de computación por demanda (solo se paga por lo que se usa)
  • Modelo de datos similar al utilizado por los lenguajes de scripts (Perl, Python, etc.), sin necesidad de definir esquemas.
  • Interfaz REST y también SOAP.
  • Fácil de usar, como los hashes en Perl :-)
  • Hecho en Erlang, me pregunto si usaron CouchDB ;-)

Sin embargo, hay que considerar algunos detalles operacionales:
  • Al igual que el servicio S3, los objetos almacenados no están disponibles inmediatamente, hasta que están replicados y se puede garantizar la disponibilidad de los mismos, de este modo Amazon se olvida de la C en ACID, para garantizar la durabilidad.
  • Todo es texto, las consultas se hacen lexicográficamente, así que los números deben formatearse apropiadamente, las fechas deben almacenarse en ISO-8601 (pero todos ustedes ya hacen esto, no?).
El modelo de datos es sencillamente espectacular y hace honor a su nombre, los datos se organizan en dominios, donde se pueden almacenar colecciones de atributos, donde cada atributo tener uno o más valores. Las colecciones de atributos pueden ser diferentes para cada objeto del dominio.

Para todos aquellos acostumbrados a lenguajes como Perl, Ruby, Python, etc. pueden imaginarse la estructura de datos como un arreglo que contiene hashes cuyos valores pueden ser escalares o listas.

El lenguaje de búsqueda provee los operadores: =, !=, <, >, <=, >=, STARTS-WITH, AND, OR, NOT, INTERSECTION AND UNION, pero las consultas están limitadas a un máximo de 5 segundos (aunque ninguna consulta de las que pude probar en las 8 horas que tiene el servicio, tardo más de algunos milisegundos).

Hay que mencionar que los costos de almacenamiento son muy superiores a los de S3, mientras que en este último almacenar un 1GB cuesta $0.15, en SimpleDB cuesta $1.50, es decir 10 veces más caro, aunque se puede transferir datos gratuitamente entre S3 y SimpleDB.

1 comentario:

jose luis dijo...

Sencillamente fantástico

Muchas gracias por todos tus artículos

Siempre tengo muchas dificultades tratando de explicar las bondades de lenguajes declarativos y sistemas altamente paralelizables (seguramente es porque estoy muy lejos de dominarlos)

Tus artículos me ayudan mucho,

Gracias otra vez