Choosing a Database Engine
-
I need to choose the most appropriate data engine for an application, and can use some advice. Background: I am replacing an existing application, rewriting it from ground up using VS 2010, C# and .NET 4.0. The prior app used Access style databases. Microsoft discourages this type of database for new apps, or I would continue with it. Very few of our customers need or use database servers. Typically, a customer would maintain a collection of separate databases, one for each project. Databases only need to be accessed locally. The self contained single file approach of the Access database was ideal, since it is highly portable and easily archived or deleted after a project ends. The largest database I have ever seen reached 100 mb. Typical databases are less than 20 mb, many around 2-4 mb. The data model is largely relational, and idealy suited to object modeling (without inherited classes). I like the EF and Code First options in VS 2010, but it all seems to be focused on working with a single server based db. I need to be able to browse and open databases. In rare cases, a customer may even open more than one db at a time, using mdi children for each db. This is not an absolute requirement, but is highly desirable. Any ideas or suggestions?
-
I need to choose the most appropriate data engine for an application, and can use some advice. Background: I am replacing an existing application, rewriting it from ground up using VS 2010, C# and .NET 4.0. The prior app used Access style databases. Microsoft discourages this type of database for new apps, or I would continue with it. Very few of our customers need or use database servers. Typically, a customer would maintain a collection of separate databases, one for each project. Databases only need to be accessed locally. The self contained single file approach of the Access database was ideal, since it is highly portable and easily archived or deleted after a project ends. The largest database I have ever seen reached 100 mb. Typical databases are less than 20 mb, many around 2-4 mb. The data model is largely relational, and idealy suited to object modeling (without inherited classes). I like the EF and Code First options in VS 2010, but it all seems to be focused on working with a single server based db. I need to be able to browse and open databases. In rare cases, a customer may even open more than one db at a time, using mdi children for each db. This is not an absolute requirement, but is highly desirable. Any ideas or suggestions?
SqlCE would be appropriate; doesn't require a server and is meant as a local file-based db (just as Access). You can open as many as you want simultaneous, and consists of a single file with the ".sdf" file extension. Without the need to have it all in a single file that can be copied/moved around, I'd go for Sql Server and merge all the databases.
Bastard Programmer from Hell :suss:
-
I need to choose the most appropriate data engine for an application, and can use some advice. Background: I am replacing an existing application, rewriting it from ground up using VS 2010, C# and .NET 4.0. The prior app used Access style databases. Microsoft discourages this type of database for new apps, or I would continue with it. Very few of our customers need or use database servers. Typically, a customer would maintain a collection of separate databases, one for each project. Databases only need to be accessed locally. The self contained single file approach of the Access database was ideal, since it is highly portable and easily archived or deleted after a project ends. The largest database I have ever seen reached 100 mb. Typical databases are less than 20 mb, many around 2-4 mb. The data model is largely relational, and idealy suited to object modeling (without inherited classes). I like the EF and Code First options in VS 2010, but it all seems to be focused on working with a single server based db. I need to be able to browse and open databases. In rare cases, a customer may even open more than one db at a time, using mdi children for each db. This is not an absolute requirement, but is highly desirable. Any ideas or suggestions?
As well as SqlCE, there is SQLite[^], which is also a file based db system. I have used this in the exact same scenario which you have related. SQLite has a fully functional ADO.Net implementation[^], and can be embedded in the application if necessary, which means less install hassles. It is also open source, with the source code in the public domain.
When I was a coder, we worked on algorithms. Today, we memorize APIs for countless libraries — those libraries have the algorithms - Eric Allman