Bases de Datos En Memoria

Publicado en

Los elementos fundamentales en el diseño de computadoras están cambiando, en particular el costo y aplicación de la memoria RAM. Esto nos da la oportunidad de reinventar la plataforma e infraestructura tecnológica.

La actual generación de sistemas de bases de datos relacional (RDBMS) está optimizada para almacenamiento en disco duro. Las bases de datos “en memoria” (in-memory) son un tema naciente, pero que cobrará gran popularidad durante los próximos años.

Factores clave

Velocidad. La ventaja principal de almacenar todo en memoria RAM es la velocidad. La velocidad de acceso a un disco duro ronda los 5 milisegundos mientras que en el RAM es de 80 nanosegundos, es decir una diferencia de cerca de 100,000 veces. Aún utilizando discos de estado sólido y memoria FLASH no-volátil, que es 100 veces más rápida que los discos duros tradicionales, estaríamos 1,000 veces más lentos que usando RAM.

Durabilidad. Pensar en la memoria como único almacenamiento genera la gran pregunta de qué es lo que sucede en caso de pérdida de poder. Para resolver esto, cada determinado tiempo (pocos minutos), las páginas de memoria RAM se escriben en almacenamiento no-volátil. Adicionalmente, las “transacciones” no se consideran completas sin que se haga permanente una bitácora (log) de la operación realizada. Es así que en caso de falla, se recupera la página más recientemente almacenada y se vuelven a aplicar las transacciones desde la bitácora.

OLAP En Memoria

Hoy las bases de datos se pueden optimizar para “procesamiento de transacciones” (OLTP) con almacenamiento en renglones o “procesamiento analítico” (OLAP) con almacenamiento columnar.

Las bases de datos transaccionales no son apropiadas para efectuar análisis, requieren índices. Una variación del modelo relacional son las estructuras multidimensionales que organizan datos expresando las relaciones entre los mismos. OLAP permite responder preguntas en 0.1% del tiempo requerido en ambientes transaccionales. La compresión es la máxima en este modelo, permitiendo almacenar “en memoria” grandes tablas, frecuente con un radio 1:10.

Hasta el día de hoy no existe ninguna estructura que permita indistintamente ser eficiente tanto en OLAP como OLTP —aunque algunos fabricantes lo estén publicitando así—. Lo mejor que se puede hacer hasta ahora en las bases de datos más modernas es especificar a nivel de tabla si se quiere almacenamiento en renglones o columnas.

Utilizar bases de datos “en memoria” permite reducir dramáticamente la cantidad de cubos pre-calculados a construir, porque es virtualmente instantáneo calcular cualquier consulta. Gracias a esto, podemos vislumbrar la eliminación completa de los cubos de información.

Un sistema “100% puro” en memoria puede ser diseñado para no depender absolutamente de las estructuras necesarias para operar con discos duros. Pero debido a la explosión de datos la mayoría de los sistemas serán “optimizados” para “en memoria” y se conectarán con bodegas de datos tradicionales o sistemas archivos distribuidos (v.gr. HDFS de hadoop) con información histórica.

La nueva inteligencia de negocio

Las nuevas herramientas de autoservicio en BI permiten que cualquier usuario pueda descubrir y analizar información empresarial. La expectativa es que el análisis de información se haga en tiempo real.

La clave para habilitar análisis instantáneo en un sistema en operación es reducir dramáticamente el tiempo requerido para transferir información OLTP a su forma OLAP. Hasta recientemente, este era un proceso muy tardado denominado “Extract, Transform, Load” (ETL). Pero en las bases de datos “en memoria” es posible sincronizar ambas estructuras con replicación basada en bitácoras.

Procesamiento complejo de eventos

Otro escenario de uso donde las bases de datos en memoria brindan una solución ideal, es en sistemas donde se reciben cantidades masivas de datos pero solo se requiere almacenar los cambios en éstos. Un ejemplo es monitorear millones de sensores de temperatura pero solo registrar aquellos en ciertos rangos, o con cierta variación. Conforme vaya aumentando la cantidad de dispositivos y sensores conectados al Internet que generan datos continuamente   —lo que llaman el “Internet de las cosas”—, este será un escenario cada vez más común.

OLTP En Memoria

Con la versión 2012 de SQL Server, Microsoft liberó una tecnología llamada xVelocity, que provee capacidades “en memoria” para bases de datos OLAP. En la próxima versión de SQL Server, nombre clave Hekaton, xVelocity también se podrá utilizar en bases de datos OLTP. Esta tecnología consiste en “convertir” una tabla de SQL Server en una nueva tabla “en memoria” y en “compilar” a código máquina algunos procedimientos almacenados. El beneficio fundamental es que esto no requiere rediseñar la base de datos o aplicaciones, mientras que otras iniciativas de industria requieren una nueva arquitectura.

Esto acelerará dramáticamente el desempeño de los sistemas transaccionales. Como ejemplo, un sistema de venta de boletos que hoy requiere de 5 servidores para atender todas las peticiones en un tiempo aceptable, podrá ser reducido a uno solo. Esto simplifica dramáticamente realizar operaciones como cambio de precio de un producto, que se tiene que propagar de manera muy compleja en granjas de servidores. O permite obtener la escala de sistemas enormes en sistemas medianos.

Más allá de las mejoras en escalabilidad, xVelocity for OLTP permite vislumbrar escenarios totalmente nuevos en el mundo de base de datos. Algunos ejemplos:

  • “Procesamiento” de streams de datos. En el servicio de búsqueda Bing, la información se pre-procesa para ser colapsada y posteriormente almacenada; un “big data” puro sería demasiado costoso.
  • Cache. Una base de datos en memoria se utilizará para absorber stream de datos. Piense en un desastre natural y miles de llamadas telefónicas que generan rastros digitales
  • Baja latencia. Por ejemplo, el sistema del NASDAQ requiere una latencia menor a 0.5 milisegundos. Debido a la eliminación de contenciones en la tabla, esta métrica se puede cumplir sin soluciones especializadas con hardware disponible comercialmente.
  • Lectura de datos en escala masiva. Actualmente requerido por soluciones analíticas avanzadas o sistemas de juegos en línea.

Conclusión

Una estrategia completa “en memoria” deberá cubrir todos los tipos de carga (OLTP, OLAP, Procesamiento de eventos), estar disponible para PC, servidor o granjas de servidores. También debe poder ser adquirido en forma de software, como servicio o como appliance. Bienvenido a la nueva era de analíticos de grandes datos donde se acortan los ciclos para contestar a las interrogantes del negocio.

Bio

Luis Daniel Soto Maldonado (@luisdans) labora en la división de negocio de servidores y herramientas de Microsoft Corp.