saltar al contenido
Cerebro de vector que simboliza en la memoria

Base de datos en memoria

¿Qué es un sistema de gestión de bases de datos en memoria?

Una base de datos en memoria (IMDB; también sistema de base de datos de memoria principal o MMDB) se almacena en la memoria principal de una computadora (RAM) y está gestionado por un sistema de gestión de bases de datos en memoria. Las bases de datos tradicionales se almacenan en unidades de disco.
Las bases de datos tradicionales basadas en disco se formatean teniendo en cuenta el dispositivo orientado a bloques en el que se leen y escriben los datos. Cuando una parte de una base de datos se refiere a otra parte, es posible que sea necesario leer un bloque diferente del disco. Este no es un problema con las bases de datos en memoria, y las interrelaciones entre las partes de la base de datos se pueden administrar a través de punteros directos. Los datos en la memoria siempre están presentes, por lo que no hay latencia para la lectura. La escritura de datos en el disco debe realizarse de forma “atómica”, donde todas las escrituras están registradas o ninguna. Esto a menudo requiere llevar un diario o escribir dos veces. Una base de datos en memoria no tiene tal requisito, por lo que los cambios en la memoria son casi instantáneos.

Bases de datos en disco vs. Bases de datos en memoria

Bases de datos en disco

  • Todos los datos se almacenan en el disco, se necesitan E / S de disco para mover los datos a la memoria principal cuando sea necesario.
  • Los datos siempre se conservan en el disco.
  • Estructuras de datos tradicionales como B-Trees diseñadas para almacenar tablas e índices de manera eficiente en el disco.
  • Admite un conjunto muy amplio de cargas de trabajo, por ejemplo, OLTP, almacenamiento de datos, cargas de trabajo mixtas, etc.

Bases de datos en memoria

  • Todos los datos almacenados en la memoria principal, no es necesario realizar E / S de disco para consultar o actualizar datos.
  • Los datos son persistentes o volátiles según el producto de base de datos en memoria.
  • Las estructuras de datos especializadas y las estructuras de índice asumen que los datos siempre están en la memoria principal.
  • Optimizado para alto rendimiento.

¿Cómo se accede a los datos y cómo se modifican en un sistema de gestión de bases de datos en memoria?

Los datos en una base de datos en memoria RDM están "listos para funcionar". Cuando los datos de un bloque de disco se pueden comprimir, cifrar, aplanar o codificar, los datos de la memoria están en un formato directamente utilizable. También tiene una estructura que es independiente de los problemas de bloqueo del disco, lo que permite la navegación directa de columna a columna, fila a fila o índice a fila, lo que permite implementar cambios mediante la asignación de bloques de memoria y la reorganización de punteros.

¿Cómo se comparten los datos en memoria entre varias tareas?

La respuesta es doble: rápido y más rápido. Para aquellos familiarizados con RDM Transactional File Server (TFS), que se puede utilizar para compartir una base de datos entre procesos de usuario en la misma computadora, en la LAN de la oficina o en todo el mundo, TFS puede administrar la base de datos en memoria. Esto es más rápido que las bases de datos en disco administradas por TFS.

Pero la forma más rápida de compartir una base de datos entre varias tareas es ejecutar un solo proceso con varios subprocesos, donde cada tarea se ejecuta en su propio subproceso. Esta forma de aplicación se ejecuta en una computadora y permite que cada subproceso acceda a la base de datos directamente en el almacenamiento dinámico local. También evita la necesidad de leer los objetos de la base de datos sin cambios en un caché local, porque el objeto original se puede ver directamente desde la memoria de la base de datos. Esta es una forma muy rápida de compartir una base de datos en modo multiusuario.

¿Se puede utilizar una base de datos en disco en memoria?

Cuando se usa RDM, la respuesta es "¡Sí!" Las bases de datos en memoria se pueden cargar desde el disco cuando se abren y también se pueden guardar en el disco cuando se cierran o cuando se solicitan “puntos de guardado”. Los puntos de guardado son atómicos, lo que significa que todos los cambios en los datos desde el último punto de guardado se escriben juntos en el disco, o ninguno de ellos lo está. Esto los convierte en transaccionales, pero no en los mismos límites de transacción que una base de datos en disco.

