gpt4 book ai didi

MongoDB : multiple specific collections or one "store-it-all" collection for performance/indexing

转载 作者:可可西里 更新时间:2023-11-01 09:13:18 26 4
gpt4 key购买 nike

我正在记录用户在我们网站上进行的不同操作。每个 Action 都可以是不同的类型:评论、搜索查询、页面 View 、投票等……这些类型中的每一个都有自己的模式和公共(public)信息。例如:

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...

基本上,在 OOP 或 RDBMS 中,我会设计一个 Action 类/表和一组继承类/表(评论、搜索、投票)。

由于 MongoDb 没有模式,我倾向于设置一个唯一的集合(“Actions”),我将在其中存储这些对象而不是多个集合(集合 Actions + 集合 Comments,带有指向其父 Action 的链接键等。 ..).

我的问题是:如果我尝试按特定列搜索,性能/响应时间如何?

据我了解索引最佳实践,如果我想要“每个用户搜索 mongodb”,我会索引列“类型”+“查询”。但它不会涉及整个数据集,只涉及“搜索”类型的数据。

MongoDb 引擎会扫描整个表还是只关注具有此特定模式的数据?

最佳答案

如果您创建 sparse indexes mongo 将忽略任何没有键的行。尽管稀疏索引存在特定限制 they can only index one field .

但是,如果您只打算使用公共(public)字段进行查询,那么绝对没有理由不使用单个集合。

即如果用户+类型(或日期+用户+类型)上的索引将满足您所有的查询 需求 - 没有理由创建多个集合

提示:对日期使用日期对象,在适当的地方使用对象 ID 而不是名称。

关于MongoDB : multiple specific collections or one "store-it-all" collection for performance/indexing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com