在MongoDB中创建文档的最佳方式是什么?
我使用PHP和MySQL作为社交网络工作系统
我有MySQL表名为member_feed ,在这个表中我保存每个成员的提要,我的表结构是:
|member_feed_id | member_id | content_id | activity_id |
在这张表中我有超过1.2亿的记录 ,并且每个成员都有记录。
我目前正在从MySQL迁移到MongoDB,而我是MongoDB的新成员。 所以我需要将此表转换为MongoDB中的 集合 。 我认为要为member_feed表构建我的集合 ,如下所示:
1-从member_feed表中的每一行作为文档 ,如:
{ "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-一个文档的所有成员供稿,该文档具有该成员的成员标识和所有供稿
{
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中的文档获取所有id ,作为member_id的$contentIdsFromMongo
2-在MySQL中运行查询以获取类似的内容
select * from content where content_id in($contentIdsFromMongo);
和$ contentIdsFromMongo我有10000个ID ,所以这会影响到MySQL的性能。
我在另一台服务器上有服务器上的mongoDB和MySQL
并且在每一秒中系统为每个成员插入大量记录,所以我需要文档能够执行所有操作,如(插入,更新,选择,...)
为每个成员创建集合中的文档的最佳方式是什么,并且这种方式对于使用mongoDB是正确的还是错误的
谢谢。
文档商店数据建模的两个主要考虑因素:
您提供了有关数据如何增长的信息。 就在这个基础上,我会建议选项#1。
{ "member_id: 1" , "content_id: 10" , "activity_id: 1" }
但是,了解您将执行哪种查询以及您打算如何在您的应用程序中使用这些数据也很重要。
其他选项可能是:
所以总之,为了提出一个最佳模型,回答上面的问题2也很重要。
PS:在你提出的问题中,选项2肯定听起来像是一个糟糕的主意,因为你描述的数据将如何增长。
您也可以参考此链接获取其他一些指导:http://docs.mongodb.org/manual/core/data-modeling/
链接地址: http://www.djcxy.com/p/15645.html上一篇: what is the best way to create document inside collection in MongoDB