我对 NoSQL 还很陌生。使用 Python/Boto 但这是一个相当普遍的问题。目前正在尝试将项目从 MongoDB 切换到 DynamoDB,并寻求有关 DynamoDB 及其查询列表是否包含特定字符串的能力的一些建议。我过去一天左右一直在搜索,但我开始担心它没有这种设施,除了使用扫描之外,考虑到数据库将在更新时查询数千次,扫描速度非常慢。类似未答复question here
我知道主键只能是 N、S 或 B,而不是像字符串集 (SS) 这样有用的东西。
数据相当简单,看起来像这样。我正在寻找最有效的方法来根据包含“string1”或“string2”的条目的标签属性查询数据库。再说一遍,我不想使用 scan,但如果 dynamodb 中有最佳实践,我愿意考虑数据结构的标准化。
{
id: <some number used as a primary key>,
tags: ['string1', 'string2'...],
data: {some JSON object}
}
根据我所读到的内容,即使使用全局二级索引,这似乎也不可能,这很奇怪,因为这将使 dynamodb 仅对最简单的查询有用。希望我错过了一些东西。
最佳答案
在 MongoDB 中,您有多键索引,但在 DynamoDB 中没有。
我认为您需要像在关系数据库中一样解决它:创建一个多对多关系表,其中标签作为散列键,条目 id 作为排序键。并找到某种方法使关系表与条目表保持同步。
关于python - Dynamodb - 查询列表是否包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43445829/