我正在尝试开发一个专业的社交网络,我使用 mongodb 到数据库,我想问一下我是否不会对数据库有问题,关于文档的大小。知道我们计划在社交网络中拥有大量用户。我希望我能从你那里得到有用的反馈。
2 回答
“大量用户”有些模糊。粗略估计会有所帮助。无论如何,MongoDB 中的文档大小限制为 16MB,看起来足以存储用户的个人资料详细信息。但是,在您的“网络”用例中,您可能计划保留追随者/朋友。是否将它们存储在与 User-profile 文档相同的文档中,这本身就是一个不同的问题。您可能想查看这些:
对于最有效地查询用户关注者/关注者,什么是好的 MongoDB 文档结构?
http://www.10gen.com/events/common-mongodb-use-cases
http://docs.mongodb.org/manual/use-cases/
http://nosql.mypopescu.com/post/316345119/mongodb -用例
您可能会遇到的一个问题是 MongoDB 为每个文档中的每个字段存储字段名称的文本。因此,如果您有一个名为“名称”或“地址”的字段,您想要一组文档,那么文本将出现在每个文档中,占用空间。这与具有模式的关系数据库不同,其中列的名称只存储一次。
几年前,我参与了一个项目,工程师在模拟数百万用户时对他们的数据集大小感到有点惊讶,因为他们没有考虑到这一点。他们优化了数据的大小(即“loc1”而不是“Location 1”),但对字段名称没有做同样的事情。当习惯于 RDBM 开发的开发人员对 NoSQL 解决方案做出假设时,就会出现问题,他们只计算数据的大小,而不是字段名加字段值。
他们很高兴在上线之前的测试中发现了这一点,否则他们将不得不迁移每个实时文档才能实现他们想要的更改。
这没什么大不了的,当然也不是不使用 MongoDB 的理由(少架构并将每个文档视为一个独特的项目毕竟是一个特性,而不是错误或设计缺陷)。只是要记住的事情。