Alright so I am developing a simulation application and I need to know what database is advisable (Or the pro's con's of some options).
tl;dr:
- C# application
- Only the application will be using it
- local machine (will be a server) scope only
- 4-2000 potential "versions" of the database made at any one time.
- Data does not need to be kept outside of the application being run.
Full Details:
- C# Application that will be the only "user" of the database. (So it only needs to be localy accessible)
- Do not need to provide "output" of database to actual users, just the application.
- Simulates 500,000++ "nodes"
- Approx. 30/70 read/write ratio.
- Need to create a number of different simulations and potentially split one simulation off into 2 simulations and each testing a specific criteria. Each "simulation" would probably need to be a separate database (or perhaps it might be possible to utilize views).
- Need to be able to create database (or views/table/simulation) on the fly.
- Need to only really store the "state" of the simulation which means a few fields (string/int etc) for each node. This means we need to maintain the historic states of the object.
- Simulation is event driven so output is determined by CPU speed.
- Somewhere between 4-2000 simulations may be run at once.
Some of the main ones I've been looking at is SQLLite and SQL Server however this is more so based on the experience of my co-workers to provide support. One of the other factors we are considering is having the database work in memory.
Anyway, enough from me. What do you recommend, or what are the pro's and con's of the options available? Oh and any questions for further detail please shoot away.
EDIT: As per request here is some extremely estimated input quantity per second:
Methodology: I run the simulation prototype for 5 minutes to work out how many variables of each type we use and then divided that by 300 to get the variables per second value. I then multiplied by 4 because I expect the data we want to store to grow by 4 times (potentially a little conservative in the longer run).