数据库是我的C#应用​​程序的数据存储的正确选择吗?

O.R*_*.R. 2 c# database data-storage

我正在开发一个C#应用程序,并希望确保我选择适合这些规范的数据存储的最佳选择.

该程序可以拥有无​​限量的数据,但该数据仅供使用该应用程序的单个用户使用.每次关闭应用程序时,我都需要保存数据,并且需要在应用程序启动时加载它.

我查看了数据库,但不确定哪种数据库最适合我的需求.另外,我想知道在给定上述规范的情况下是否需要数据库,也许我应该使用实现序列化和反序列化的二进制文件/ XML文件.

请指出正确的方向!

谢谢,OC

编辑:我忘记包含的一个重要因素是必须允许一个用户保存他/她输入的所有条目并将其导出到可以在应用程序/用户之间轻松共享的外部文件.

LBu*_*kin 5

如果不了解您的特定应用程序的功能,我们很难(对我们来说)数据库是否是正确的选择.但是,您可以使用一些经验法则来帮助指导您的决策.

在以下情况下,数据库可能是个不错的选

  • 数据可以由多个用户使用.
  • 当可能的并发活动必须正确存储时.
  • 收集的数据并非都需要立即加载到内存中.
  • 当您希望能够以复杂的方式查询或报告数据时.
  • 当您想要使用标准工具对存储的数据进行透明化时.
  • 当更改主要是本地化而不是要求重建整个数据存储时.
  • 当您的数据适用于关系(而不是分层表示)时.

在以下情况下,数据库可能不是最佳选择:

  • 您只为单个用户提供服务.
  • 并发活动很少,保存更改时必须重新创建整个数据模型.
  • 当数据非常少时,它将立即加载到内存中.
  • 当您的数据是分层的或难以建模关系时.
  • 当您的应用程序面向文档时,文档(文件)将发送给其他用户.
  • 当您存储的数据中散布着大量二进制数据时.
  • 当您想要避免依赖第三方工具或服务时.
  • 当您的数据模型的结构可能经常更改时.

这些都是经验法则......没有一个条件可以决定是否使用数据库.您必须检查所有注意事项,并确定使用数据库是否会给您足够的好处 - 或者不是.

在许多环境中(例如iPhone),平台上直接提供内置数据库层.还有一些工具(如NSCoreData)可以帮助您克服对象关系建模(ORM)阻抗不匹配.在这种情况下,使用数据库进行非常简单的数据存储可能会很有意义.

还有一些开源数据持久层(NHiberante,DB4O和其他)有助于简化数据库作为持久性存储的使用...如果可以使用它们,可以改变方程式,转而使用数据库.

当您需要支持查询或搜索功能时,数据库可以大大简化应用程序的开发.关系数据库支持查询语言(SQL),这使得从数据库中识别和检索结果的工作变得更加容易.让数据库完成繁重工作可以节省大量时间 - 因为数据库专门用于正确有效地执行查询操作.然而,这是以精心设计的关系数据结构为代价的 - 您必须创建它.

一个重要的考虑因素是用户是否将使用您的应用程序共享他们创建/使用的数据.如果您的应用程序更面向文档(想想Word,Excel,Powerpoint),那么基于文件的序列化模型可能更合适.如果您的应用程序的数据不会被共享 - 那么数据库可能是有意义的.

另一个重要因素是您希望数据的开放程度.数据库将信息存储在定义良好的结构(表)中,这使您(和您的用户)更容易直接访问和检查数据.像XML这样的存储格式也允许这样做,但程度稍低.