2

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

使用 MySQL,我已将所有用户数据填充到具有多个表的 _user 数据库中,以进一步划分数据(博客、页面等)。

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

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

我希望用户数据被视为非常像 *nix 环境中的用户目录,其中用户创建/非共享(大部分)被放置在一个地方(目前使用 MySQL,即上面提到的 appname_users)。

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

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

从好的方面来说,我真的已经在尝试将 MySQL 视为无模式的文档存储,并且使用 Mongo 执行此操作似乎更加直观/理智/合理,所以我真的很期待开始。

谢谢,扎克

4

1 回答 1

2

我有同样的应用程序。

需要考虑的一些事情:您可以在集合之间而不是数据库之间交叉查询。所以最好有一个包含所有数据的数据库,然后为每个对象创建一个集合。

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

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

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

于 2010-04-12T08:49:37.487 回答