java - MongoDB 的招聘管理门户数据存储/架构设计

标签 java mongodb database-schema saas morphia

我想使用 MongoDB 创建 SAAS 招聘管理门户,它将解决以下用例,

  1. 一位聪明的人力资源经理会在门户网站上注册他们的公司 (因此到目前为止找到了两个资源人力资源经理和公司)

  2. 公司将拥有自己的个人资料页面,例如 http://myportal.com/abccompany (与 Twitter 相同)

  3. 注册后,人力资源经理可以邀请她公司的其他人力资源经理 (这里应用的业务验证和yammer一样,通过域名访问user1@company1.com可以邀请anyuser@company1.com)

  4. 邀请所有可能的员工后,人力资源经理将开始发布职位 (我们现在找到了第三个资源,一个新的职位空缺!!)

  5. 创建新的职位发布后,我们会获得该职位的 URI,该职位可以发布在社交媒体、其他职位门户等中。

  6. 如果沟通正确,候选人会对 Abc 公司的职位空缺感兴趣,并且他将在我们的门户网站上注册候选人资料后提出职位申请。 (我们现在又找到了两个资源“候选人”和“工作申请”)

  7. 职位申请是我们拥有大部分事务数据的资源,该资源将不断快速变化,因为职位申请将遍历并捕获招聘 Activity 的多个阶段),其余资源大多是只读的。

  8. 最终,将会有一个庞大的候选人数据库,该数据库旨在与其他数据分开,以便将其重新用作候选人资料,这意味着候选人数据不与特定公司绑定(bind)。

如何在 MongoDb 中对此进行建模(最好使用 Morphia - 一个 Java 库)来实现以下目标,

  • 获取对职位申请资源的优化查询
  • 获得 MongoDB 提供的全文搜索的优势

最佳答案

有两件事让我觉得有点奇怪:

Job Application is the resource where we will have most of the transactional data , this resource will keep changing fast as Job Application will traverses thru and will capture multiple phases of recruitment activities ), rest of the resources are mostly read only.

您知道 MongoDB 不支持传统意义上的事务(跨多个文档)吗?这并不是一个大问题,因为数据建模与关系数据库不同,并且您可能能够使用单个文档完成许多功能(这几乎是事务性的)。

To get the advantage of full text search provided by MongoDB

MongoDB 目前不支持全文搜索 - 经常请求和计划它,但需要更多时间:https://jira.mongodb.org/browse/SERVER-380

但是,Morphia 支持正则表达式,您可以手动标记/词干。

虽然您可以轻松地使用 MongoDB 来实现此目的,但我认为您没有任何理由不能使用 MySQL。

对于建模,我会从一种简单的方法开始(公司用户、公司、职位发布、候选人、应用程序),只有在实际遇到性能问题时才开始优化。缓存应该能让您在您的场景中走得更远。

关于java - MongoDB 的招聘管理门户数据存储/架构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404677/

相关文章:

ruby-on-rails - Ruby on Rails 中的多对多多态关联

sql - 如何在 SQL Server 数据库架构中找到所有填充 100% 空值的列?

java - 如何判断一个三位数是否是回文数?

java - 如何使用 Java 制作真正大的 boolean 数组?

java - 发送电子邮件无需身份验证

mongodb - 使用相同的实体/文档类通过 Doctrine 在 MongoDB 和 MySQL 中存储数据

reactjs - 在 Ubuntu 20.04 中安装 mongoDB 失败

mongodb - 如何统计mongodb中游标的迭代次数?

sql - 所有权链接在同一数据库中的两个模式之间不起作用

java - Spring MVC 基于 Java 的配置 - JSP 无法解析