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

时间:2011-12-06 18:13:02

标签: java mongodb database-schema saas morphia

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

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

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

  3. 注册后,人力资源经理可以邀请其公司的其他人力资源经理 (此处应用的业务验证与yammer相同,基于域名的访问权限user1@company1.com可以邀请anyuser@company1.com)

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

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

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

  7. Job Application是我们拥有大部分交易数据的资源,随着Job Application将遍历并将捕获招聘活动的多个阶段,此资源将保持快速变化,其余资源主要是读取仅

  8. 下线,将有一个庞大的候选人数据库,该数据库旨在与其他数据分开,以便将其重新用作候选人资料,这意味着候选人数据与特定公司无关。 / p>

  9. 我如何在MongoDb中建模(最好使用Morphia - 一个java库)来实现以下目标,

    • 获取有关Job Application资源的优化查询
    • 获得MongoDB提供的全文搜索的优势

1 个答案:

答案 0 :(得分:1)

有两件事让我感到有些奇怪:

  

Job Application是我们拥有大部分交易数据的资源,这个资源将随着Job Application将遍历并且将捕获多个阶段的招聘活动而快速变化,其余的资源大部分都是只读的。 / p>

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

  

获得MongoDB提供的全文搜索的优势

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

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

虽然您可以轻松地使用MongoDB,但我没有看到任何原因导致您无法使用MySQL。

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