¿Cuáles son las ventajas y desventajas de las bases de datos en memoria?

Bases de datos en memoria, por definición, manejan los datos que están procesando en la memoria principal. No es necesario lidiar con el almacenamiento secundario, que puede ser mucho más lento que acceder a los datos almacenados en la memoria principal. La eliminación del requisito de acceder al almacenamiento secundario más lento permite el uso de algoritmos en una base de datos en memoria que no sería factible para una base de datos basada en disco. Como ejemplo, una base de datos basada en disco comúnmente usa un índice basado en árbol b para limitar el número de acceso al disco requerido para ubicar una fila. Una base de datos en memoria puede utilizar un Árbol AVL en lugar de un árbol b lo que reduce (o elimina) la necesidad de duplicar datos pero aumenta el número de filas a las que se accede durante el recorrido.

Sin el requisito de almacenamiento secundario, una base de datos en memoria se puede utilizar en sistemas sin almacenamiento secundario.
Esto permite el uso de un motor de base de datos en muchos sistemas embebidos que no podría admitir un motor tradicional basado en disco.
Normalmente, el tipo de memoria que se utiliza con un sistema de base de datos en memoria no es persistente. Cuando se cierra una aplicación, ya sea de forma limpia o inesperada, los datos almacenados en una base de datos en memoria se perderán. Ciertos dominios de aplicación no requieren la persistencia de datos entre ejecuciones, pero otros sí pueden. Es posible que aquellas aplicaciones que requieren un alto grado de persistencia no sean adecuadas para usar una base de datos en memoria.

Una base de datos en memoria almacena todos los datos en la memoria principal, lo que puede limitar gravemente la cantidad de datos que se pueden almacenar. La mayoría de los sistemas de bases de datos pueden manejar la asignación de memoria ad-hoc para almacenar objetos de la base de datos o se les puede dar una porción de memoria para usar como almacenamiento. De cualquier manera, el volumen de datos que se puede almacenar en una base de datos en memoria tiende a ser mucho menor que el almacenado en un sistema basado en disco.

¿Cuál es la diferencia entre una base de datos en memoria y simplemente almacenar datos en segmentos de memoria compartida?

La mayor diferencia entre las bases de datos en memoria y el almacenamiento de datos en segmentos de memoria compartida se relaciona con un enfoque estructurado para el acceso a los datos. Las bases de datos en memoria mantienen componentes de la "ÁCIDO”Atributos de los motores de almacenamiento de datos. Las propiedades de ACID incluyen atomicidad, consistencia, aislamiento y durabilidad. Si bien las bases de datos en memoria pueden relajar la propiedad de durabilidad en función del almacenamiento no persistente, comúnmente admiten las otras propiedades:

• Atomicidad - se comprometen varios cambios en la base de datos como una operación de todo o nada
• Consistencia - las reglas y relaciones estructurales se mantienen para todos los usuarios
• Aislamiento - los cambios transaccionales no pueden ser vistos por otros usuarios hasta que se confirman

Implementar esta funcionalidad sobre los segmentos de memoria compartida puede llevar mucho tiempo y ser propenso a errores.
Además de las propiedades de transacción de las bases de datos en memoria, existen muchas otras
Ventajas listas para usar que incluyen:
Uso de lenguajes comunes de definición de datos bien definidos (sentencias SQL DDL) Uso de lenguajes comunes de consulta de datos bien definidos (sentencias SQL DML) Acceso remoto a datos a través de un protocolo de comunicación de red
Capacidad para almacenar datos en un formato independiente de la plataforma
Herramientas disponibles para importar / exportar a través de CSV, XML, JSON, etc. Posibilidad de conservar los datos en la memoria en el disco

Una base de datos en memoria puede estar sujeta a la pérdida de datos si algo deja de funcionar: ¿cómo se las arregla?

