Blog de Jorge Gamba

Evangelista ALT.NET

[Evento] NoSQL, Eso de lo que todo el mundo habla últimamente

La comunidad ALT.NET Hispano realizará una VAN sobre NoSQL este sábado 22 de mayo de 2010 a la hora internacional 18:00 GMT (meridiano 0) con una duración aproximada de 2 horas, vía http://snipr.com/virtualaltnet.

Según la página de Wikipedia en español para este tópico, NoSQL “es un término usado en informática para agrupar una serie de almacenes de datos no relacionales que no proporcionan garantías ACID. Normalmente no tienen esquemas fijos de tablas ni sentencias "join" ”. Pueden encontrar mayor información y recursos relacionados en http://nosql-database.org/.

El caso es que últimamente se habla seriamente bastante sobre este tema y ya varios proyectos, tanto nuevos como existentes están adoptando NoSQL y muchos comentan de los excelentes beneficios que han encontrado o comprobado con este tipo de recursos; entonces es claro que no nació ayer ni se trata de un experimento, es una real alternativa para la persistencia y consulta de datos. Esto podría convertirse incluso en la corriente principal con el empuje que recibe del apoyo creciente de este movimiento (no solo son herramientas).

El ponente para esta VAN es nada más y nada menos el maestro Ángel “Java” López (@ajlopez), un gran especialista en diversos temas de desarrollo de software y promotor constante de la idea de compartir nuestro conocimiento, cosa que él hace muy bien generando regularmente, de hecho diariamente, contenido en su blog y apoyando o creando diferentes iniciativas tendientes a la mejora profesional de los desarrolladores de software.

El maestro Ángel “Java” López ha definido los temas a tratar en su exposición y lo que podremos esperar de ella, de la siguiente manera:

El movimiento NoSQL apareció promoviendo el uso de almacenes de datos no
relacionales. Surgió de varias fuentes y motivaciones, y tiene sus raíces
aún en implementaciones anteriores a la aparición del modelo relacional.

Pasaremos revista, un poco a la historia, un poco a las primeras grandes
implementaciones como BigTable de Google, o el Dynamo de Amazon. En los
últimos años a aparecido una plétora de implementaciones, y se ha generado
discusión sobre relacional vs NoSQL, cuándo, porqué.

Cómo cambia el diseño de una aplicación "normal" en NoSQL.
Queries, no más joins, denormalización.
No más esquemas.

Características deseables: cómo consiguen escalabilidad, alta
disponibilidad, alto rendimiento.

El teorema CAP

Distintas formas de implementación:
Distribuidas vs No Distribuidas
En memoria vs En Disco
Key-Value vs Document vs Graph vs Column
Eventual Consistency

Proyectos más conocidos: Voldemort, Cassandra, CouchDB, MongoDB, SimpleDB,
Memcached, BigTable, Dynamo, HBase...

Programaremos finalmente en .NET contra una de esas implementaciones,
posiblemente MongoDB.

Espero que al final de la charla, todos tengamos una idea general de NoSQL,
algunas características, código de ejemplo, disponible. Y entender, que al
final, es una herramienta más: habrá casos en los que es más aplicable y
otros en los que no.

ACID vs BASE, veremos esas siglas y comparación. Para mí, el tema es muy interesante. Esta es una charla de introducción, para quien esté interesado en el tema pero todavía no pudo dedicarle mucho tiempo a investigarlo. Es un tema amplio, pero espero poder transmitir el panorama más completo de lo que está pasando con NoSql.

También sugiere la lectura del contenido que tiene clasificado en http://delicious.com/ajlopez/nosql.

Tengan en cuenta que una VAN trata de seguir el modelo de Desconferencia, por lo que tienen cierto toque de informalidad, permitiendo diferentes formas de intervención a todos nuestros asistentes; estos no solo pueden participar con preguntas, sino que también pueden expresar sus opiniones, discutir y hasta exponer algún asunto; para ello permitimos y de hecho deseamos que nuestros asistentes habiliten y usen el micrófono para expresarse.

