【问题标题】:Will I have problems using MongoDb regarding the size of documents?我在使用 MongoDb 时会遇到关于文档大小的问题吗?
【发布时间】:2012-08-07 18:05:03
【问题描述】:

我正在尝试开发一个专业的社交网络,并且我使用 mongodb 到数据库,我想问一下我的数据库是否会出现问题,关于文档的大小。知道我们计划在社交网络中拥有大量用户。我希望我能从你那里得到有用的反馈。

【问题讨论】:

标签: zend-framework mongodb


【解决方案1】:

“大量用户”有些模糊。粗略估计会有所帮助。无论如何,MongoDB 中的文档大小限制为 16MB,看起来足以存储用户的个人资料详细信息。但是,在您的“网络”用例中,您可能计划保留追随者/朋友。是否将它们存储在与 User-profile 文档相同的文档中,这本身就是一个不同的问题。你可能想看看这些:

What is a good MongoDB document structure for most efficient querying of user followers/followees?
http://www.10gen.com/events/common-mongodb-use-cases
http://docs.mongodb.org/manual/use-cases/
http://nosql.mypopescu.com/post/316345119/mongodb-usecases

【讨论】:

    【解决方案2】:

    您可能遇到的一个问题是 MongoDB 存储每个文档中每个字段的字段名称文本。因此,如果您有一个名为“名称”或“地址”的字段,您想要一组文档,那么文本将出现在每个文档中,占用空间。这与具有模式的关系数据库不同,其中列的名称只存储一次。

    几年前,我参与了一个项目,工程师在模拟数百万用户时对他们的数据集大小感到有些惊讶,因为他们没有考虑到这一点。他们优化了数据的大小(即“loc1”而不是“Location 1”),但对字段名称没有做同样的事情。当习惯于 RDBM 开发的开发人员对 NoSQL 解决方案做出假设时,问题是他们只计算了数据的大小,而不是字段名加字段值。

    他们很高兴在上线之前的测试中发现了这一点,否则他们将不得不迁移每个实时文档才能实现他们想要的更改。

    这不是什么大不了的事,当然也不是不使用 MongoDB 的理由(少架构并将每个文档视为一个独特的项目毕竟是一个特性,而不是错误或设计缺陷)。只是要记住的事情。

    【讨论】:

    • 数据存储是一个考虑因素,但在积极优化列名以占用更少的字符之前,值得考虑实际成本可能是多少。例如,对于AWS,每 Gb(或 Tb)的成本相对于可读性的折衷仍然是相当合理的(即,如果您必须弄清楚 l1 实际上是 location1 的简写,并在您的某处进行此翻译应用层)。
    • 诚然,正如他们所说,过早优化是万恶之源。我们优化数据仅仅是因为我们有大量非常大的文档,所以对我们来说,在应用层中长字段名称和翻译之间的权衡是值得的,但情况可能并非总是如此。除非有正当理由,否则当然不建议缩短数据或字段名称。
    猜你喜欢
    • 2018-08-08
    • 2014-01-31
    • 2018-02-08
    • 2022-12-07
    • 2017-07-26
    • 1970-01-01
    • 2022-11-22
    • 2018-09-03
    • 2018-02-13
    相关资源
    最近更新 更多