我正在记录用户在我们网站上所做的不同操作。每个动作可以是不同的类型:评论、搜索查询、页面查看、投票等......这些类型中的每一种都有自己的架构和公共信息。例如 :
comment : {"_id":(mongoId), "type":"comment", "date":4/7/2012,
"user":"Franck", "text":"This is a sample comment"}
search : {"_id":(mongoId), "type":"search", "date":4/6/2012,
"user":"Franck", "query":"mongodb"} etc...
Run Code Online (Sandbox Code Playgroud)
基本上,在 OOP 或 RDBMS 中,我会设计一个 Action 类/表和一组继承的类/表(评论、搜索、投票)。
由于 MongoDb 的模式较少,我倾向于设置一个唯一的集合(“操作”),我将在其中存储这些对象而不是多个集合(集合操作 + 带有指向其父操作的链接键的集合注释等...) .
我的问题是:如果我尝试按特定列进行搜索,性能/响应时间会怎样?
据我了解索引最佳实践,如果我希望“每个用户都在搜索 mongodb”,我会索引“类型”+“查询”列。但它不会涉及整个数据集,只涉及“搜索”类型的数据。
MongoDb 引擎会扫描整个表还是只关注具有此特定模式的数据?
如果您创建稀疏索引mongo 将忽略任何没有键的行。虽然稀疏索引有一个特定的限制,它们只能索引一个字段。
但是,如果您只想使用公共字段进行查询,则绝对没有理由不使用单个集合。
即如果用户+类型(或日期+用户+类型)上的索引将满足您所有的查询需求 - 没有理由创建多个集合
提示:使用日期对象作为日期,在适当的地方使用对象 ID 而不是名称。
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |