Портал управления рекрутингом Datastore / Разработка схемы для MongoDB - PullRequest
1 голос
/ 06 декабря 2011

Я хочу использовать MongoDB для создания SAAS Recruitment Management Portal, в котором будут рассмотрены следующие варианты использования,

  1. Один умный менеджер по персоналу зарегистрирует свою компанию на портале (отсюда два ресурса: Менеджер по персоналу и Компания)

  2. У компании будет собственная страница профиля, например http://myportal.com/abccompany (так же, как твиттер)

  3. После регистрации менеджер по персоналу может пригласить других менеджеров по персоналу из своей компании. (проверка бизнеса, применяемая здесь, аналогична yammer, доступ на основе доменного имени user1@company1.com может пригласить anyuser@company1.com)

  4. После приглашения всех возможных сотрудников менеджер по персоналу начнет публиковать вакансии (сейчас мы нашли третий ресурс, «Открытие новой работы!»)

  5. После создания новой публикации вакансии мы получаем URI для этой работы, который можно опубликовать в социальных сетях, на других порталах вакансий и т. Д.

  6. При правильном сообщении, Кандидат заинтересовался бы вакансией в компании Abc, и он подаст заявление о приеме на работу после регистрации профиля Кандидата на нашем портале. (мы нашли еще два ресурса: кандидат и вакансия)

  7. Job Application - это ресурс, на котором у нас будет большая часть транзакционных данных, этот ресурс будет быстро меняться, так как Job Application будет проходить через все этапы набора персонала, остальные ресурсы в основном читаются. только.

  8. Внизу будет огромная база данных кандидатов, которая должна храниться отдельно от других данных, чтобы их можно было использовать в качестве профиля кандидата, что означает, что данные кандидата не привязаны к конкретной компании.

Как мне смоделировать это в MongoDb (предпочтительно с использованием Morphia - Java-библиотеки) для достижения следующих целей,

  • Для оптимизации запросов к ресурсу Job Application
  • Чтобы воспользоваться преимуществами полнотекстового поиска, предоставляемого MongoDB

1 Ответ

1 голос
/ 07 декабря 2011

Две вещи, которые показались мне немного странными:

Job Application - это ресурс, на котором у нас будет большая часть транзакционных данных, этот ресурс будет быстро меняться, так как Job Application будет проходить через ибудет охватывать несколько этапов деятельности по подбору персонала), остальные ресурсы в основном предназначены только для чтения.

Вам известно, что MongoDB не поддерживает транзакции в обычном смысле (охватывающие несколько документов)?Это не такая большая проблема, поскольку моделирование данных отличается от реляционных баз данных, и вы можете реализовать множество функций с помощью одного документа (который в значительной степени транзакционный).

Чтобы получить преимуществополнотекстового поиска, предоставляемого MongoDB

MongoDB в настоящее время не поддерживает полнотекстовый поиск - его часто запрашивают и планируют, но это займет некоторое время: https://jira.mongodb.org/browse/SERVER-380

ОднакоMorphia поддерживает регулярные выражения, и вы можете токенизировать / stem вручную.

Хотя вы можете легко использовать MongoDB для этого, я не вижу причин, по которым вы не могли бы использовать MySQL.

Для моделирования я бы начал с простого подхода (компания-пользователь, компания, объявление о вакансии, кандидат, приложение) и начал бы оптимизировать, только если у вас действительно есть проблемы с производительностью.Кэширование должно помочь вам в вашем сценарии.

...