在不了解您的特定应用程序的更多信息的情况下,(对我们而言)很难说数据库是否是正确的选择。但是,您可以使用一些经验法则来帮助您做出决定。
在以下情况下,数据库可能是一个不错的选择:
- 数据可能被多个用户使用。
- 当并发活动可能时,必须正确存储。
- 当收集的数据不需要一次全部加载到内存中时。
- 当您希望能够以复杂的方式查询或报告数据时。
- 当您想对使用标准工具存储的数据进行透明化时。
- 当更改大部分是本地化的,而不是需要重建整个数据存储时。
- 当您的数据适合关系(而不是层次表示)时。
在以下情况下,数据库可能不是最佳选择:
- 您只为单个用户提供服务。
- 并发活动很少,保存更改时必须重新创建整个数据模型。
- 当数据很少时,它会一次全部加载到内存中。
- 当您的数据是分层的或难以进行关系建模时。
- 当您的应用程序是面向文档的,并且文档(文件)将被发送给其他用户。
- 当您存储的数据中散布着大量二进制数据时。
- 当您想避免依赖第三方工具或服务时。
- 当您的数据模型的结构可能经常更改时。
这些都是经验法则……没有一个条件会决定是否使用数据库。您必须检查所有注意事项,并决定使用数据库是否会给您带来足够的好处。
在许多环境中(例如 iPhone),平台上有一个直接可用的内置数据库层。还有一些工具(如 NSCoreData)可以帮助您克服对象关系建模 (ORM) 阻抗不匹配。在这种情况下,将数据库用于非常简单的数据存储可能很有意义。
还有一些开源数据持久层(NHiberante、DB4O 和其他)有助于简化将数据库用作持久性存储的过程……如果可以使用它们,可以改变等式以支持使用数据库.
当您需要支持查询或搜索功能时,数据库可以大大简化应用程序的开发。关系数据库支持查询语言 (SQL),这使得从数据库中识别和检索结果的工作变得更加容易。让数据库完成繁重的工作可以节省大量时间 - 因为数据库专门设计用于正确有效地执行查询操作。然而,这是以精心设计的关系数据结构为代价的——您必须创建它。
一个重要的考虑因素是用户是否会共享他们使用您的应用程序创建/使用的数据。如果您的应用程序更面向文档(想想 Word、Excel、Powerpoint),那么基于文件的序列化模型可能更合适。如果您的应用程序的数据不会被共享 - 那么数据库可能是有意义的。
另一个重要因素是您希望数据的开放程度。数据库将信息存储在定义明确的结构(表)中,这使您(和您的用户)更容易直接访问和检查数据。像 XML 这样的存储格式也允许这样做,但程度要小一些。