Начну со структуры документа.
Но приложение, которое я должен создать, должно включать много «стандартных»
вещи (например, поля со списком, которые должны быть заполнены из базы данных).
Также есть поля для метаданных и другой дополнительной информации.
Мне кажется, что 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.
Итак:
- С помощью приведенной выше схемы, когда вам нужен поиск, вы просто заполняете данные из solr
- Но когда вам нужно показать детали конкретного документа, вы загружаете его из mongodb с помощью solr _id.
И вообще я не вижу в вашем приложении места для mongodb, mysql и solr вместе.
Я вижу только две разумные комбинации:
- mongodb + solr
- mysql + solr