我目前正在为我朋友的公司开发一个人力资源网络应用程序,我仍然没有决定是选择Relational还是NoSQL数据库,或者是混合数据库。我对这些NoSQL数据库的使用案例非常感兴趣,这也是为什么我接受了将它们用于这个项目的想法。
数据库中关系的示例场景:
员工有很多(可能没有或很多):
- 教育背景记录
- 培训和认证记录
- 工作经历记录
- 志愿者记录
- 组织和其他信息记录
此外,应用程序的决策支持方面还有很多工作,例如确定职业道路和制定员工继任计划。
转到NoSQL路线是否可行?根据这些关系,数据库在employees表中具有许多以一对多关系为中心。在RDBMS上选择NoSQL会在查询和性能方面提供哪些好处? MongoDB是我的首选(好吧,因为它是我读过的唯一NoSQL数据库)。
另外,我如何处理员工的照片以及扫描的证件文件和图片?上次我使用MySQL作为在数据库中将图片保存为BLOB的应用程序时,它在数据查询和查找过程中的响应速度较慢。
答案 0 :(得分:2)
您决定使用关系数据库或NoSQL数据库在很大程度上取决于许多因素:
通常情况下,当您拥有以下内容时,NoSQL可能更可取:
对我而言,您列出的用法似乎更符合您在典型的关系数据库支持的应用程序中看到的内容。这并不是说你应该只使用关系数据库。我认为任何需要实现高可伸缩性的足够复杂的相互关联服务可能需要广泛的数据存储机制 - 关系数据库,NoSQL,内存缓存,持久平面文件存储等。您只需要根据您的需求来考虑合并这些。
关于您对图像存储的评论。我发现在数据库中存储图像的情况非常少。对于大多数情况,存储对图像位置(文件路径,URL等)的引用将是首选方法。