Lightweight SQL database which doesn't require installation
.net, database, ms-access, sql
Solution
Depends on what you mean by lightweight. Easy on RAM? Or lighter db file? Or lighter connector to connect to db? Or fewer files over all? I'll give a comparison of what I know:
no of files cumulative size of files db size
Firebird 2.5 5 6.82 MB 250 KB
SqlServerCe 4 7 2.08 MB 64 KB
Sqlite 3.7.11.0 1 0.83 MB 15 KB
VistaDb 4.3.3.34 1 1.04 MB 48 KB
no of files - includes the .net connector and excludes the db file
The dbs are of 1 table with 2 columns and 2 rows. Take the db size with a pinch of salt as dbs could grow differently with further use. For instance `SqlServerCe` though initially was at 64 KB, it didn't grow at all after adding a few hundred records, while `VistaDb` grew easily from 48 to 72 to 140 KB. SQLite was the best in that regard which started from the lowest and grew linearly.
Few anecdotes: I had better performance using SqlServerCe with the factory settings which means its the easiest to get kick started without any configuration, while I found Firebird little bit harder to get it started due to lack of online materials. Firebird as I could read had widest standard sql compliance. While VistaDb is written in fully managed C# which means it can be merged with your application's assembly to have one single file, it seemed slowest to me. Of all, considering performance, ease and size I chose SQLite. SqlServerCe would be my second choice.
In short each has its pluses and minuses. Again, take my rant with a pinch of salt, its just my personal experience.
Problem
Could you recommend a lightweight SQL database which doesn't require installation on a client computer to work and could be accessed easily from .NET application? Only basic SQL capabilities are needed. Now I am using Access database in simple projects and distribute .MDB and .EXE files together. Looking for any alternatives.