1

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

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

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

  3. 注册后 HR 经理可以邀请本公司的其他 HR 经理(这里申请的业务验证与 yammer 相同,基于域名的访问 user1@company1.com 可以邀请 anyuser@company1.com )

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

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

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

  7. Job Application 是我们将拥有大部分事务数据的资源,该资源将随着 Job Application 遍历并捕获招聘活动的多个阶段而不断变化,其余资源大多是只读的。

  8. 接下来,将有一个巨大的候选人数据库,旨在与其他数据分开,以便将它们作为候选人资料重新使用,这意味着候选人数据不与特定公司绑定。

如何在 MongoDb 中建模(最好使用 Morphia - A java 库)以实现以下目标,

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

1 回答 1

1

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

Job Application 是我们将拥有大部分事务数据的资源,该资源将随着 Job Application 遍历并捕获招聘活动的多个阶段而不断变化,其余资源大多是只读的。

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

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

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

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

虽然您可以轻松地为此使用 MongoDB,但我看不出有任何理由说明您不能使用 MySQL。

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

于 2011-12-07T08:37:45.420 回答