什么是一个小的.NET应用程序的数据库的好select?

我正在用C#开发一个小型的.NET应用程序,我想要一个不占用太多资源的小型轻量级数据库

你能列出一些最着名的轻量级数据库软件

14/06/2016是 …仍然upvotes: – /


17/03/2014我仍然收到upvotes为此,记住这是最初的答复date。 尽pipe列出的三大主题仍然是完全可行的,但名单将趋于陈旧。 还有更多的数据库技术没有列出。


你有几个立即可识别和免费的select:

  • SQL Server Express LocalDB
  • SQL Server精简版
  • SQLite的

SQL Server Compact下载附带ADO.NET提供程序,您将需要在代码中引用。 SQLite下载可能没有它,所以这是一个链接:

http://sqlite.phxsoftware.com/

所有三个使用SQL,虽然可能有一些限制/怪癖。 Management Studio与Compact和LocalDB协同工作,而使用SQLite则需要另一个UI工具,如SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

有NoSQL的替代品,如:

  • 英镑
  • RavenDb

就个人而言,我会避免使用MS Access面对其他免费选项。 LocalDB,Compact或SQLite不会出错。 他们都是可爱的小型数据库,运行速度相对较快,内存很小 – 我个人偏好喜欢微软产品的宗教方面我想:-)

我使用Sterling进行Windows Phone编程,因为它使用独立存储。 我只在RavenDb上看过文章,但是我可以告诉你这是一个基于JSON的文档存储框架。

不要混淆(SQLite,SQL Server Express LocalDB或SQL Server Compact Edition),但是还有其他embedded/本地数据库,其中一些是关系数据库是面向对象的:

  • embedded式火鸟
  • db4o的
  • VistaDB的
  • SharpHSQL
  • 伯克利DB
  • Eloquera
  • SiaqoDb

并非所有这些都是免费的。 SQL / LINQ / in-proc支持不同。 这个名单只是为了好奇。

现在还有Karvonite ,但代码库链接已经损坏。 当它再次生活,我会看着这个WP7发展。

我build议SQLite 。 我们将其用于几乎所有在我工作的地方开发的应用程序。

它小而紧凑。 它确实需要一个DLL在应用程序目录中,但不必像安装或SQL Server那样安装其他软件。 另外,正如下面的danielkza所述,“SQLite是公有领域,所以你不必担心授权。 这真的可以造成很大的变化。

您可以使用System.Data.SQLite或csharp-sqlite在C#应用程序中使用与SQL或OleDB相同的方法来访问它。

您还需要一个应用程序来编辑/pipe理数据库。 我认为最好的是SQLite Studio 。 这里还有一些:
SQLitepipe理
SQLite 2009专业版(页面底部)
更新 – 7/25/11 – 更多SQLite应用程序(这里的问题)

以下是关于SQLite的更多信息:
在Wikipedia上的SQLite
使用SQLite的公司

自定义函数:另外,如果您正在查看SQLite核心函数并且没有看到您喜欢的,您可以创build自己的自定义函数。 这里有几个例子:
从SO
另一个例子

火鸟embedded式可以是一个不错的select

embedded式版本是服务器的一个惊人的变化。 这是一个function齐全的Firebird服务器,仅包含几个文件。 部署起来非常简单,因为不需要安装服务器。

有一些非常好的networking驱动程序

SQL Server Compact如果你想使用官方的微软解决scheme。 这样做的好处是能够使用SQL服务器复制,如果你需要这样的事情。

SQLite如果你想要的东西很简单,小而自由。 这是android使用它的内部数据库,所以它得到很好的支持,并有很好的.NET绑定可用。

SQLite的一个独特优势是它是跨平台的。 所以,如果你想将应用程序移植到Mono.NET,那么你将不会对数据库实现进行任何修改。

我不喜欢这个解决scheme的MS Access,但很多人都把它包含在他们的答案中。 由于专有格式和平台依赖性而受到限制。 它确实有它的优势。 如果您拥有MS Access副本,则可以轻松操作数据,您可以以graphics方式构build查询并创buildmacros。 您可以轻松地将其与MS Office的其余部分整合。

所有这些SQLite将是我的build议,因为它是如此紧凑,有据可查,并由不同平台的开发团队的支持。

编辑

我意识到,还有另一个select,这里的每个人都忘了提到

只要你不需要关系表,你可以使用通过ADO.NET读取的CSV文件作为数据集。 (更多的lulzbuild议比其他任何东西,但在某些情况下将是合适的,不需要额外的库进行MS部署。

如果您正在使用.NET 4.0.2或更高版本构build项目并希望获得embedded式数据库支持,请考虑SQL Server Express LocalDB 。

这是Express家族的一个相对较新的特性,它具有更小的安装空间和更less的pipe理开销(与其他Express版本相比),但它维护了SQL Server的可编程性方面。 也就是说,与Compact Edition不同,LocalDB不需要安装单独的ADO.NET提供程序来与SQL进行通信。

有关更多详情,请参阅以下内容

SQL Express v LocalDB v SQL精简版 (MSDN博客)
SQL本地数据库与SQL Server CE (堆栈溢出)

您可以使用Sql Server Express Edition作为它的免费软件,并且除非您想要mirroring等function,否则它同样是function强大的。请看看这个 。

我用db4o成功了。
基于文件,大型社区,使用简单。

http://www.db4o.com/

许可细节

免费通用公共许可证默认情况下,db4o在GPL下获得许可。

如果您计划在内部使用db4o,或者您计划在GPL下以自由软件的方式开发和分发自己的衍生作品,则GPL许可证是理想的。

商业许可证如果要将db4oembedded到非GPL商业产品中,则需要商业许可证。 商业许可证持有者可以获得优质的服务和支持。

另一个没有提到的,如果你不需要它是一个免费的数据库是VistaDB。 这是所有托pipe代码,为embedded式数据库提供大量function,并提供相当不错的性能。 在SQL CE和SQL Server Express之间build立一个很好的桥梁,因为大部分的VistaDB存储过程将在SQL Server Express中运行而不需要修改。 在这一点上,我也非常满意客户服务。 我一直在工作中使用它。 没有服务开始。 一个空的数据库大约是1MB,这个DLL也非常轻量级。 有ADO.NET提供者和这样的东西。 我很喜欢它。

VistaDB的

SQL Server Compact Edition是最好的,因为它是免费的,并且尺寸较小并且集成在一起

SQL Server Express或MS Access