La conexión usuario-datos impulsa el emparejamiento base de datos NoSQL-Hadoop
AOL Advertising gestiona una de las mayores operaciones de difusión de anuncios en línea, con miles de millones de impresiones al mes para cientos de millones de personas. AOL se enfrentó a tres retos de gestión de datos al crear su plataforma de publicación de anuncios:
- Cómo analizar miles de millones de eventos relacionados con los usuarios, presentados como una mezcla de datos estructurados y no estructurados, para inferir características demográficas, psicográficas y de comportamiento que se encapsulan en cientos de millones de "perfiles de cookies".
- Cómo poner cientos de millones de perfiles de cookies a disposición de su plataforma de segmentación publicitaria con una latencia de lectura aleatoria inferior a un milisegundo.
- Cómo mantener actualizados los perfiles de los usuarios
La solución consistió en integrar dos sistemas de gestión de datos: uno optimizado para el análisis de datos de alto rendimiento (el sistema "analítico") y otro para el acceso aleatorio de baja latencia (el sistema "transaccional"). Tras analizar alternativas, la arquitectura final seleccionada emparejó Cloudera Distribution for Hadoop (CDH) con Membase:

En esta arquitectura, (1) los datos de flujo de clics y otros eventos se introducen en CDH desde una amplia variedad de fuentes (2) los datos se analizan mediante MapReduce para generar cientos de millones de perfiles de usuario; a continuación, en función de las campañas publicitarias que se estén ejecutando, los perfiles de usuario seleccionados se cargan en Membase, donde (3) la lógica de orientación publicitaria puede consultar Membase con una latencia de submilisegundos para obtener los datos necesarios para tomar decisiones optimizadas sobre la colocación de anuncios en tiempo real.
Aunque AOL ofrece un ejemplo concreto de la potencia de combinar un sistema de base de datos transaccional "NoSQL" con la plataforma analítica Hadoop, representa lo que se está convirtiendo en un patrón común de implantación en una amplia variedad de entornos de aplicaciones web.
Cada vez más organizaciones despliegan estas dos tecnologías conjuntamente. Me atrevería a decir que todas las implantaciones de bases de datos NoSQL serían más valiosas si se combinaran con Hadoop. ¿Por qué?
Una base de datos NoSQL se utiliza invariablemente para permitir que las aplicaciones web interactivas sirvan a poblaciones de usuarios de aplicaciones grandes y crecientes. Un conjunto grande y creciente de usuarios genera naturalmente muchos datos, directa e indirectamente, estructurados y no estructurados. Hadoop puede almacenar, procesar y analizar gran cantidad de datos. El análisis resultante puede ofrecer información sobre el comportamiento, las preferencias y los patrones de los usuarios que puede utilizarse para mejorar aún más la experiencia de la aplicación para los usuarios. Una aplicación mejor conduce a más usuarios. Y el ciclo se acelera.
Muchos usuarios
En términos más sencillos, una base de datos NoSQL (como Membase, MongoDB o Riak) está diseñada para proporcionar a las aplicaciones web interactivas un acceso a los datos rentable, aleatorio y de baja latencia. Las aplicaciones web tienen tres características definitorias que importan en este contexto:
- Hipercrecimiento. Pueden pasar de uno a cientos de miles de usuarios de la noche a la mañana, literalmente. Y pueden seguir creciendo hasta servir a cientos de millones de usuarios. El mundo es un lugar muy grande. Hoy en día, una interfaz web pública hace que un sistema de software sea accesible a casi dos mil millones de personas.
- Al servicio de los impacientes. Los humanos utilizan estos sistemas. Décadas de investigación han demostrado que la velocidad importa. A la gente no le gusta que la hagan esperar. Cualquier parte de la pila tecnológica que contribuya a hacer esperar al usuario contribuye a la desaparición de la aplicación.
- Transitoriedad. La población de usuarios de una aplicación web va y viene, tanto de forma permanente como temporal. Normalmente existe una población de usuarios "en línea" o activos en un momento dado. Vienen, usan, se van. Con suerte, vuelven.
La tecnología de bases de datos NoSQL se inventó para resolver estos problemas. Crecen de forma elástica: basta con añadir más servidores baratos a un clúster y los datos, y sobre todo la E/S, se reequilibran automáticamente entre los nuevos servidores para soportar el aumento de carga. Y lo mismo ocurre a la inversa cuando disminuye la población de usuarios de una aplicación. Y están diseñados para garantizar un acceso aleatorio de lectura y escritura de muy baja latencia a los datos cuando una aplicación lo necesita. Lo hacen, en parte, aprovechando el uso transitorio de estos sistemas de software. Cuando los usuarios están activos, los datos necesarios para servirles se almacenan en caché en la memoria principal. En este caso, la lectura o escritura de un objeto de datos 5k puede hacerse con una latencia inferior al milisegundo. Cuando un usuario ha estado ausente y vuelve a utilizar la aplicación, si sus datos ya no están en la memoria se recuperan automáticamente y están disponibles a través de la sesión del usuario, mientras que los datos de un usuario que ya no está activo se expulsan de la memoria y se almacenan en un disco de bajo coste a la espera de su próximo uso.
Muchos datos
Si los datos deben estar listos para "activarse" en cualquier momento, entonces una base de datos NoSQL es la solución adecuada. Pero Hadoop es una opción mucho mejor para almacenar datos cuando eso no es un requisito. Y las aplicaciones web interactivas pueden generar montañas de este tipo de datos, datos que históricamente pueden haber pasado desapercibidos. Información de inicio de sesión, flujos de clics, páginas vistas, datos de miradas, datos de aplicaciones "antiguas" que ya no se necesitan para el acceso en tiempo real, controladores de entrada y salida, flujos de compra, flujos históricos de oferta y compra, información de tiempos. La lista es interminable. Con Hadoop, basta con recopilar cosas. No es necesario configurar un esquema ni definir formatos de datos de antemano. Si tiene una idea para recopilar información que pueda resultar útil, guárdela en Hadoop. "En caso de duda, escríbelo".
Hadoop se creó para absorber información y almacenarla de forma rentable. Emplea el mismo enfoque de "escalabilidad horizontal" que una base de datos NoSQL: distribuye los datos entre servidores de bajo coste. Pero almacena los datos de forma optimizada para el análisis por lotes de alto rendimiento, frente al acceso aleatorio de baja latencia. Hadoop MapReduce permite descubrir tendencias, agregar datos y extraer conclusiones. Estas conclusiones pueden determinar el comportamiento de las aplicaciones.
Vea el seminario web
El próximo jueves, Matt Aslett, Analista Senior de The 451 Group, estará organizar un seminario web titulado Cómo AOL acelera las decisiones de segmentación publicitaria con Hadoop y Membase Server. Junto a Matt estará Pero Subasic, Arquitecto Jefe de AOL.
A cualquiera que esté interesado en crear aplicaciones web escalables, le animo a que vea el seminario web. Es divertido ver cómo se utilizan estas tecnologías "en el mundo real" y puede que te surja alguna idea para tu propio entorno.
i Zynga indicó públicamente que 290.000 personas jugaron a CityVille en sus primeras 24 horas (https://www.insidesocialgames.com/2010/12/06/cityville-claims-cityville-is-its-fastest-growing-game/)