【发布时间】:2017-04-17 05:46:41
【问题描述】:
我对 NoSQL 还很陌生。使用 Python/Boto,但这是一个相当普遍的问题。目前正在尝试将项目从 MongoDB 切换到 DynamoDB 并寻求有关 DynamoDB 的一些建议,它能够查询列表是否包含某个字符串。我一直在搜索过去一天左右,但我开始担心它没有这个设施,除了使用扫描非常慢,考虑到数据库将在更新时查询数千次。类似未答复的question here
我知道主键只能是 N、S 或 B,而不是像字符串集 (SS) 这样有用的东西。
数据相当简单,看起来像这样。我正在寻找基于标签属性查询数据库的最有效方法,以查找包含“string1”或“string2”的条目。同样,我不想使用扫描,但如果 dynamodb 有最佳实践,我愿意考虑数据结构的规范化。
{
id: <some number used as a primary key>,
tags: ['string1', 'string2'...],
data: {some JSON object}
}
根据我的阅读,即使使用全局二级索引,这似乎也不可能,这很奇怪,因为这会使 dynamodb 仅对最简单的查询有用。希望我错过了什么。
【问题讨论】:
-
你是说你只有标签数据来查询数据,你也没有分区键?
-
id 键将是分区键,并且只是某种自动增量。我相信 Dynamodb 只允许两个主键,一个哈希和范围(这是可选的)。我可以包含一个辅助字符串键,但除非它可以是一个列表或其中包含可变数量的标签,否则它对查询没有用处。对于上下文,JSON 对象是社交媒体更新的集合,标签是与之相关的关键字。
标签: python amazon-web-services amazon-dynamodb boto3 nosql