MySQL, MongoDB и Solr - PullRequest
       3

MySQL, MongoDB и Solr

0 голосов
/ 06 февраля 2012

Я не очень знаком с базами данных NoSQL, и я не совсем понимаю их потенциал, и я все еще учусь.А пока мне нужно разработать простое приложение с возможностями поиска.

Я прочитал несколько постов о Solr, MongoDB и их комбинации.Но приложение, которое я должен создать, должно включать много «стандартных» вещей (например, поля со списком, которые должны быть заполнены из базы данных).Кроме того, есть поля для метаданных и другая дополнительная информация.

Идея, о которой я подумал, заключается в разработке базы данных MySQL, которая будет хранить реляционные данные (такие как метаданные, значения в выпадающем списке, примечания ...).Для каждой записи я мог бы сгенерировать ID, который следует переслать в Solr, вместе с документом, который нужно проиндексировать.Solr выполнит индексацию, и этот документ с присвоенным идентификатором может быть сохранен в MongoDB.

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

Лучший

1 Ответ

1 голос
/ 06 февраля 2012

Начну со структуры документа.

Но приложение, которое я должен создать, должно включать много «стандартных» вещи (например, поля со списком, которые должны быть заполнены из базы данных). Также есть поля для метаданных и другой дополнительной информации.

Мне кажется, что mongodb очень хорошо подходит для данных, которые вы хотите сохранить, потому что вы можете хранить все связанные с комбинированным списком данные в одном документе на mongodb, и это будет очень естественно. В mysql для всех упоминаемых вещей, таких как примечания, значения, вы, вероятно, будете использовать отдельные таблицы.

Это пример потенциальной схемы в mongodb:

{
 _id : 1,
 name : "andrew",
  values: [
       {_id: 1,
       name: "test 1"},
       {_id: 2,
       name: "test 2"},
   ],
  metadata: {
    storeDate: someDate, 
    anyOtherMetadata: ""
  },
  notes: [
    {_id: 1, "note 1"},
    {_id: 2, "note 2"},
  ]
}

Если ваше приложение должно иметь полнотекстовый поиск, вы можете хранить информацию дважды при каждом обновлении / вставке. Первый в mongodb и второй в solr. Также в сортировке вы можете иметь документ, который необходимо отобразить конечному пользователю (обычно он не содержит всю информацию, содержащую документ в базе данных):

документ solr:

{
  _id: 1,
  name: "andrew",
  searchField: "here you can store all staff on what you want search"
}

Solr документ _id корреспондент документа mongodb _id.

Итак:

  1. С помощью приведенной выше схемы, когда вам нужен поиск, вы просто заполняете данные из solr
  2. Но когда вам нужно показать детали конкретного документа, вы загружаете его из mongodb с помощью solr _id.

И вообще я не вижу в вашем приложении места для mongodb, mysql и solr вместе.

Я вижу только две разумные комбинации:

  1. mongodb + solr
  2. mysql + solr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...