я должен создать одну или несколько коллекций в mongodb, чтобы быстрее вставлять и искать? - PullRequest
1 голос
/ 06 февраля 2012

Я довольно новичок в mongodb.Я создаю веб-приложение, которое позволяет вставлять и искать несколько продуктов, таких как ноутбук, жесткий диск, веб-камера ... Мой вопрос заключается в том, должен ли я поместить все из них в одну коллекцию, например "компьютер", или я должен поместить каждыйих собственные коллекции, такие как «ноутбук», «жесткий драйвер», «веб-камера», так что при поиске и вставке продукта пользователь будет быстрее?

Большое спасибо

Ответы [ 2 ]

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

Вообще говоря, вы должны использовать одну коллекцию для каждого «типа» вещей, которые вы храните. Похоже, что все приведенные выше примеры подпадают под «тип» продукта и должны быть в одной коллекции. Документы в одной коллекции не обязательно должны иметь одинаковые поля, хотя для продуктов у вас, вероятно, будет несколько общих полей во всех документах: название, цена, производитель и т. Д .; каждый «подтип» документа может иметь несколько общих полей, например, все жесткие диски могут иметь обороты в минуту, емкость хранилища, форм-фактор, интерфейс (SATA2 / 3, IDE и т. д.).

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

Что касается производительности запросов, обязательно создайте индексы для полей, по которым вы ведете поиск. Если вы разрешите поиск по названию продукта или производителю, у вас будет индекс по названию и другой индекс по производителю. Точные индексы будут зависеть от полей в ваших документах.

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

Подробнее об этих темах см. В документации MongoDB по схеме и индексам , а также презентациях на 10gen.com от докладчиков 10gen и Пользователи MongoDB.

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

Предлагаю начать с одной коллекции.Гораздо проще искать через одну коллекцию, чем коллекцию по продукту.И в будущем, если ваши запросы к коллекции станут медленными, вы можете начать думать о том, как их ускорить.

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

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