Performance mongodb中具有三层文档层次结构的数据模型
在我的项目中,我们有一个典型的客户订阅场景,在这个场景中,我们必须在mongo中存储详细信息。我们已经确定了此场景的以下数据模型: i、 e.一个客户可以有多个订阅,每个订阅可以有多个激活码Performance mongodb中具有三层文档层次结构的数据模型,performance,mongodb,data-modeling,Performance,Mongodb,Data Modeling,在我的项目中,我们有一个典型的客户订阅场景,在这个场景中,我们必须在mongo中存储详细信息。我们已经确定了此场景的以下数据模型: i、 e.一个客户可以有多个订阅,每个订阅可以有多个激活码 { "CustomerCompany" : "abc", "CustomerEmail" : "abc@abc.com", "CustomerID" : "124598", "CustomerName" : "abc xyz", "CustomerType" : "Indivisual"
{
"CustomerCompany" : "abc",
"CustomerEmail" : "abc@abc.com",
"CustomerID" : "124598",
"CustomerName" : "abc xyz",
"CustomerType" : "Indivisual",
"IsOurCustomer" : true,
"Subscriptions" : [{
"ContentDeliveryFormat" : "XML",
"ContentDeliverySchedule" : "Daily",
"ContentProviderName" : "asdf",
"ContentType" : "CFR",
"ContentCategory" : "CFR",
"SubscriptionExpiryDate" : "11/19/2014 15:22:39:800 IST",
"SubscriptionID" : "111",
"ActivationCount" : 1,
"Activations" : [{
"ActivationCode" : "35f110b8-1b59-44c5-9874-adcc9d008898",
"ActivationCodeGenDate" : "05/23/2014 15:22:59:997 IST",
"ActivationExpiryDate" : "05/28/2014 15:22:59:997 IST",
"ActivationDate" : null,
"ActivationStatus" : "Unused"
}],
"SubscriptionStatus" : "Subscribed"
}],
"_id" : ObjectId("537f1a7ce96e0b34e98b8de7")
}
因为我是mongodb的新手,对此的详细搜索无法说服我在这里发布我的查询
我有以下两个问题:
- 建模正确的wrt是mongodb要遵循的最佳实践吗
- 如果我遵循这种方法,那么使用当前的数据模型 搜索输入为最差结果激活码的文档 O(n3)的壳效率。我认为如果系统规模扩大,这 这将是一个巨大的禁忌
预先感谢
< P>你需要考虑以下几点。文档一个接一个地写入磁盘。当您稍后向数组中添加更多内容时,文档会增长,并且可能需要移动以适应数据添加。另外,数组值很可能会被索引,这意味着所有这些索引都需要随着文档的移动而更新。最后,对于你的应用程序,当你加载客户数据时,你真的需要加载所有订阅和激活密钥吗?如果答案是否定的,那么你应该考虑我所描述的整体画面,并可能将其保持在单独的集合中。文档越大,放入RAM的文档就越少。底线是,一旦文档最初创建,您希望文档内有多少动态增长