.NET数据存储 - 数据库与单个文件
-
29-09-2019 - |
题
我有一个C#应用程序,该应用程序允许一个用户输入有关客户和工作网站的信息。该信息非常基本。
- 客户:姓名,号码,地址,电子邮件,关联的工作网站。
- 工作网站:名称,位置。
这是我需要这个程序的规格。
- 输入的数据量没有限制。
- 每个应用程序单用户。没有并发活动或多个用户。
- 允许将用户条目/数据导出到可以在应用程序/用户之间轻松共享的外部文件。
- 允许用户查询根据客户信息/工作网站信息的不同组合显示客户。
- 将永远不会在应用程序之外查看或操纵数据。
- 该程序将几乎总是运行,最小化任务栏。
- 启动时间不是很重要,但是我希望查询要快得多。
这一切似乎都将我指向数据库,但很轻巧。但是,就数据存储而言,我还需要它没有限制。如果您同意我应该使用数据库,请让我知道最适合我的需求的方法。如果您不认为我应该使用数据库,请就您认为最好的建议提出其他建议。
其他提示
我的建议是使用sqlite。你可以在这里找到它: http://sqlite.org/. 。您可以在此处找到C#包装器版本: http://sqlite.phxsoftware.com/
Sqlite非常轻巧,并且具有一些非常强大的功能,可用于这种轻巧的引擎。您可以研究的另一个选项是Microsoft访问。
您再次问一个错误的问题:)
更好的问题是“如何构建一个使我更改数据存储实现的应用程序?”
如果应用存储库模式并正确接口,则可以构建可互换的持久性层。因此,您可以从一个实现开始,然后将其更改为需要重新设计业务或应用程序层的需要。
一旦拥有存储库接口,您就可以尝试以许多不同的方法来实现:
平面文件 - 您可以将数据坚持为XML,并且前提是您可以在内存中存储完整的内容(只需在启动时读取文件,请在关闭时写文件)即可。使用内存XML,您可以获得很高的吞吐量,而无需担心数据库索引等。
可分发DB -sqlite或sql compact效果很好;他们提供许多DB的好处,不需要安装
本地DB -SQL Express是轻巧和功能全功能的DB之间的良好中间地面。当仔细使用时,访问就足够了。主要好处是它包含在MS Office中(尽管默认未安装),并且某些IT组在机器上安装的访问量比SQL Express更舒适。
完整的DB -MySQL,SQL Server,Postgresql等。
鉴于您的特定要求,我会建议您使用基于XML的平面文件 - 唯一的条件是您可以与应用程序的内存使用直接与文件大小相关联(由于您的数据是文本,甚至是有了XML的重量,这将需要 很多 条目变得很大)。
这是您的要求的专业人士/选择:
缺点
- 输入的数据量没有限制。
- 使用内存XML将意味着您的应用程序不会扩展。它可以轻松处理10MB数据文件,100MB不应该是问题(除非您的系统在RAM上很低),而不是您必须认真质疑“我可以负担得起这么多的内存吗?”。
优点
- 每个应用程序单用户。没有并发活动或多个用户。
- 可以将XML读取为内存并由该过程(实际上是AppDomain)保存。它非常适合单用户场景,在这种情况下,并发是一个非常狭窄的问题。
- 允许将用户条目/数据导出到可以在应用程序/用户之间轻松共享的外部文件。
- XML非常适合导出,并且易于导入以脱颖而出,数据库等...
- 允许用户查询根据客户信息/工作网站信息的不同组合显示客户。
- Linq-to-XML是您的朋友:D
- 将永远不会在应用程序之外查看或操纵数据。
- ....然后完全持有内存不会引起任何问题
- 该程序将几乎总是运行,最小化任务栏。
- 因此,在启动时加载XML,并且在关闭时的写入将是可以接受的(如果文件很大,可能需要一段时间)
- 启动时间不是很重要,但是我希望查询要快得多
- 在启动时阅读XML会相对较慢;但是,当它加载内存时,很难击败。任何给定的DB都需要启动DB引擎,进行Interop/crossCoress/cross-network调用,从磁盘加载结果(如果不是由引擎缓存),等等...
怎么样 sqlite? 听起来这很适合您的应用程序。
您可以使用 system.data.sqlite 作为.net包装器。
您可以免费获得SQL Server Express。我想说的不是什么,为什么要使用数据库,为什么不这样做呢?这种类型的问题正是数据库的目的,而SQL Server是一个非常强大且广泛使用的数据库,因此,如果您要去一些其他解决方案 你 需要提供一个充分的理由,为什么您不会使用数据库。
数据库非常合适。 sqlite 正如其他人提到的那样好。
您也可以使用本地实例 SQL Server Express 要利用与Microsoft开发堆栈的其他部分进行改进的集成(因为您提到C#)。
第三个选项是类似的文档数据库 掠夺 这可能适合您的数据声音。
编辑
第四个选择是尝试 Lightwitch 几天后Beta出来时。 (8-23-2010)
/编辑
数据存储(硬盘的空白空间)总是会限制。根据Wikipedia的说法,SQL Express仅限于 SQL Server Express 2008 R2的10 GB