【问题标题】:Advice for database choice and architecture for implementing a Human Resource web app为实现人力资源 web 应用程序的数据库选择和架构提供建议
【发布时间】: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


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多