Документные базы: когда встраивать документ, а когда ссылаться?
В документной модели схема проектируется от запросов, а не от сущностей. Встраивают, когда данные читаются вместе с родителем, меняются вместе с ним и ограничены по размеру: адрес доставки внутри заказа, позиции заказа, настройки профиля. Ссылаются, когда данные переиспользуются несколькими родителями, растут неограниченно или живут своей жизнью: пользователь, каталог товаров, лента комментариев. Три ограничения задают границу. Первое — предел размера документа (в MongoDB 16 МБ), поэтому «встроить все комментарии» работает до первого популярного поста. Второе — атомарность на уровне одного документа: обновление двух документов требует транзакции, которая в распределённой конфигурации стоит заметно дороже. Третье — дублирование: встроенная копия данных не обновляется автоматически, и её либо нужно обновлять явно, либо смириться с расхождением. Практика: встраивание по умолчанию для отношений «один к немногим», ссылки для «один ко многим неограниченно».