У меня есть база данных mongo, используемая для представления электронных таблиц с тремя коллекциями, представляющими соответственно значения ячеек (строка, col, значение), форматирование ячейки (строка, col, объект, представляющий формат) и размеры ячеек (будь то размер строки или столбца, его индекс и размер).
В каждом документе во всех коллекциях также есть поле для идентификации таблицы, к которой оно относится (содержащее имя таблицы), и я использую upserts (метод findOneAndReplace
mongoose с upsert:true
) для всех вставок/обновлений.
Я думал о том, чтобы «вытащить схему изнутри», оставив одну коллекцию, представляющую таблицу, и документы, ранее содержавшиеся в трех коллекциях, в качестве поддокументов внутри нее, поскольку я думал, что это сделает ее более организованной.
Однако, прочитав вопрос о субдокументах, похоже, что в любом случае для каждой вставки/обновления потребуются два запроса (например, see this question). Поэтому мне было интересно, будут ли изменения, которые я имел в виду, приведет к удару по производительности (я думаю, upserts все равно нужно выполнить поиск, а затем либо обновить, либо вставить, так что по-прежнему будут два запроса за кулисами, но будь то какая-то оптимизация, о которой я не знаю), и в попытке упростить схему я бы не только усложнил процедуры вставки/обновления, но и получил более низкие показатели. Благодаря!Производительность mongodb при обновлении/вставке поддокументов
1
A
ответ
0
Да, есть удар производительности. У MongoDB есть блокировки обновления уровня коллекции. Сохраняя все в одной коллекции, вы в конечном счете ограничиваете количество одновременных операций обновления, которые может выполнять ваше приложение, что ведет к снижению производительности. Остерегайтесь этого, заключается в том, что он полностью зависит от того, как ваше приложение выполняет записи.
С другой стороны, вы можете сэкономить на операции чтения, так как вам нужно будет запросить одну коллекцию, а не 3. Однако масштабирование чтения легко по сравнению с записью, и записи, как правило, являются узким местом, поэтому его трудно сказать, стоит ли это.
Смежные вопросы
- 1. Обновление поддокументов в MongoDB
- 2. MongoDB текст индекс поддокументов
- 3. MongoDB Удаление дубликатов поддокументов
- 4. Обновление массива поддокументов в MongoDB
- 5. Добавить несколько поддокументов в MongoDB
- 6. Обновление конкретных поддокументов в MongoDB:
- 7. mongodb вставка поддокументов как: [Объект]
- 8. MongoDB: запрос для поддокументов: Java
- 9. Сортировка массива поддокументов в mongodb с java
- 10. Как выбрать часть массива поддокументов в mongodb?
- 11. MongoDB: поиск документов с заданным массивом поддокументов
- 12. MongoDB $ срез из каждого набора неизвестных поддокументов
- 13. $ все тип оператора для поддокументов в MongoDB
- 14. MongoDB - выбор объекта из глубоких поддокументов
- 15. Проблема с обновлением поддокументов на MongoDB
- 16. MongoDB: суммарные значения на массиве поддокументов
- 17. Возврат документа без поддокументов в MongoDB
- 18. Как обновить MongoDB документы с массивами поддокументов
- 19. Mongo_count для поддокументов в MongoDB драйвере C
- 20. суммируют значение из нескольких поддокументов в MongoDB
- 21. MongoDB перемещает массив поддокументов в собственную коллекцию
- 22. MongoDB производительность реки
- 23. Производительность MongoDB при миграции с MYSQL на MongoDB
- 24. MongoDB - Производительность геопространственного пересечения
- 25. Mongoose: Сохранение как ассоциативный массив поддокументов против массива поддокументов
- 26. Производительность агрегации MongoDB
- 27. MongoDB агрегация - производительность матча
- 28. mongodb - счет улучшает производительность
- 29. MongoDB производительность записи
- 30. Производительность индексов компонентов MongoDB
Любой ответ, вероятно, будет в основном основанным на мнениях. В любом случае, одна вещь, которую вы должны задать себе: _how_ вы собираетесь использовать данные: какие запросы вы будете отправлять в БД? Можете ли вы позволить себе хранить всю электронную таблицу в ОЗУ? Есть ли шанс достичь предела в 16 МБ? Есть ли одновременные обновления некоторых ячеек? Будете ли вы иметь «защищенные» ячейки? Ответ на эти вопросы (и многие другие) для приложения _your поможет вам разработать схему _your_. –
Спасибо, вы поднимаете некоторые хорошие моменты. Особенно в отношении типа запросов. Я ожидаю в основном писать запросы, поэтому я, вероятно, буду придерживаться того, что у меня уже есть – Orgrim