Preguntas y respuestas de la base de datos en memoria

mayo 14

ODBMS.org Entrevisté a uno de nuestros ingenieros, Jeff Parsons, sobre Raima Database Manager y bases de datos en memoria.

 

Cerebro dibujado como una placa de circuito

¿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?

The biggest difference between in-memory databases and storing data in shared memory segments deals with a structured approach to data access. In-memory databases maintain components of the “ACID” attributes of data storage engines. The ACID properties include Atomicity, Consistency, Isolation, and Durability. While in-memory databases may relax the durability property based on non-persistent storage, they commonly support the other properties:

• 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.

Get notified about new RDM updates

Be the first to know about new Raima Database Manager updates when they go live, use cases, industry trends and more.