对于小型.NET应用程序,数据库的最佳选择是什么?[关闭]


180

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

您能否列出一些最著名的轻量级数据库软件


1

Answers:


192

14/06/2016是的......仍然得到upvotes: - /


17/03/2014我仍然收到此upvotes,铭记这原本是回答的日期。尽管列出的前三项仍然完全可行,但该列表将趋于过时。还有其他未列出的可用数据库技术。


您有几个立即可识别且免费的选项:

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

http://sqlite.phxsoftware.com/

这三个都使用SQL,尽管可能有一些限制/怪癖。Management Studio使用Compact和LocalDB,而使用SQLite则需要另一个UI工具,例如SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

有NoSQL替代方法,例如:

就个人而言,我会避免在其他免费选项面前使用MS Access。使用LocalDB,Compact或SQLite不会出错。它们都是可爱的小型数据库,它们在很少的RAM中运行相对较快-我喜欢我喜欢的关于喜欢Microsoft产品的宗教方面的个人偏爱:-)

我将Sterling用于Windows Phone编程,因为它是为使用隔离存储而构建的。我只看过RavenDb上的文章,但是我可以告诉你这是一个基于JSON的文档存储框架。

不要混淆这种情况(与SQLite,SQL Server Express LocalDB或SQL Server Compact Edition一起使用),但是那里还有其他嵌入式/本地数据库,其中一些是关系型的,其他是面向对象的:

并非所有这些都是免费的。SQL / LINQ /过程内支持在所有这些方面都不同。此列表仅出于好奇。

现在也有Karvonite,但是代码库链接已断开。当它再次上线时,我将研究此文件以进行WP7开发。


11
+1对于SQL Server CE。无需在应用程序旁边安装SQL Server,您只需使用SQL Server CE dll,并在应用程序的工作目录中包含一个数据库文件。简单。
菲尔,

2
RavenDB确实是一个文档数据库,但是它的API比简单的名称和值对更强大。问题是,如果您正在寻找免费的替代品,则它对于商业项目不是免费的。
JCallico 2011年

@JCallico我承认我对总结进行了概括,但是我怀疑有人会接受我所说的福音。
亚当·霍尔兹沃思

@Brendan Long,那里没有SQL实现可以说是100%标准的。
Pop Catalin

1
与其在回答的顶部留下一小条难以阅读的信息,该信息说明信息已过时。仅更新和/或附加您的答案并包括一些可用选项的示例可能会更容易。
詹姆斯·肖

58

我建议使用SQLite。我们在我工作的地方开发的几乎所有应用程序都使用它。

它小巧紧凑。它确实要求DLL位于应用程序目录中,但是您不必安装其他软件(如Access或SQL Server)。而且,正如下面的danielkza所说,“ SQLite是公共领域,因此您完全不必担心许可问题。” 这确实可以带来很大的不同。

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

您还将需要一个应用程序来编辑/管理数据库。我认为最好的是SQLite Studio。这里还有更多:
SQLite Admin
SQLite 2009 Pro(页面底部)
更新-11/7/25- 更多SQLite应用程序(有关SO的问题,请点击此处)

关于SQLite的更多信息:Wikipedia上的SQLite

使用SQLite的公司

自定义函数:此外,如果您正在查看SQLite核心函数,但没有找到自己喜欢的函数,则可以创建自己的自定义函数。这里有几个示例:
来自SO
Anoter示例


8
另外,SQLite是公共领域,因此您完全不必担心许可问题。
danielkza 2011年

@MikeWebb Sqlite是否可以与ClickOnce应用程序一起使用而无需安装任何其他服务或其他东西?如果它位于多个并发用户的网络共享上,它将起作用吗?
Prokurors

