Dynamodb - 查询列表是否包含

时间:2017-04-17 05:46:41

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

我对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仅对最简单的查询有用。希望我能错过一些东西。

1 个答案:

答案 0 :(得分:1)

在MongoDB中,您有多键索引,但在DynamoDB中没有。

我认为你需要像在关系数据库中那样解决它:创建一个多对多关系表,其中tag为hash键,entry id为sort键。并找到一些方法来保持您的关系表与您的条目表同步。