【发布时间】:2013-07-01 18:17:41
【问题描述】:
我目前正在为我朋友的公司开发一个人力资源网络应用程序,但我仍然不确定是选择关系数据库还是 NoSQL 数据库,或者是混合数据库。我对这些 NoSQL 数据库的用例非常感兴趣,这也是为什么我想到在这个项目中使用它们的原因。
数据库中关系的示例场景:
一个员工有很多(可以没有也可以很多):
- 教育背景记录
- 培训和认证记录
- 工作经历记录
- 志愿者记录
- 组织和其他信息记录
此外,应用的决策支持方面还有很多工作要做,例如确定职业道路和为员工制定继任计划。
走NoSQL路线可行吗?基于这些关系,数据库有许多以employees表为中心的一对多关系。选择 NoSQL 而不是 RDBMS 会在查询和性能方面带来好处吗? MongoDB 是我的首选(嗯,因为它是我读过的唯一 NoSQL 数据库)。
另外,员工的照片和证件的扫描件和照片如何处理?上次我将 MySQL 用于将图片保存为数据库中的 BLOB 的应用程序时,它最终在数据查询和查找期间响应较慢。
【问题讨论】:
-
如果您将面临广泛的关系处理、并发请求、一致性挑战(可能与生产系统有关)并且将执行大量敏感数据的大规模聚合,那么请使用关系数据库。如果您主要需要速度并且数据一致性/关系不那么重要(可能使用网络应用程序)并且将处理基于文本的复杂查询,那么请使用 NoSQL。更好的选择是尝试两者,然后评估它们的性能,因为你会在这里得到不同的意见。一切顺利。
-
@Sai 我同意对性能的评价。关于它,是否意味着使用专门用于衡量它们的工具(捆绑或专有),即mysql性能监控工具,mongodb工具等......
-
您可以使用特定的工具来衡量他们的表现,也可以使用自己的指标。如果您要使用工具,我很确定有人已经比较了几个用例,并且可以在线获得。但是对于您的特定用例,您也可以尝试使用工具比较它们的性能。 :)
-
在开始之前,请阅读涵盖此内容的数据建模书籍。 Hay 的 Enterprise Model Patterns 或 Silverston 的 Data Model Resource Book (vols 1,2)
标签: mongodb database-design nosql