1
@Prokurors-运行的所有SQLite都是与您在程序中使用的语言(C ++,C#等)相对应的DLL文件。不需要其他服务或程序。此外,它应在具有并发用户的网络上工作。我们已经复制并在我工作的服务器上运行,并且效果很好。您可以在此处查看更多有关并发的信息:sqlite.org/lockingv3.html
Mike Webb

10

嵌入式Firebird可能是一个不错的选择

嵌入式版本是服务器的一个惊人变体。它是功能齐全的Firebird服务器,仅包含几个文件。由于不需要安装服务器,因此部署非常容易。

有一些非常好的点网驱动程序


8

如果要使用正式的Microsoft解决方案,请使用SQL Server Compact。这样的优点是,如果您需要这种功能,则可以与SQL Server一起使用复制。

如果想使用SQLite,那么非常小巧而又免费。这就是android用于其内部数据库的功能,因此它受到很好的支持,并且有很好的.NET绑定。

SQLite的一个明显优势是它是跨平台的。因此,如果您想将应用程序移植到Mono.NET,则无需对数据库实现进行任何修改。

我不喜欢这种解决方案的MS Access,但是很多人都将其包含在答案中。由于专有格式和平台依赖性,它受到限制。它确实有它的优点。如果您拥有MS Access的副本,则可以轻松地操作数据,可以以图形方式构建查询并创建宏。您可以轻松地将其与MS Office的其余部分集成。

在所有这些SQLite中,我会推荐我,因为它是如此紧凑,文档完善并得到了越来越多的开发人员支持,而不论平台如何。

编辑

我意识到还有另一种选择,这里的每个人都忘记提及

只要不需要关系表,就可以使用通过ADO.NET将CSV文件读取为数据集。(最重要的建议是,但在某些情况下将是合适的,并且不需要其他库来进行MS部署。


8

如果要使用.NET 4.0.2或更高版本构建项目,并且需要嵌入式数据库支持,请考虑使用SQL Server Express LocalDB

这是Express系列的相对较新的功能,具有较小的安装空间和减少的管理开销(与Express的其他版本相比),但它保留了SQL Server的可编程性。也就是说,与Compact Edition不同,LocalDB不需要安装单独的ADO.NET提供程序即可与SQL通信。

有关更多详细信息,请参见以下内容:

SQL Express v LocalDB v SQL Compact Edition(MSDN博客)
SQL LocalDB与SQL Server CE(堆栈溢出)


7

1
或者专门为.NET你可能想看看RavenDB
marc_s

Mongo虽然很可爱,但是并没有运行嵌入式程序-您必须启动一个单独的服务器进程,这对于OP而言可能有点繁重。
Mike Woodhouse,

Mongodb不支持sql。询问者想要“我可以在其中通过Sql查询保存和检索记录的地方”。而且,mongodb占用大量内存。我不建议在此用例中使用它。
彼得·朗

4

你可以使用Sql Server Express Edition它的自由,也同样强大,直到除非你想要一个像功能mirroring等有一个看看这个


8
问题指出“我不需要任何强大的东西”。SQL Server Express不是SQL Server的简易版。它是数据库大小受限的版本,在服务启动时对启动用户PC产生很大影响。这个问题太过分了。SQL Server Compact更适合。
Moog

2

我已经成功使用了db4o。
基于文件的大型社区,易于使用。

http://www.db4o.com/

许可详细信息

默认情况下,免费的通用公共许可证db4o根据GPL许可。

如果您打算在内部使用db4o,或者您还计划将自己的派生作品作为免费软件根据GPL进行开发和分发,则GPL许可证是理想的选择。

商业许可证如果要将db4o嵌入商业非GPL产品中,则需要商业许可证。商业许可证持有者可以获得高级服务和支持。


我在2012年使用db4o了6个月。如果有某种方法可以避免在对象模型更改后无法访问旧数据的问题,我会赞成这个答案。据我所知,如果更改对象,很难避免丢失旧数据。最重要的是,始终以其他非db4o格式(无论如何都是相当通用的规则)在其他位置保留数据的备份副本。
Contango 2014年

2

如果您不要求将其作为免费数据库,则没有提及的替代方法是VistaDB。这些都是托管代码,为嵌入式数据库提供了大量功能,并提供相当不错的性能。SQL CE和SQL Server Express之间的桥梁非常好,因为大多数VistaDB存储过程都可以在SQL Server Express中运行而无需修改。在这一点上,我也对客户服务感到非常满意。我一直在工作中使用它。没有启动服务。一个空的数据库大约1MB,而DLL也非常轻巧。有ADO.NET提供程序之类的东西。我很喜欢它。

Vista数据库


嗨!它在多用户方案中工作吗?例如,我可以将此VistaDB存储在网络共享上并同时从多个用户访问它吗?
Prokurors

1
在这方面,它的功能有限。显然,它不能替换使用该框上的本地db引擎运行的真实数据库,但是它确实提供了一些事务选项。我们计划在这种情况下使用它,因为它似乎比我们遇到的任何免费选项都要好用,并且我们的客户不太可能具有设置sql server或其他方面的专业知识。它提供了比sqlce更多的功能,但不如完整的sql server那样多。它是一款真正优质的软件。
钻机

谢谢你的信息!他们的新预期版本5听起来很有希望。您是否尝试过VistaDB的实体框架?甚至可能首先使用EF Code创建了VistaDB文件?
Prokurors

1
我做到了,但这大约是3-4年前。那时我发现它运作良好,这是我的第一个EF经验。我认为现在更好。当时唯一缺少的是文档的某些部分是稀疏的,但这是在其所有者现在购买后的过渡期间。
钻机

1
PS:至少在我使用它时,他们非常愿意提供演示许可证供使用。我强烈建议您先尝试一下,然后再承担许可费用。
钻机

1

SQL Server Compact Edition是最好的,因为它是免费的,而且体积小巧,并且集成良好


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.