0

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

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 个 db,然后看看速度如何。问题是,mongo 是否更擅长查询 BSON ID 与字符串?有问题的数据库将是大约 1:10 的写入与读取。

4

1 回答 1

1

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

至于密钥大小。您在上面使用 ObjectID-as-string,您不应该这样做。保留真正的 ObjectID,因为它们的大小要小得多。如果您真的有很多小文档,那么您甚至可能还想考虑缩短您的字段名称。

于 2013-07-18T08:11:47.133 回答