Как захватить заказ в этом мире?Будет ли заказ просто новым документом в коллекции заказов?
Да.Так работают эти базы данных.
Будет ли order_item относиться к продукту, указанному в другом документе?
Может.Зависит от того, что вы делаете.
Или предполагается, что order_item будет скопирован и вставлен в документ заказа
Также возможно.Это хорошо работает для исторического анализа и хранилищ данных.
и, следовательно, возможно, сложно отчитаться об общем объеме проданной продукции за определенное время?
Всегда сложно отчитаться об итогахТовар продан в течение долгого времени.
Сегодня продукт "23SKIDOO" представляет собой 23-литровый открытый клапан framistat с двойными виджетами.
В прошлом году, до отзыва, тот же продукт представлял собой 23-литровый закрытый клапанный фрамистат с одним виджетом.
В прошлом году тот же продукт был на самом деле 22,5 л.
Это «тот же» продукт?Маркетинг называет их всех "23SKIDOO".Но есть различия.
Одна таблица Продуктов не решает это правильно.Затем люди изобретают линейки продуктов и семейства продуктов, чтобы они могли представить продукты «23SKIDOO-B» и «23SKIDOO-PLUS», которые являются частью семейства «23SKIDOO».
Линии продуктов и семейства продуктови другие более причудливые группировки - это обходные пути и хаки, которые волшебным образом заставляют не связанные продукты сообщать вместе и предоставлять «общий продукт, проданный со временем», даже если продукты явно отличаются.
Копирование продукта в заказ (хотя это кажетсярасточительство) может сохранить большую историческую верность, чем многие из часто используемых обходных путей.
Как можно обойти отсутствие транзакций и сохранить целостность?
MongoDB имеет блокировки.http://www.mongodb.org/display/DOCS/How+does+concurrency+work.
Непонятно, что вы подразумеваете под отсутствием транзакций.