【发布时间】:2013-05-06 22:48:35
【问题描述】:
有一些看起来像这样的数据:
widget:
{
categories: ['hair', 'nails', 'dress']
colors: ['red', 'white']
}
数据需要这样查询:
SELECT * FROM widget_table WHERE categories == 'hair' AND colors == 'red'
希望将此数据放入 MongoDB 分片集群中。但是,似乎理想的分片键不会是列表字段。在这种情况下,这是不可能的,因为所有字段都是列表字段。
- 是否可以使用列表字段,例如字段
categories作为MongoDB中的分片键? - 如果是,我应该注意/注意哪些事项?
非常感谢!
【问题讨论】:
-
分片键不能是多键,我不确定这是否会很快改变
-
那么这个数据集是不是用MongoDB不可能分片?
-
可以对其进行分片,但不能在您列出的两个字段中的任何一个上进行分片,因此要么 _id 要么更改您的架构。无论如何,这对我来说似乎是一个高度可疑的架构
-
@Asya Kamsky - 这可以在列表字段之一上进行分片。该模式不适合分片。但是用例需要它。我意识到我提供的示例对象看起来微不足道,但它被简化以删除不必要的细节。我们正在处理的数据在数千万个对象范围内,需要使用我提供的每分钟数千次的查询进行查询。
-
这就是我说“或改变你的模式”的原因——这就是你在回答中似乎所做的。这使您的问题是“如何将架构更改为在类别上进行分片”,而不是“如何在数组字段上进行分片”。
标签: mongodb inner-join sharding