对数据库选择的建议和实现人力资源Web应用程序的体系结构

时间:2013-07-03 21:34:22

标签: mongodb database-design nosql

我目前正在为我朋友的公司开发一个人力资源网络应用程序,我仍然没有决定是选择Relational还是NoSQL数据库,或者是混合数据库。我对这些NoSQL数据库的使用案例非常感兴趣,这也是为什么我接受了将它们用于这个项目的想法。

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

  

员工有很多(可能没有或很多):

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

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

转到NoSQL路线是否可行?根据这些关系,数据库在employees表中具有许多以一对多关系为中心。在RDBMS上选择NoSQL会在查询和性能方面提供哪些好处? MongoDB是我的首选(好吧,因为它是我读过的唯一NoSQL数据库)。

另外,我如何处理员工的照片以及扫描的证件文件和图片?上次我使用MySQL作为在数据库中将图片保存为BLOB的应用程序时,它在数据查询和查找过程中的响应速度较慢。

1 个答案:

答案 0 :(得分:2)

您决定使用关系数据库或NoSQL数据库在很大程度上取决于许多因素:

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

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

  • 无架构或动态数据结构。
  • 无需使用少量索引访问数据(即您在访问数据方面不需要太多灵活性)
  • 您需要横向扩展(传统上使用关系数据库更难处理)
  • 您可能不需要事务一致性,并且可能最终读取一致性(取决于您选择的NoSQL系统)

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

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