【问题标题】:MongoDB Best-practice structureMongoDB最佳实践结构
【发布时间】:2014-08-27 08:22:46
【问题描述】:

我希望汇总 3 个不同级别的网站统计信息:

  • 每天的统计数据
  • 每个广告系列的统计数据
  • 每个广告系列的每个来源的统计信息

在 Mongo 上,建议(在性能方面)存储需要在以下问题中检索的数据:

{
    "somedate": {
        "324": {
            "count": 456,
            "subcampaigns": {
                "fff": {
                    "count": 45,
                    "sources": {
                        "s1": {
                            "count": 4
                        },
                        "s2": {
                            "count": 41
                        }
                    }
                }
            }
        }
    }
}

预计每天大约有 100 万,“来源”> 10K 存储在其他集合或子json中会更好吗? 有大小限制吗?

谢谢

【问题讨论】:

  • 没有“正确”的方式来做这样的事情。应该做什么是由几个因素决定的。仅举几例:您访问数据的主要方式是什么?实例如何明智地扩展 RAM?有多少应用服务器将访问数据?读和写的比例是多少?有多少个指数?条目会在一段时间后过期还是手动删除?聚合多久运行一次?这些问题只是为了确定最佳数据建模和随后的数据库设置而需要回答的几个问题。您需要为此提供咨询。

标签: mongodb performance data-structures database


【解决方案1】:

当您想在不写入磁盘的情况下检索结果时,有 16MB 的限制。 允许在聚合时使用磁盘当然会减慢它,但如果你想保存结果以便之后能够请求它,将结果写入集合显然是最好的选择。

顺便说一句,如果您想在后台 map/reduce 中启动您的请求,这可能是一个最佳解决方案,因为它使用的内存更少,并且与它的收益系统一起工作非常透明。如果您想在不花费巨额成本的情况下更新数据,您甚至可以利用增量映射减少 (http://docs.mongodb.org/manual/tutorial/perform-incremental-map-reduce/)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2016-09-21
    • 2011-12-08
    相关资源
    最近更新 更多