I was given the task of finding a suitable database for using the database with the upcoming project. It’s hard for me to find a good match. Our application is a .NET Framework 4.0 C # application.
At first I looked at SQLite, but I ran into a problem because SQLite was blocking its database file while it was writing.
I have 2 separate applications running at the same time using the same database, and I cannot be sure when you are writing. I tried just to wait for the locks to be released, but this led to some data loss. Therefore, I thought that I would be inventing a queuing system, but both applications would have to use the same queue ... Therefore, I thought that I would just make a separate Window service. All this began to sound like a traditional DBMS for me.
I decided to step back and ask myself: "Am I using the correct database?"
Does anyone know a database that could meet the requirements that were provided to me?
Here are my requirements: 1. Easy to install. This includes the lack of a separate “installer” that users must run separately from our application installation. This is what led me at first to think that I needed a built-in database, but I think there are some smart ways to enable database installation inside our installer.
It's hard to break The biggest need here is that it should be able to work on named pipes instead of TCP / IP for security (or something that reduces the ability of people’s system configurations to break our application). Our applications will always run on the same machine. They must use the same database, so using TCP / IP can cause problems when connecting firewalls / security / smart users.
Long operations in the database should not interfere with other users reading / writing to the database. I thought about writing code to handle this requirement and still use Sqlite, but decided to do more homework.
: , . , , .
: , . , . SQLite ( ) 2 .
: Entity Framework.
: . , , . , , .
, :
RavenDB
SQLite
CubeSQLite
SQL CE
Oracle Microsoft SQL Server .
, . , . , .