对于小型.NET应用程序,什么是数据库的良好选择?

ePe*_*man 177 database sqlite vistadb mongodb eloquera

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

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

Ada*_*rth 191

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


17/03/2014我仍然接受这方面的投票,请注意最初回答的日期.尽管列出的主要三个项目仍然完全可行,但该列表将趋于变得陈旧.还有其他未列出的数据库技术.


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

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中运行 - 个人偏好关于喜欢微软产品的宗教方面我认为:-)

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

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

并非所有这些都是免费的.SQL/LINQ/in-proc支持各有不同.此列表仅用于好奇心.

现在还有Karvonite,但代码库链接已损坏.当它再次存在时,我会研究这个用于WP7开发的.

  • +1对于SQL Server CE.您可以只使用SQL Server CE dll并在应用程序的工作目录中拥有一个数据库文件,而不是在应用程序旁边安装SQL Server.简单. (11认同)
  • RavenDB确实是一个文档数据库,但它的API比简单的名称和值对强大得多.问题是,如果您正在寻找免费的替代品,它不适用于商业项目. (2认同)

Mik*_*ebb 57

我推荐SQLite.我们将它用于我工作的几乎所有应用程序.

它小巧紧凑.它确实需要DLL在app目录中,但您不必安装其他软件,如Access或SQL Server.另外,正如danielkza所述,"SQLite是公共领域,所以你不必担心许可." 这真的可以产生很大的不同.

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

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

这里有关于SQLite的更多信息:
维基百科上的SQLite
使用SQLite的公司

自定义函数:另外,如果您正在查看SQLite核心函数并且看不到您喜欢的函数,则可以创建自己的自定义函数.以下是几个例子:
来自SO
Anoter的例子

  • 一个补充:SQLite是公共域,因此您不必担心许可. (8认同)
  • @Prokurors - 所有 SQLite 需要运行的是与您在程序中使用的语言(C++、C# 等)相对应的 DLL 文件。不需要其他服务或程序。此外,它应该在具有并发用户的网络上工作。我们在我工作的服务器上启动并运行了一个副本,它运行良好。您可以在此处查看更多并发性:http://www.sqlite.org/lockingv3.html (2认同)

Hug*_*hem 10

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

嵌入式版本是服务器的一个惊人变体.它是一个功能齐全的Firebird服务器,只包含几个文件.它非常易于部署,因为无需安装服务器.

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


Mer*_*lin 8

SQL Server Compact如果要使用官方的Microsoft软件解决方案.如果您需要这样的东西,这具有能够与SQL服务器一起使用复制的优点.

SQLite如果你想要非常简单的小而且免费.这是android用于它的内部数据库所以它得到了很好的支持,并且有很好的.NET绑定可用.

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

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

所有这些SQLite都是我的推荐,因为它非常紧凑,文档齐全,并且得到越来越多的开发人员的支持,无论平台如何.

编辑

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

只要您不需要关系表,就可以通过ADO.NET将CSV文件读取为数据集.(更多的lulz建议比其他任何东西,但在某些情况下适合,并且不需要额外的库用于MS部署.


Rob*_*ney 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(堆栈溢出)