buscando recomendaciones para sencilla en memoria DB * servidor * (sin persistencia necesarias) [cerrada]

StackOverflow https://stackoverflow.com/questions/4246675

Pregunta

debería soportar múltiples conexiones, preferiblemente a través de ODBC. Los clientes van a utilizar como procesos separados en la misma máquina. No hay necesidad de persistencia, ya que los clientes los manejarán la persistencia en otros lugares. Los clientes están escritas en C ++ si importa.

Los datos son bastante simple, se trata de un conjunto de mapas no relacionadas bidireccionales. El acceso es o bien directamente por un valor o por un rango (between X and Y), no hay actualizaciones. En realidad no necesitamos SQL aquí, por lo que las soluciones no son de SQL también se pueden considerar.

La aplicación cliente es multi-proceso y puede ejecutarse en varias máquinas. Cada máquina debe tener una copia local de dicha base de datos, que se actualiza en contra del almacén central por sus clientes locales.

múltiples ediciones

  1. es la plataforma Linux
  2. disco RAM no es una opción por razones de seguridad - no queremos que cualquier persona con acceso a la máquina sería capaz de ver los datos
  3. los datos deben puede persistió sólo en forma cifrada, por lo que la solución o bien no debe persistir los datos en absoluto, o permitir que un filtro definido por el usuario / plugin para la persistencia.
¿Fue útil?

Solución

El hecho de mi familiaridad con ella, me gustaría ir con MySQL. Para usarlo como una memoria uso de bases de datos en la memoria como el tipo de tabla. Redis es una base de datos en la memoria NoSQL que probablemente sería un ajuste perfecto para esto (Se ejecuta en la memoria, con la escritura del disco para la persistencia única que puede ser desactivado).

Otros consejos

alguna razón en particular por no usar una base de datos SQLite con memoria RAM abierto?

disco RAM no es una opción por razones de seguridad - no queremos que cualquier persona con acceso a la máquina sería capaz de ver los datos

Usted está fuera de suerte. Cualquier persona con acceso a la máquina puede visualizar los datos de / proc / PID $ / mem de todos modos.

Si estamos hablando de acceso no raíz de la utilización / tmp / $ directorio / método con chmod 700.

Aquí hay un truco que puede utilizar en Linux, se le llama "desmontar perezosa".

  1. Montar un tmpfs algún lugar
  2. Puesta en marcha algún proceso (s) de usarlo, que chdir () en ese directorio. Puede utilizar una instancia de MySQL; MySQL siempre hace un chdir a su directorio de datos.
  3. Después de que el proceso ha puesto en marcha con éxito, desmontar los tmpfs con la opción -l (perezoso).

Ahora los tmpfs todavía existe y seguirá existiendo mientras proceso (s) son acceder a él, pero no se puede acceder por procesos no relacionados cualquier más, ya que ya no está presente en su punto de montaje.

Tenga en cuenta que esto de ninguna manera se detiene la raíz de la obtención de los datos de los tmpfs, sólo hace que sea un poco más difícil.

También en cuenta que puede ser intercambiado, por lo que el intercambio debe desactivar (o el uso de intercambio cifrado) si usted lo necesita absolutamente ser no persistente.

Trate Boost.MultiIndex . No es una elección obvia pero se basa en los conceptos de base de datos relacionales.

  

El concepto de multi-indexación sobre el   misma colección de elementos es   tomado de la base de datos relacional   terminología y permite la   especificación de datos complejo   estructuras en el espíritu de multiplicar   tablas relacionales indexada en donde sencilla   conjuntos y mapas no son suficientes. Una amplia   se proporciona la selección de los índices,   modelado después de contenedores STL análogos   como std :: set, std :: lista y hash   sets.

El uso de MySQL con datadir = a tmpfs que haya montado para tal fin. Tendrá que cocinar un poco script de inicio que instala la base de datos (usando mysql_install_db o algo así) en el arranque, por supuesto, como si no se pierden todos los datos.

memcached puede ser una solución viable. Es un almacén de claves-valor que puede ser ajustado para mantener los valores de una cierta cantidad de tiempo, es escalable y es fácil de configurar y comenzar a usar. También se ejecuta en todo tipo de entornos. Aquí está el sitio wiki para más información , especialmente desde la página principal no es casi tiene útiles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top