Un desarrollador de aplicaciones debe comprender que la pérdida de datos es una posibilidad cuando se trabaja con una base de datos en memoria. Existen varios enfoques, como la persistencia y la replicación, que se utilizan para mitigar los escenarios de pérdida de datos, pero la pérdida de datos sigue siendo una posibilidad.

Persistencia
Raima admite dos modos para abrir una base de datos en memoria.
• Volátil - la base de datos está vacía cuando se abre por primera vez y todo el contenido se descarta cuando se cierra la base de datos
• Persistente - al abrir, la base de datos se completa a partir del contenido del almacenamiento secundario, al cerrar, los datos modificados (inserciones, actualizaciones, eliminaciones) se escriben en el almacenamiento secundario

Si se abre una base de datos utilizando el modo persistente en memoria, el contenido modificado se escribirá automáticamente en el almacenamiento secundario cuando se cierre la base de datos. Además, el desarrollador puede persistir en el cambio al almacenamiento secundario a pedido. Utilizando
La persistencia puede limitar la pérdida de datos a lo que ha sucedido desde la última operación de persistencia.

Replicación
Muchos sistemas de bases de datos admiten la replicación de cambios en otra instancia de base de datos (u otro sistema de base de datos). El uso de la replicación permite recuperar de la copia replicada los datos que pueden haberse perdido de la copia en memoria.

¿Todas las bases de datos integradas son también bases de datos en memoria?

Un base de datos incrustada se puede definir como un motor de base de datos que se ejecuta dentro de una aplicación y no requiere que se instalen, configuren o accedan a otros procesos. El medio de almacenamiento de los datos gestionados por el motor depende de la implementación.
Originalmente, la mayoría de los motores de bases de datos usaban un disco duro para el almacenamiento de datos, ya que la cantidad de memoria disponible no permitiría un volumen de datos suficiente para conjuntos de datos útiles. A medida que aumenta el tamaño de la memoria, muchos proveedores comenzaron a agregar capacidades en memoria. Hoy en día, muchos motores de base de datos, integrados o tradicionales, tienen cierto soporte para in-memory.

¿Cómo implementa Raima un sistema de base de datos en memoria en RDM?

El motor de base de datos Raima RDM se divide en dos componentes: el motor de tiempo de ejecución y el motor de almacenamiento.
El tiempo de ejecución es responsable de la gestión de transacciones, la aplicación de reglas, el procesamiento de consultas y el mantenimiento de cambios locales no comprometidos en la base de datos. Siempre que el motor de tiempo de ejecución necesita un objeto de base de datos, solicita el objeto del motor de almacenamiento. Además, cuando se confirman cambios locales en el tiempo de ejecución, se entregan al motor de almacenamiento para que se almacenen en una ubicación compartida entre todos los usuarios de la base de datos. El motor de tiempo de ejecución no sabe ni le importa si el motor de almacenamiento está utilizando la memoria principal o el almacenamiento secundario.

El motor de almacenamiento se puede considerar como un repositorio de pares clave / valor. Las claves son identificadores de objetos de la base de datos y los valores son la ubicación de los objetos de la base de datos. Para las bases de datos basadas en disco, los valores serán un identificador de archivo, desplazamiento de archivo y tamaño; para la base de datos en memoria, los valores serán la ubicación de la memoria del objeto de la base de datos.
Los objetos mismos pueden estar codificados, comprimidos y cifrados, pero el motor de tiempo de ejecución sabrá cómo interpretar el contenido.

Al mantener esta abstracción, un desarrollador de aplicaciones no necesita hacer nada más que especificar un parámetro de configuración pre-abierto para usar una base de datos RDM en memoria. La aplicación, el tiempo de ejecución y el motor de almacenamiento pueden ejecutarse en el mismo espacio de memoria, lo que proporciona un acceso de muy baja latencia. Si un desarrollador sabe que una base de datos se utilizará principalmente en memoria, puede utilizar métodos como Indexación AVL para optimizar el acceso en memoria.

Leer más sobre Implementación en memoria de Raima.

Conozca cómo Raima ofrece alto rendimiento, portátil base de datos incrustada y base de datos móvil soluciones.