Recomendación de tecnología de base de datos para simulador

Muy bien, estoy desarrollando una aplicación de simulación y necesito saber qué base de datos es recomendable (o las ventajas y desventajas de algunas opciones).

tl; dr:

  • aplicación C#
  • Solo la aplicación lo usará
  • alcance de la máquina local (será un servidor) solamente
  • 4-2000 "versiones" potenciales de la base de datos realizadas en cualquier momento.
  • No es necesario mantener los datos fuera de la aplicación que se está ejecutando.

Todos los detalles:

  • Aplicación C# que será el único "usuario" de la base de datos. (Por lo tanto, solo necesita ser localmente accesible)
  • No es necesario proporcionar "salida" de la base de datos a los usuarios reales, solo la aplicación.
  • Simula 500.000++ "nodos"
  • Aprox. Relación de lectura/escritura de 30/70.
  • Necesita crear una cantidad de simulaciones diferentes y potencialmente dividir una simulación en 2 simulaciones y cada una probará un criterio específico. Cada "simulación" probablemente necesite ser una base de datos separada (o tal vez sea posible utilizar vistas).
  • Necesita poder crear una base de datos (o vistas/tabla/simulación) sobre la marcha.
  • Solo necesita almacenar realmente el "estado" de la simulación, lo que significa algunos campos (cadena/int, etc.) para cada nodo. Esto significa que necesitamos mantener los estados históricos del objeto.
  • La simulación está impulsada por eventos, por lo que la salida está determinada por la velocidad de la CPU.
  • Se pueden ejecutar entre 4 y 2000 simulaciones a la vez.

Algunos de los principales que he estado viendo son SQLLite y SQL Server; sin embargo, esto se basa más en la experiencia de mis compañeros de trabajo para brindar soporte. Uno de los otros factores que estamos considerando es que la base de datos funcione en la memoria.

De todos modos, suficiente de mí. ¿Qué recomienda, o cuáles son los pros y los contras de las opciones disponibles? Ah, y cualquier pregunta para obtener más detalles, dispare.

EDITAR: Según la solicitud, aquí hay una cantidad de entrada extremadamente estimada por segundo:ingrese la descripción de la imagen aquí

Metodología: ejecuto el prototipo de simulación durante 5 minutos para calcular cuántas variables de cada tipo usamos y luego lo divido por 300 para obtener el valor de las variables por segundo. Luego multipliqué por 4 porque espero que los datos que queremos almacenar crezcan 4 veces (potencialmente un poco conservador a largo plazo).

"Cada" simulación "probablemente tendría que ser una base de datos separada" Intente evitar esto, es mucho más complicado que simplemente definir la estructura de su tabla correctamente y tenerlo todo en una base de datos.
De sus requisitos, no entiendo exactamente cuántos datos en cuánto tiempo deben leerse/escribirse (simultáneamente). Incluso si es una CPU limitada, una estimación sería buena. ¿ Puedes editar y agregar eso? Estimando a partir de sus números, descartaría SQLite, necesita algo más pesado.
@JanDoggen Haré algunas pruebas hoy para intentar estimar cuántos datos se escribirán/leerán. Pero, ¿por qué SQLLite no es adecuado para esta cantidad de datos?

Respuestas (1)

Estoy usando PostgreSQL (base de datos de código abierto) en mi aplicación de escritorio VB.NET.


Creo que necesita una base de datos integrada para usar dentro de la aplicación, Microsoft SQL Server Compact si no desea instalar nada en el lado del usuario

pájaro de fuego incrustado

Firebird Embedded es un motor de base de datos relacional. Es una bifurcación de fuente abierta de InterBase, es compatible con ACID, admite disparadores y procedimientos almacenados, y está disponible en sistemas Linux, OSX y Windows. Tiene las mismas características que la versión clásica y superservidor de Firebird, dos o más subprocesos (y aplicaciones) pueden acceder a la misma base de datos al mismo tiempo a partir de Firebird 2.5. Entonces, Firebird incrustado actúa como un servidor local para un cliente subproceso que accede a sus bases de datos (eso significa que funciona correctamente para las aplicaciones web ASP.NET, porque allí, cada usuario tiene su propio subproceso, lo que significa que dos usuarios pueden acceder a la misma base de datos al mismo tiempo). tiempo, pero no estarían en el mismo hilo, porque ASP.NET abre un nuevo hilo para cada usuario). Exporta los puntos de entrada estándar de la API de Firebird.

Vista DB

VistaDB es una base de datos SQL integrada escrita completamente en C# y admite una serie de funciones para que sea compatible con SQL Server, como los tipos de datos y la sintaxis T-SQL. El producto se ejecuta en plataformas .NET, incluido Mono. Ha estado en el mercado desde 2004, y es utilizado por muchas empresas.

ir a través de la base de datos integrada para otras opciones