2014-01-23 92 views
1

我試圖做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 =我的主數據庫表的主鍵

表名=我的主數據庫表名

CREATEDATE =行創建日期

現在我想要得到的

列表

其中(Pid = 10 AND TableName =「Product」)OR(Pid = 11 AND TableName =「ProductCategory」)

在一個請求中(它不會這麼短。它可能包括太多的表格和pid)

我試過了batchget,但是我沒有使用它,因爲我無法使用二級索引進行查詢。它需要具有相同操作員的範圍鍵。

我試過查詢,但是這次我無法在同一查詢中發送多個散列鍵。

任何想法或繼承?

謝謝。

回答

0

這裏的問題是OR ....一般來說,你不能把這個地方有沒有改變你的行單查詢操作,

解決方案1條件:你必須發出2個查詢操作,並追加他們到相同的結果集。

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

union 

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

這些操作應該並行運行以優化性能。

溶液2:創建一個字段XXX描述您的病情,並保持它的寫入,比 您可以創建就可以了global secondary index並執行一個查詢。

+0

如果我想獲取20個表更改日誌的日誌數據,第一個解決方案會創建20個突發查詢。 – sonstiq

+0

我沒有完全理解的第二種解決方案。但是另一個領域的二級全球指數並不能解決任何問題。因爲我的目標是阻止突發查詢。 – sonstiq