1

我目前正在为我朋友的公司开发一个人力资源网络应用程序,但我仍然不确定是选择关系数据库还是 NoSQL 数据库,或者是混合数据库。我对这些 NoSQL 数据库的用例非常感兴趣,这就是为什么我想到在这个项目中使用它们的原因。

数据库中关系的示例场景:

一个员工有很多(可以是没有也可以是很多):

  • 教育背景记录
  • 培训和认证记录
  • 工作经历记录
  • 志愿者记录
  • 组织和其他信息记录

此外,应用程序的决策支持方面还有很多工作,例如确定职业道路和为员工制定继任计划。

走NoSQL路线可行吗?基于这些关系,数据库有许多以employees表为中心的一对多关系。选择 NoSQL 而不是 RDBMS 会在查询和性能方面带来好处吗?MongoDB 是我的首选(嗯,因为它是我读过的唯一 NoSQL 数据库)。

还有,员工照片和证件照片扫描件怎么处理?上次我将 MySQL 用于将图片保存为数据库中的 BLOB 的应用程序时,它最终在数据查询和查找期间响应较慢。

4

1 回答 1

2

您决定使用关系数据库还是 NoSQL 数据库在很大程度上取决于以下因素:

  • 您需要存储的数据将如何建模。
  • 数据的预期访问模式是什么
  • 您对可扩展性有什么要求
  • 您对数据一致性有什么要求

通常,当您有以下情况时,NoSQL 可能更可取:

  • 无模式或动态数据结构。
  • 除了使用少量索引外,无需访问数据(即,您在访问数据的方式上不需要太大的灵活性)
  • 您需要水平扩展(传统上使用关系数据库更难做到这一点)
  • 您可能不需要事务一致性,并且可能对最终的读取一致性没问题(取决于您选择的 NoSQL 系统)

对我来说,您列出的用法似乎更符合您在典型的关系数据库支持的应用程序中看到的内容。这并不是说您应该只使用关系数据库。我认为任何需要实现高可扩展性的足够复杂的相互关联的服务都可能需要广泛的数据存储机制——关系数据库、NoSQL、内存缓存、持久平面文件存储等。你只需要根据您的需要考虑合并这些内容。

关于您对图像存储的评论。我发现很少有将图像存储在数据库中的情况。在大多数情况下,存储对图像位置(文件路径、URL 等)的引用将是首选方法。

于 2013-07-03T21:49:33.117 回答