2012-02-05 21 views
1

我对mongodb相当陌生。我正在创建一个网络应用程序,允许插入和搜索多种产品,如笔记本电脑,硬盘驱动器,网络摄像头...我的问题是我应该把他们全部放在同一个集合,如“电脑”,或者我应该把每个产品他们自己的集合像“笔记本电脑”,“硬盘驱动器”,“网络摄像头”,以便用户搜索和插入产品时会更快?我应该在mongodb中创建一个还是多个集合以便更快地插入和搜索?

非常感谢

回答

2

一般来说,你应该按“型”的事情你存储使用一个集合。这听起来像你上面给出的所有例子都属于产品“类型”,应该在同一个集合中。同一个集合中的文档不需要全部具有相同的字段,但对于产品,您可能在所有文档中有几个相同的字段:名称,价格,制造商等;每个文件“子类型”可能有几个共同的字段,如硬盘可能都有RPM,存储容量,形状因子,接口(SATA2/3,IDE等)。

这个建议的基本原理是MongoDB查询一次只能在一个集合上执行。如果您想要显示涵盖您拥有的不同类别产品的搜索结果,那么这对于一个集合来说很简单,但对于几个(而且性能较低)则更加困难。

就查询性能而言,一定要在搜索的字段上创建索引。如果您允许按产品名称或制造商进行搜索,则您可以在名称上找到索引,并在制造商处找到另一个索引。您的确切索引取决于您在文档中的字段。

另一方面,插入速度越快,索引越少(因为每次索引可能需要在每次保存或更新文档时更新),所以重要的是不要创建比您更多的索引实际上需要。

有关这些主题的更多信息,请参阅schema designindexes上的MongoDB文档以及10gen演讲者和MongoDB用户的presentations on 10gen.com

1

我建议先从一个集合开始。搜索一个集合而不是搜集每个产品要简单得多。而且,如果您对收藏品的质疑变得缓慢,您可以开始思考如何加速收藏。

Mongodb相当快indexes它的设计是可扩展的,所以一旦你需要扩展你的数据库 - replica setsauto sharing就位。

相关问题