Amazon dynamodb NoSql和列表查询

Amazon dynamodb NoSql和列表查询,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,我有一个DynamoDB数据库,里面有大约100000个条目。 这些项目大多是一个平面,但它们确实包含一个类别列表 { "name": "Protine shaker", "categories": [ "Sport", "Kitchen" ]; } 我希望能够找到所有项目,例如,是一个类别的体育成员,但因为它是一个列表,我不能索引它。 因此,对于纯DyanmoDB解决方案,我唯一的选择是扫描整个表,如果经常这样做,这可能会很昂贵 我认为除了包含类别映射的Dyn

我有一个DynamoDB数据库,里面有大约100000个条目。 这些项目大多是一个平面,但它们确实包含一个类别列表

{
  "name": "Protine shaker",
  "categories": [
     "Sport",
     "Kitchen"
  ];
}
我希望能够找到所有项目,例如,是一个类别的体育成员,但因为它是一个列表,我不能索引它。 因此,对于纯DyanmoDB解决方案,我唯一的选择是扫描整个表,如果经常这样做,这可能会很昂贵

我认为除了包含类别映射的DynamoDB之外,我还可以有一个SQL数据库,或者有另一个DynamoDB,每个类别都有一个对象,其中包含该类别中的项目列表


使用DynamoDB时,此类问题的正常/常见解决方案是什么?我猜这一定是一个常见的问题。

您可以将DynamoDB与ElasticSearch集成,后者可以提供更多选项来查询DynamoDB不支持的现成数据。只需在ElasticSearch中创建索引并在那里执行查询

从何处开始:

拥有一个SQL数据库不是一个好的解决方案,因为您必须自己在两个不同的数据存储中保持信息同步。看起来像是维修时的手术疼痛

每个类别有多个DynamoDB表是不可伸缩的,即使在这里,您也可能在一个事务中有多个DynamoDB表要更新,这是可能的,但性能会降低,或者您可以让AWS lambda基于DynamoDB更新流写入相关的类别表。但出于可伸缩性的考虑,最好还是避免使用。每次引入新类别时,都必须创建一个新表