与同事进行架构讨论,我们需要找到答案。给定一组数百万个数据点:
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写入与读取。
答案 0 :(得分:1)
这里最重要的是确保你的工作集有足够的RAM。这包括“tags.account.name”索引和预期查询结果集的空间。
关键尺寸。你在上面使用ObjectID-as-string,你不应该这样做。保留真正的ObjectID,因为它们的大小相当小。如果你真的有很多小文档,那么你甚至可以考虑缩短你的字段名称。