如何查询Dynamodb的不同哈希键和secondaryindex?

时间:2014-01-23 15:47:22

标签: nosql amazon-dynamodb

我正在尝试在dynamodb中执行日志表,而我的表看起来像

  

Pid [HashKey] || TableName [SecondaryIndex] || CreateDate [RangeKey] || OldValue ||的NewValue

     

10 ||产品|| 10.10.2013 00:00:01 ||鞋||裙

     

10 ||产品|| 10.10.2013 00:00:02 ||裙子||裤

     

11 || ProductCategory || 10.10.2013 00:00:01 ||鞋子||裙

     

19 || ProductCategory || 10.10.2013 00:00:01 ||表||扶手椅

Pid =我的主数据库表主键

TableName =我的主要数据库表名称

CreateDate =行创建日期

现在我想获得

列表
  

其中(Pid = 10 AND TableName =“Product”)OR(Pid = 11 AND   表名= “产品分类”)

在一个请求中(它不会像这样短。它可能包含太多的表和pid)

我尝试了批处理,但我没有使用它,因为我无法使用二级索引进行查询。它需要具有相同运算符的rangekey。

我尝试过查询,但这次我无法在同一个查询中发送多个哈希密钥。

任何想法或继承?

谢谢。

1 个答案:

答案 0 :(得分:0)

这里的问题是OR ....通常你不能在没有修改行的情况下通过单个查询操作得到这个条件,

解决方案1:您必须发出2个查询操作,并将它们附加到相同的结果集。

where (Pid = 10 AND TableName = "Product")

union

where (Pid = 11 AND TableName = "ProductCategory")

这些操作应并行运行以优化性能。

解决方案2:创建一个字段xxx来描述您的状况并将其保持在写入状态 您可以在其上创建global secondary index并执行单个查询。