MongoDB: преимущества использования встроенных объектов - PullRequest
6 голосов
/ 11 сентября 2011

Каковы преимущества использования встроенных объектов?

В моей практике это очень редко, когда я не использую вложенные объекты вне его родителя. Я имею в виду общий пример с comments, который встроен в пост: мне нужно показывать последние комментарии в списке обновлений, мне нужно показывать комментарии для current_user и т. Д. Таким образом, комментарии не могут быть встроены, или это будет боль в заднице .

Так что очень мало случаев, когда мне нужно использовать встроенные объекты.

Вопрос в том, почему я должен использовать встроенные объекты даже в тех редких случаях, каковы преимущества встраивания?

1 Ответ

5 голосов
/ 11 сентября 2011

Встроенные объекты - это большое большое преимущество любых баз данных nosql. Обычно встраивание = производительность чтения + масштабируемость. Давайте возьмем для примера ТАК. Вы можете встроить вопрос / ответить на комментарии в вопросе, ответить на документ. А это значит, что вам не нужно присоединяться к комментариям, когда вам нужно отобразить ответы / вопросы. Если вам не нужно присоединяться - вы можете перенести коллекцию на отдельный компьютер, чтобы ускорить ваше приложение. В реляционной базе данных подобъекты обычно становятся отдельной таблицей (кроме денормализации). И в моей практике очень много случаев, когда мне нужно встраивать документы.

Но не для всех случаев, в которых хорошо подходит , вы правы насчет «боли в заднице» с вялостью в некоторых ситуациях. Вам не нужно встраивать все! В вашем случае просто создайте отдельную коллекцию для комментариев или ..

В мире nosql есть еще одна хорошо известная концепция: денормализация .

Мне нужно показать последние комментарии в списке обновлений

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

Мне нужно показать комментарии для current_user

Хорошо, добавьте комментарии пользователя в объекты пользователя.

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

Надеюсь, мой ответ даст вам несколько идей.

...