# Base de datos en memoria

Una base de datos en memoria (IMDb, según sus siglas en inglés, y también conocida como base de datos en memoria principal o MMDB) es una base de datos cuyos datos están almacenados en la memoria principal para facilitar tiempos más rápidos de respuesta. Los datos de origen se cargan a la memoria del sistema en un formato comprimido no relacional. Las bases de datos en memoria optimizan el trabajo relacionado con el procesamiento de consultas.
Una IMDb es un tipo de base de datos analítica, que es un sistema de solo lectura que almacena datos históricos sobre indicadores para aplicaciones de inteligencia empresarial/análisis de negocios (BI/BA), usualmente como parte de un almacén de datos o un data mart. Estos sistemas permiten a los usuarios ejecutar consultas e informes sobre la información contenida, que se actualiza regularmente para incorporar datos de transacción recientes de los sistemas operativos de una organización.
Además de brindar tiempos extremadamente rápidos de respuesta a consultas, la analítica en memoria puede reducir o eliminar la necesidad de indexar datos y almacenar datos preagregados en cubos OLAP o tablas agregadas. Esta capacidad reduce los costos de informática y permite una implementación más rápida de aplicaciones de BI/BA.
Tres avances de años recientes han hecho de la analítica en memoria algo más factible: computación de 64 bits, servidores multi-core y precios más bajos de memoria RAM.

## 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 energía. 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

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.

## Tecnologías de base de datos

SQL Server utiliza la API de las Extensiones de ventana de dirección (AWE) para admitir los tamaños de memoria física muy grandes. SQL Server admite hasta un máximo de 64 GB de memoria física en sistemas operativos Microsoft Windows de 32 bits: Microsoft Windows XP Professional; Windows 2000Standar Edition; Windows 2000 Advanced Server; Windows 2000 Datacenter Server; Windows Server 2003 Enterprise Edition; o Windows Server 2003 Datacenter Edition. SQL Server asigna de forma dinámica memoria AWE asignada cuando se ejecuta con cualquiera de las ediciones del sistema operativo Windows Server 2003. En otras palabras, el grupo de búferes puede administrar dinámicamente memoria AWE asignada para equilibrar el uso de memoria de SQL Server con los requisitos globales del sistema. AWE soluciona una limitación inherente a las aplicaciones de 32 bits: éstas no pueden tener acceso a más de 4 gigabytes (GB) de espacio de direcciones del proceso. (Un puntero de 32 bits no puede mantener una dirección de memoria mayor que 4 GB). Con AWE, las aplicaciones pueden reservar directamente memoria física hasta la cantidad máxima permitida por el sistema operativo como memoria no paginada. El uso de AWE permite a SQL Server copiar en caché más información, en vez de leerla desde los archivos de paginación del sistema en el disco. A su vez, esto proporciona beneficios de rendimiento con un acceso a datos más rápido y reduce la frecuencia de acceso al disco.