Php MongoDB—存储和读取数据的最佳方式
我有一个Mongo数据库 我有两个收藏:Php MongoDB—存储和读取数据的最佳方式,php,mongodb,database,Php,Mongodb,Database,我有一个Mongo数据库 我有两个收藏: 使用者 职位 用户发送帖子,但问题在这里。哪条路更好 仅在帖子后面存储用户id(帖子创建者) 在帖子后面存储用户信息,如(_id,name,username,…) 在第一种方法中,我们需要从集合用户获取用户信息 在第二种方法中,我们需要只在用户更新配置文件信息时更新用户发送的所有POST数据 哪个更好?在MongoDB中,将一个文档嵌入另一个文档是正常的。我认为第二种方法更好,因为: 1——您不必手动考虑关系,因此它更干净 2-通过选择第一种方式,您必
哪个更好?在MongoDB中,将一个文档嵌入另一个文档是正常的。我认为第二种方法更好,因为:
1——您不必手动考虑关系,因此它更干净
2-通过选择第一种方式,您必须添加一个或多个额外查询(性能问题)以找到应用程序的最佳方式,问问自己以下问题: a) 用户集合上写入(更新)查询的nr是高还是低?(可能很低) b) 收集后读取查询的nr是高还是低?(可能很高) c) (用户)数据一致性有多重要 非规范化是MongoDB中常用的方法。 如果写入的nr比读取的nr少,则通过嵌入数据对数据进行非规范化将产生更好的读取性能,但写入性能较慢,因为您需要在更多位置写入。需要注意的是,可能会出现数据不一致的情况,因为在mongodb中,只有在单个文档上写入时,写入才是原子的 通过选择解决方案#1,您对帖子的读取速度将变慢,因为这需要对用户集合进行其他读取查询。数据的一致性得到了保证,您还可以获得更大的灵活性 通过选择解决方案#2,您可以更快地阅读文章,因为所有内容都在那里,嵌入在一个查询中。但用户查询更新速度较慢。在这个解决方案中,数据的一致性并没有得到保证,但在某些应用程序中,当更新的不一致性可以稍后处理时,这可能不是一个大问题。 在这里,你可以只嵌入你需要的部分用户数据,而不是全部,比如只有用户名(和_id),如果你只需要用户名就可以在帖子上显示它 如果您有一个非常大的数据集,其中包含大量post,用户集合更新较少,post集合读取次数较多,并且用户数据可能包含可能发生的不一致性,这些不一致性并不重要,可以稍后修复,那么就性能而言,更好的解决方案是#2
一篇关于模式设计的有趣文章可以在中找到。阅读请求肯定比编辑请求多 所以,若使用第一种方法,则必须添加一些查询以从集合中读取数据,这样会降低读取性能
确保第二种方法更好。您应该尽量避免使用MongoDB中的关系
我建议您使用第二种方法。存储关系数据的最佳方法是将其存储在关系数据库中。@Federkun您的意思是第一种方法更好吗?因此您已经同意使用第一种方法。。在我看来,第一也是好的