2013-12-10 64 views
0

我正在开发一个存储表单内容的应用程序。每个表单可能有数百万条记录。MongoDB数据库的优化设计

我的后端是.NET/MongoDB。我目前已经实现了以下设计,但我不确定它是否是这种数量内容的最有效解决方案。

[{ 
    formId: '12344', 
    records: [ { id: '12444543', customerName: 'Panda Express', ... } ] 
}, ...] 

的顶级“形式”的数量不会在大多数情况下超过20记录每种形式在1000和一百万之间。在大多数情况下,每个“记录”中的属性数量不会超过100个。

这是在mongo中做到这一点的最有效方法吗?

回答

1

对我来说这不是最好的设计。如果文档增长速度很快,将记录存储在单个文档中并不是一个好主意。由于最大BSON文档大小为16MB,因此当您拥有数百万条记录时可能会导致问题。

相反,您可以按如下方式单独存储记录。

记录集:

id: '12444543', 
formId : '12345', 
customerName: 'Panda Express', 
... 
+0

那我是如何开始的,但认为对格式ID过滤可能会更好。如果这是最佳的,我也赞成这个简单! – amcdnl

+0

既然你说你最多有20个表单,第二个选项可能是将每个表单的记录存储在一个单独的集合中。这会让你免受formId的过滤。 –

+0

有趣...所以每个表单的记录都有独立的集合... – amcdnl