MongoDB - 正确使用集合?

时间:2010-04-10 22:17:41

标签: mysql collections mongodb partitioning

在Mongo,我的理解是你可以拥有数据库和集合。我正在开发一个社交类型的应用程序,该应用程序将包含博客和评论(以及其他内容),之前使用的是MySQL和非常繁重的分区,以试图限制可能的并发问题。

使用MySQL,我将所有用户数据填入带有多个表的_user数据库,以进一步对数据进行分区(博客,页面等)。

我对Mongo的直接反应是创建一个'用户'数据库,每个用户有一个集合。通过这种方式,用户'zach'博客条目将进入带有相关注释的'zach'集合,并且成为同一集合中的子对象。基本上就像在MySQL中为每个用户动态创建一个表,但显然没有可能强加的复杂性和限制。

当然,因为我还没有真正使用过Mongo,因为我无法衡量这个想法的质量(以及它可能带来的潜在问题)。

我希望用户数据的处理方式很像* nix环境中的用户目录,其中用户创建/非共享(大部分)被放入一个地方(目前使用MySQL,如上所述的appname_users) )。

大多数用户数据将特定于用户页面。在所有站点用户(可搜索的用户配置文件)中查询的一些用户数据当前保存在单独的数据库/表中,我希望这样的事情可以放入appname_system数据库并分解为集合和/或特定于应用程序数据库(appname_profiles)。

无论如何,由于目前可用的文档有点薄,我的经验非常有限,我想我可能会从对系统有更好理解的人那里找到一些指导。

从好的方面来说,我真的已经尝试将MySQL视为无架构的文档存储,而使用Mongo这样做似乎更直观/理智/理性,所以我真的很期待入门。< / p>

谢谢, 扎克

1 个答案:

答案 0 :(得分:2)

我有同样的应用程序。

需要考虑的一些事项:您可以在集合之间跨数据库进行查询。 所以最好是拥有一个包含所有数据的数据库,然后是每个Object的集合。

然后每个文档可以包含任何类型和数量的字段。

我试图避免嵌入数组b / c我无法正确查询我的对象(它工作正常,但我的系统架构是为此用途而设计的)

数据库可以自动在多个服务器之间共享,因此空间不是问题(如果您有多个服务器)