database - tablas - ¿Por qué alguien necesitaría una base de datos en memoria?
optimizar consultas mysql explain (11)
Leí que se pueden usar algunas bases de datos en la memoria, pero no se me ocurre la razón por la que alguien querría usar esta función. Siempre utilizo una base de datos para conservar los cachés de datos y memoria para un acceso rápido.
¿Su memoria caché tiene soporte SQL?
¿Qué tal si considera la base de datos en memoria como un caché realmente inteligente?
Eso deja preguntas sobre cómo se llena la base de datos en memoria y cómo se administra y actualiza la consistencia en múltiples instancias.
Dada su velocidad y la disminución del precio de la RAM, es probable que las bases de datos en memoria se conviertan en la tecnología dominante en el futuro. Ya hay algunos que han desarrollado características sofisticadas como consultas SQL, índices secundarios y motores para procesar conjuntos de datos más grandes que la RAM.
El caché también es un tipo de base de datos, como lo es un sistema de archivos. El ''caché de memoria'' es solo una aplicación específica de una base de datos en memoria y algunas bases de datos en memoria están especializadas como cachés de memoria.
Otros usos de las bases de datos en memoria ya se han incluido en otras respuestas, pero permítanme enumerar los usos también:
- Memoria caché. Por lo general, se utilizará un sistema de base de datos especializado para ese uso (y probablemente conocido como ''un caché de memoria'' en lugar de ''una base de datos'').
- Prueba de código relacionado con la base de datos. En este caso, a menudo se utilizará un modo ''en memoria'' de algún sistema de base de datos genérico, pero también se puede usar una base de datos dedicada ''en memoria'' para reemplazar otra base de datos ''en disco'' para una prueba más rápida.
- Manipulación de datos sofisticada. Las bases de datos SQL en memoria a menudo se utilizan de esta manera. SQL es una gran herramienta para la manipulación de datos y, a veces, no es necesario escribir los datos en el disco mientras se calcula el resultado final.
- Almacenamiento del estado de ejecución transitorio. Hay aplicaciones que necesitan almacenar su estado en algún tipo de base de datos, pero no necesitan persistir en el reinicio de la aplicación. Piense en algún tipo de administrador de procesos: debe realizar un seguimiento de los subprocesos en ejecución, pero esos datos solo son válidos mientras se ejecuten la aplicación y los subprocesos.
Es posible que necesite una base de datos si varias aplicaciones diferentes van a acceder al conjunto de datos. Una base de datos tiene una interfaz consistente para acceder / modificar datos, que su tabla hash (o cualquier otra cosa que use) no tendrá.
Si un solo programa está tratando con los datos, entonces es razonable usar una estructura de datos en cualquier idioma que esté usando.
La base de datos en memoria es mejor que realizar el almacenamiento en caché de la base de datos. El almacenamiento en caché de la base de datos funciona de manera similar a las bases de datos en memoria cuando se trata de operaciones de LECTURA.
Por otro lado, cuando se trata de operaciones de ESCRITURA, las bases de datos en memoria son más rápidas en comparación con las memorias caché de bases de datos, donde los datos se conservan en el disco (lo que lleva a la sobrecarga de IO).
Además, con el almacenamiento en caché de la base de datos puede terminar con las fallas de caché, pero nunca terminará con las fallas de caché cuando use bases de datos en memoria.
Las aplicaciones que requieren respuestas en tiempo real quisieran usar una base de datos en memoria, tal vez una aplicación para controlar aviones, plantas donde el tiempo de respuesta es crítico
Las bases de datos en memoria son aproximadamente al menos un orden de magnitud más rápidas que las RDBMS tradicionales para consultas de propósito general (lado de lectura). La mayoría está respaldada por disco, lo que brinda la misma consistencia que un RDBMS normal: solo la captura de todo el conjunto de datos debe caber en la RAM.
La idea central es que el almacenamiento respaldado en disco tiene enormes multas de acceso aleatorio que no se aplican a la DRAM. Los datos pueden ser indexados / organizados de una manera optimizada de acceso aleatorio que no es factible utilizando esquemas de almacenamiento en caché de datos RDBMS tradicionales.
Un caso de uso común es ejecutar pruebas de unidad / integración.
En realidad, no le importa la persistencia de datos entre cada ejecución de prueba y desea que las pruebas se ejecuten lo más rápido posible (para alentar a las personas a que las realicen a menudo). Alojar una base de datos en proceso le brinda un acceso muy rápido a los datos.
Una base de datos en memoria también es útil en la programación de juegos. Puede almacenar datos en una base de datos en memoria que es mucho más rápida que las bases de datos permanentes.
La búsqueda de algo entre 100000 elementos es lenta si no utiliza trucos como índices. Esos trucos ya están implementados en un motor de base de datos (ya sea persistente o en memoria).
Una base de datos en la memoria puede ofrecer una función de búsqueda más eficiente que la que podría implementarse rápidamente sobre estructuras de escritura automática.
Se utilizan como una estructura de datos avanzada para almacenar, consultar y modificar datos de tiempo de ejecución.