Документно-ориентированная база данных (MongoDB?) И выставление счетов / порядок? - PullRequest
0 голосов
/ 05 февраля 2011

Новое в документно-ориентированных концепциях баз данных и несколько вопросов высокого уровня, связанных с заказами и обработкой заказов.

Как получить заказ в этом мире? Будет ли заказ новым документом в коллекции Orders?Будет ли order_item относиться к product, указанному в другом документе?Или предполагается, что order_item будет скопировано и вставлено в документ заказа, и, таким образом, возможно, будет сложно сообщить общую сумму product, проданную в течение определенного времени?

Как можно обойти отсутствие транзакций и сохранить целостность

Извините, очень ново для меня, хотя и хочу понять ... Звучит очень привлекательно заключать в капсулу все эти«вещи» для продажи в виде «объектов» и перемещения их между серверами и клиентами и т. д., если это действительно возможно.Просто нужна помощь, чтобы понять, что нужно делать, а чего нельзя.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2011

Как захватить заказ в этом мире?Будет ли заказ просто новым документом в коллекции заказов?

Да.Так работают эти базы данных.

Будет ли 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.

Непонятно, что вы подразумеваете под отсутствием транзакций.

1 голос
/ 05 февраля 2011

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

Вот ссылка на презентацию разработки центрической схемы MongoDB. Это может помочь вам понять некоторые из этих компромиссов и вариантов дизайна.

http://www.scribd.com/doc/47326395/MongoBoulder-Schema-Design

...