我正在开发一个C#应用程序,并希望确保我选择适合这些规范的数据存储的最佳选择。
程序可以拥有无限量的数据,但该数据仅供使用该应用程序的单个用户使用。每次关闭应用程序时,我都需要保存数据,并且需要在应用程序启动时加载它。
我查看了数据库,但不确定哪种数据库最适合我的需求。另外,我想知道在给定上述规范的情况下是否需要数据库,也许我应该使用实现序列化和反序列化的二进制文件/ XML文件。
请指出正确的方向!
谢谢, OC
编辑:我忘记包含的一个重要因素是必须允许一个用户保存他/她输入的所有条目并将其导出到可在应用程序/用户之间轻松共享的外部文件
答案 0 :(得分:5)
在不了解您的特定应用程序的功能的情况下,很难(对我们而言)说出数据库是否是正确的选择。 但是,您可以使用一些经验法则来帮助您做出决定。
在以下情况下,数据库可能是一个不错的选择:
在以下情况下,数据库可能不是最佳选择:
这些都是经验法则......没有一个条件决定是否使用数据库。您必须检查所有注意事项,并确定使用数据库是否会给您足够的好处 - 或者不是。
在许多环境中(例如iPhone),平台上直接提供内置数据库层。还有一些工具(如NSCoreData)可以帮助您克服对象关系建模(ORM)阻抗不匹配。在这种情况下,使用数据库进行非常简单的数据存储可能会很有意义。
还有一些开源数据持久层(NHiberante,DB4O和其他)有助于简化数据库作为持久性存储的使用...如果可以使用它们,可以改变方程式,转而支持使用数据库。
当您需要支持查询或搜索功能时,数据库可以大大简化您的应用程序的开发。关系数据库支持查询语言(SQL),这使得从数据库中识别和检索结果的工作变得更加容易。让数据库完成繁重工作可以节省大量时间 - 因为数据库专门用于正确有效地执行查询操作。但是,这是以精心设计的关系数据结构为代价的 - 您必须创建它。
一个重要的考虑因素是用户是否将使用您的应用程序共享他们创建/使用的数据。如果您的应用程序更面向文档(想想Word,Excel,Powerpoint),那么基于文件的序列化模型可能更合适。如果您的应用程序的数据不会被共享 - 那么数据库可能是有意义的。
另一个重要因素是您希望数据的开放程度。数据库将信息存储在定义良好的结构(表)中,这使您(和您的用户)更容易直接访问和检查数据。像XML这样的存储格式也允许这样做,但程度稍低。
答案 1 :(得分:4)
像MySQL或SQL Server这样的成熟客户端/服务器数据库可能对单个用户来说太过分了。但是你可能会从SQLite或SQL Server CE这样的嵌入式/基于文件的引擎中获得一些用处,特别是如果你想对数据做更多的事情,而不仅仅是通过ID查找单个记录。如果您自己完成数据存储,则必须编写大量代码才能获得满足特定条件的记录,而且我保证您不会像以此为生的人那样做好。
答案 2 :(得分:2)
就我而言,个人对数据的了解多于使用应用程序的用户数量。
想想你的数据,它是否很复杂?如果你真的要创建一个数据库,它在对象方面有多大,而不是行数...有多少表等...
考虑未来,虽然它只有一个用户,但我认为数据仍然会增加,每次会保存多少数据?
数据库方法无疑会加速您的开发 - 您的数据将比XML文件具有更好的完整性。我讨厌亲自使用文件......过去我曾经历过数据丢失等文件的经历。
请记住,如果您希望保持资源有限,则始终存在SQL Compact Edition。
答案 3 :(得分:1)
如果您在存储库中实现存储功能1)2),您可以从存储到文件开始,然后在以后确定需要这样做的情况下移动到数据库存储
1)http://martinfowler.com/eaaCatalog/repository.html
2)https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx