gpt4 book ai didi

php - 在 MongoDB 中的集合内创建文档的最佳方法是什么

转载 作者:IT老高 更新时间:2023-10-28 13:23:01 26 4
gpt4 key购买 nike

我将 PHPMySQL 用于社交网络系统

我有一个名为 member_feedMySQL 表,在这个表中我保存了每个成员的提要,我的表结构是:

    |member_feed_id | member_id | content_id | activity_id |

在这张表中我有超过1.2亿条记录,每个成员都有记录。

我目前正在从 MySQL 迁移到 MongoDB,而且我是 MongoDB 的新手。所以我需要在 MongoDB 中将此 table 转换为 collection。 我想为 member_feed 表构建我的集合,例如:

1- member_feed 表中的每一行作为 document ,例如:

{  "member_id: 1" , "content_id: 10" , "activity_id: 1" },
{ "member_id: 1" , "content_id: 11" , "activity_id: 2" },
{ "member_id: 1" , "content_id: 12" , "activity_id: 3" },
{ "member_id: 2" , "content_id: 9" , "activity_id: 4" },
{ "member_id: 2" , "content_id: 11" , "activity_id: 5" },
{ "member_id: 2" , "content_id: 14" , "activity_id: 6" }

所以这个集合将有 1.2 亿条记录

2- 一个 文档 的所有成员供稿(具有成员 ID 和该成员的所有供稿)

{
member_id: '1',
feeds: [
{ content_id: '10', 'activity_id' : 1 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '12', 'activity_id' : 3 }
]

member_id: '2',
feeds: [
{ content_id: '9', 'activity_id' : 4 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '14', 'activity_id' : 6 }
]
}

所以当我需要在他的仪表板上查看用户提要时,我会这样做:

1-从 mongoDB 中的文档 中获取所有 ids 作为 $contentIdsFromMongo by member_id

2- 在 MySQL 中运行查询以获取类似的内容

select * from content where content_id in($contentIdsFromMongo); 

$contentIdsFromMongo 我应该有 10000 ids ,所以这对 MySQL 性能有影响。

我在服务器上有 mongoDB,在另一台服务器上有 MySQL

并且系统每秒都会为每个成员插入大量记录,所以我需要文档能够执行所有操作,例如 (insert, update, select,..)

collection中为每个成员创建文档的最佳方式是什么,这种方式对于使用mongoDB是对还是错

谢谢。

最佳答案

文档存储数据建模的两个主要考虑因素:

  1. 数据将如何随时间增长和变化,以及
  2. 您的应用程序将执行的查询类型。

您提供了有关数据预计如何增长的信息。仅在此基础上,我建议选项 #1。

{  "member_id: 1" , "content_id: 10" , "activity_id: 1" }

但是,了解您将执行什么样的查询以及您打算如何在应用程序中使用这些数据也很重要。

其他可能的选项是:

  • 每个成员一个文档,每个成员包含一组提要
  • 按内容或事件 ID 对文档进行分组,如果这是您的应用程序查询数据的方式。

所以总而言之,要提出一个最优模型,回答上面的问题 2 也很重要。

PS:考虑到您描述的数据将如何增长,您问题中的选项 2 听起来绝对是个坏主意。

您还可以引用此链接了解更多指南:http://docs.mongodb.org/manual/core/data-modeling/

关于php - 在 MongoDB 中的集合内创建文档的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533687/

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