4

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: enter image description here

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

  • 1
    "Each "simulation" would probably need to be a separate database" Try to avoid this, it's much more hassle than just defining your table structure correctly and having it all in one DB. – Jan Doggen Feb 4 '15 at 8:12
  • From your requirements I don't quite get how much data in how much time needs to be read/written (simultaneously). Even if it's CPU limited an estimate would be good. Can you edit and add that? Estimating from your numbers I'd rule out SQLite, you need something heavier. – Jan Doggen Feb 4 '15 at 8:13
  • @JanDoggen I will do some tests today to try to estimate how much data will be written/read. But, why is SQLLite unsuitable for this amount of data? – Adrian773 Feb 4 '15 at 20:28
2

Am using PostgreSQL(open source database) on my VB.NET Desktop Application.


I think you need an embedded database to use within the application, Microsoft SQL Server Compact if you don't want to install anything on the user side

Firebird Embedded

Firebird Embedded is a relational database engine. It's an open source fork of InterBase, is ACID compliant, supports triggers and stored procedures, and is available on Linux , OSX and Windows systems. It has the same features as the classic and superserver version of Firebird, two or more threads (and applications) can access the same database at the same time starting with Firebird 2.5. So Firebird embedded acts as a local server for one threaded client accessing its databases (that means it works properly for ASP.NET web applications, because there, each user has its own thread, which means two users could access the same database at the same time, but they would not be in the same thread, because ASP.NET opens a new thread for each user). It exports the standard Firebird API entrypoints. The main advantage of Firebird embedded databases is, that unlike SQlite or Access databases, they can be plugged into a full Firebird server without any modifications at all also is multiplatform (runs on Linux, OS X with full ASP.NET Mono support)

VistaDB

VistaDB is an embedded SQL database written entirely in C# and supports a number of features to make it compatible with SQL Server like T-SQL datatypes and syntax. The product runs on .NET platforms, including Mono. It has been in the market since 2004, and is used by many companies

go through Embedded database for another options

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.