我想使用MongoDB创建一个SAAS招聘管理门户网站,它将解决以下用例,
一位智能人力资源经理会在门户网站上注册他们的公司 (因此到目前为止找到了两个资源人力资源经理和A公司)
公司将拥有自己的个人资料页面http://myportal.com/abccompany (与推特相同)
注册后,人力资源经理可以邀请其公司的其他人力资源经理 (此处应用的业务验证与yammer相同,基于域名的访问权限user1@company1.com可以邀请anyuser@company1.com)
在邀请所有可能的员工之后,HR Manager将开始发布职位 (我们现在找到了第三个资源,一个新的职位空缺!!)
创建新的职位发布后,我们会获得该职位的URI,该职位可以在社交媒体,其他职位门户等中发布。
如果沟通正确,候选人会对Abc公司的职位空缺感兴趣,他将在我们的门户网站上注册候选人资料后提出工作申请。 (我们现在又找到了两个资源候选人和一份工作申请表)
Job Application是我们拥有大部分交易数据的资源,随着Job Application将遍历并将捕获招聘活动的多个阶段,此资源将保持快速变化,其余资源主要是读取仅
下线,将有一个庞大的候选人数据库,该数据库旨在与其他数据分开,以便将其重新用作候选人资料,这意味着候选人数据与特定公司无关。 / p>
我如何在MongoDb中建模(最好使用Morphia - 一个java库)来实现以下目标,
答案 0 :(得分:1)
有两件事让我感到有些奇怪:
Job Application是我们拥有大部分交易数据的资源,这个资源将随着Job Application将遍历并且将捕获多个阶段的招聘活动而快速变化,其余的资源大部分都是只读的。 / p>
您知道MongoDB不支持传统意义上的事务(跨越多个文档)吗?这不是一个大问题,因为数据建模与关系数据库不同,您可能能够使用单个文档完成许多功能(这几乎是事务性的)。
获得MongoDB提供的全文搜索的优势
MongoDB目前不支持全文搜索 - 它经常被请求和计划,但需要更多时间:https://jira.mongodb.org/browse/SERVER-380
但是,Morphia支持正则表达式,您可以手动标记/删除。
虽然您可以轻松地使用MongoDB,但我没有看到任何原因导致您无法使用MySQL。
对于建模,我从一个简单的方法(公司用户,公司,职位发布,候选人,应用程序)开始,只有在实际遇到性能问题时才开始优化。缓存可以让您在自己的场景中走得更远。