Como un beneficio adicional, en nuestras VAN obsequiamos algunos eBooks y licencias de productos de interés para nuestro auditorio. Si por alguna razón no pueden atender en línea la reunión virtual, no deben preocuparse, pues las grabaciones de estas “siempre” quedan publicadas en nuestra página wiki Historial de Reuniones. Sin embargo, recomendamos hacerlos el esfuerzo por asistir virtualmente en línea a nuestras VAN, pues se obtienen mayores beneficios.

Hay que aclarar que no se requiere ningún tipo de registro, simplemente acudir el día y la hora indicados a la dirección Web http://snipr.com/virtualaltnet, eso sí, deberán tener instalado el programa cliente de Live Meeting; hay más instrucciones sobre cómo hacer esto y otras indicaciones en la página wiki Descripción de Reuniones. Adicionalmente les recomendamos comprobar la hora correspondiente para su localidad, esto lo pueden hacer con la ayuda de la página Historial de Reuniones y nuestro Calendario de Reuniones, al cual se pueden suscribir.

Finalmente, los invitamos y les agradecemos de antemano la difusión de este evento en sus lugares trabajo, estudio, comunidades y demás lugares con personas que pudieran beneficiarse como nosotros de estos importantes temas. Pueden suscribirse y hasta colaborar siguiéndonos a través de los siguientes medios:

Posted: 21/5/2010 6:08 por Jorge Gamba | con 2 comment(s)
Comparte este post:

Comentarios

José Ignacio Merino ha opinado:

¿Programar con almacenes de datos no relacionados? Si ya decíamos hace años los que programábamos en COBOL que estoy de las bases de datos relacionales no podía traer nada bueno :-D.

Ahora en serio. Yo recuerdo de cuando programaba en COBOL (si, yo programé en COBOL, ¿que pasa?, como oiga una sola risita...) que eso de los almacenes estaba bien cuando tu modelo de datos no era muy grande. Como fuese mínimamente complicado, era un auténtico infierno. Nada que ver con la comodidad y versatilidad que te da un JOIN.

Vamos, que sólo es recomendable cuando tu aplicación sea lo suficientemente pequeña y especializada como para que no tengas que perder gran parte de tu tiempo enlazando búsquedas de registros tabla tras tabla.

También acabarás dejando de modelar la base de datos y comenzarás a duplicar datos entre almacenes (si para recoger un dato de un almacén tienes que enlazar 4 ó 5 búsquedas por los distintos almacenes de datos, te aseguro que a la tercera vez que tengas que hacer eso acabarás duplicando el dato en el almacén principal), los almacenes tenderán a tener cada vez más y más campos donde casi todos son campos redundantes... Tu modelo de datos se convertirá en un auténtico infierno.

Eso sí, todo será muy rápido y eficiente. Tan sólo hay que valorar qué merece más la pena.

Lo dicho, sólo recomendado para aplicaciones muy especializadas y no muy complejas, o también si el rendimiento que quieres tener de tu aplicación justifica el hacer eso.

Por cierto, existen alternativas al NoSQL usando base de datos relacionales. Por ejemplo, Flirck aunque usa una base de datos relacional (MySQL), dice que "normalizar es para nenazas" ("Normalised data is for sissies") y se dedica a pasar todas las buenas prácticas en cuando a diseño en base de datos relacionales por el mismo sitio por donde el Coloso de Rodas se pasaba a los barcos (no normaliza y mantiene campos duplicados en varias tablas)

www.niallkennedy.com/.../flickr_php.pdf

Vamos, justo lo mismo que acabarás haciendo con NoSQL.

# May 21, 2010 1:59 PM

Alfredo Novoa ha opinado:

Parece que mucha gente está confundiendo el Modelo Relacional con las transacciones ACID.

Las dos cosas son independientes. Si no quieres transacciones ACID no tienes por que renunciar al Modelo Relacional.

José Ignacio tiene toda la razón. En cuanto tengas una base de datos mínimamente complicada lo de los almacenes esos es una pesadilla.

# May 24, 2010 3:35 AM