Disclaimer: This is a question derived from this one.What do you think about the following example of use case?I have a table containing orders.These orders has a lot of related information needed by my current queries (think about the products; the buyer information; the region, country and state of the sale point; and so on)In order to think with a de-normalized approach, I don't have to put identifiers of these related items in my main orders collection. Instead, I have to repeat all the information for each order (ie: I will repeat the buyer's name, surname, etc. for each of its orders).Assuming the previous premise, I'm committing to maintain all the data related to an order without a lot of updates (because if I modify the buyer's name, I'll have to iterate through all orders updating the ones made by the same buyer, and as MongoDB blocks at a document level on updates, I would be blocking the entire order at the update moment).This raises the following questions:Do I have to replicate all the products' related data? (ie: category, maker and optional attributes like color, size)What if a new feature is requested and I've to make a lot of queries with the products as the entry point of the query? (ie: reports showing the products' sales performance grouping by region, country, or whatever)Is it fair enough to apply the $unwind operation to my orders original collection? (What about the performance?)I should have to do another collection with these queries in mind and replicate again all the products' information (and their orders)?Wouldn't be better to store a product_id in the original orders collection in order to be more tolerable to requirements change? (What about emulating JOINs?)The optimal approach would be a mixed solution with a RDBMS system like MySQL in order to retrieve the complete data?I mean: store products, users, and location identifiers in the orders collection and have  queries in MySQL like getAllUsersDataByIds in which I would perform a SELECT * FROM users WHERE user_id IN ( :identifiers_retrieved_from_the_mongodb_query )
MongoDB: Replicate data in documents vs. join
sql;nosql;mongodb;rdbms