优化读取速度时的索引与标准化

时间:2013-07-18 00:46:04

标签: mongodb database-performance

与同事进行架构讨论,我们需要找到答案。给定一组数百万个数据点:

data =
[{
    "v" : 1.44,
    "tags" : {
        "account" : {
            "v" : "1055",
            "name" : "Circle K"
        }
        "region" : "IL-East"
    }
}, {
    "v" : 2.25,
    "tags" : {
        "account" : {
            "v" : "1055",
            "name" : "Circle K"
        }
        "region" : "IL-West"
    }
}]

并且我们需要查询标签集合中的字段(例如,其中account.name ==“Circle K”),将帐户字段规范化为此会有任何速度优势:

accounts =
[{
    _id : 507f1f77bcf86cd799439011,
    v: "1055",
    name : "Circle K"
}]

data =
[{
    "v" : 1.44,
    "tags" : {
        "account" : 507f1f77bcf86cd799439011
        "region" : "IL-East"
    }
}, {
    "v" : 2.25,
    "tags" : {
        "account" : 507f1f77bcf86cd799439011
        "region" : "IL-West"
    }
}]

我怀疑我必须为此构建2个数据库,然后看看速度是多少。问题是,mongo更好地查询BSON ID和字符串吗?有问题的数据库将是1:10写入与读取。

1 个答案:

答案 0 :(得分:1)

这里最重要的是确保你的工作集有足够的RAM。这包括“tags.account.name”索引和预期查询结果集的空间。

关键尺寸。你在上面使用ObjectID-as-string,你不应该这样做。保留真正的ObjectID,因为它们的大小相当小。如果你真的有很多小文档,那么你甚至可以考虑缩短你的字段名称。