python - Dynamodb - 查询列表是否包含

标签 python amazon-web-services amazon-dynamodb boto3 nosql

我对 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/

相关文章:

python - 如何使用 BeautifulSoup bs4 获取 HTML 标签的内部文本值?

python - SSL错误-Python3

postgresql - 一段时间后 AWS-EBS 性能下降

amazon-web-services - 媒体转换服务上的 AWS IAM 角色策略问题 [无法打开输入文件 [无法读取数据 : AssumeRole failed]]]

amazon-web-services - DynamoDb PutItem 与 UpdateItem 之间的区别?

ios - 我应该如何支持使用 DynamoDB 和 iOS 的离线模式?

python - 使用Hy宏生成Python代码

python - DataFrame 可以是 "reverse indexed"吗?

amazon-web-services - 获取使用 Ansible 创建的 AWS 实例的 IP 地址/属性

amazon-dynamodb - 如何使用无服务器框架为多个环境配置 DynamoDB ProvisionedThroughput