MongoDB索引与数组实现适用于我们的特定应用程序


MongoDB Indexing vs Array Implementation for our specific application

这是问题所在。我们正在与MongoDB-PHP合作。

在我们的应用程序中,我们有许多用户可以在其中发帖的用户组。目前,我们正在以数组格式在该组的文档中维护这些组的帖子 ID。因此,当我们需要抓取前 10 个帖子时,我们可以使用切片操作从数组中抓取它们。

例如:案例 1

收藏帖子://此收藏存储各个组的所有帖子

{  
     {"_id":"1","post_text":"....",...}  
     {"_id":"2","post_text":"....",...}  
}  `    
集合组

://此集合包含每个组的文档

{  
    {  
        "_id":"1"  
        "name":"Group ABC",  
        "post_ids":{"1","2"...."100"}      
        //1,2..100 represents MongoIDs of corresponding posts of this group  
        //so i can slice first 10 posts of this group when someone visits this page
    }  
}

'
与将这些帖子 ID 存储在组的文档中相反,如果我们对组 ID 使用索引并将其存储在帖子集合中。
例如:案例 2

收集帖子

{  
    {"_id":"1","group_id":"1","post_text":"....",...}  
    {"_id":"2","group_id":"2","post_text":"....",...}  
} 
另请注意,在案例 1 中,我们

不必应用任何排序操作,因为数组元素按顺序推送,而在案例 2 中,我们将不得不在查找操作后应用 sort(按时间戳标准),这将从内存中读取所有文档,然后对它们应用排序。

考虑到索引将存储在RAM中,谁的性能会更好?

如果这个问题不清楚,请告诉我。

执行一个查询(案例 #2)将比执行两个查询更快。 此外,使文档更大(例如,将新帖子附加到#1中的post_ids)是一个相当缓慢的操作。

相关文章: