我正在使用AWS Mobile HUD和連接服務構建應用程序,最突出的是Cognito & DynamoDB。目前,我正面臨一個問題,需要設置一個允許我在DynamoDB項目上存儲用戶相關信息的方案(反之亦然)。AWS DynamoDB記住用戶的項目
方案
運行1
- 用戶A是直接從DynamoDB的
[RootItem] = {RootItem_1, RootItem_2, RootItem_3}
列表(檢查:正常工作) - 用戶A或者駁回
RootItem_1
(標記爲 '不感興趣' in app)
運行2
- 用戶A登錄到應用程序
- 用戶A拉
[RootItem] = {}
- 用戶A的列表應該只得到
RootItems
這是不駁回交付給客戶 - 名單應該是
{RootItem_2, RootItem_3}
作爲新的非關係數據/ NoSQL,我不是確定解決這個問題的最好方法是什麼。可能的思路:
- 存儲用戶ID的RootItem_1排除它在掃描[問題:將有可能是成千上萬的用戶駁回同一項目] RootItem_1的
- 商店UUID到用戶數據上cognito,緩存拉之前本地並排除uuid的拉
- 創建具有排除/解除[userid,rootItem_uuid]的表,首先查詢以獲取用戶排除列表。 >潛在的性能問題?
這將是巨大的,得到一些建議的是在NoSQL的環境來處理這個最好的辦法。
這是一個looong前我試過dynamodb,但你應該避免掃描操作,如果可能的話,這是非常沉重的。你看過全球二級指標嗎?這可能會減少對SCAN操作的需求,並允許您在表格上查詢。 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForGSI.html – 2017-02-18 13:39:04
我知道,掃描並不完美,問題是我必須做相當複雜的查詢,這似乎是不可能的使用查詢。 aka {property 1 == x &&屬性2 beween(a,b)或(c,d)&&屬性3 = a或b,...}總的來說,我期望篩選範圍和匹配6-7不同屬性,使用OR和AND操作,到目前爲止,我認爲這是不可能的 –
這就是我們從DynamoDB中移出的原因。當你不需要進行「高級」查詢時,它非常出色,但是當你需要更多條件時,你會遇到牆壁。這,並與此一起:http://stackoverflow.com/questions/41520123/getting-full-access-to-dynamodb-from-my-ios-app-using-aws-cognito-developer-iden/41676547#41676547檢查我的答案注意這個問題。由於您使用的是Cognito和iOS,我假設您直接連接到DynamoDB,這也是要注意的事情(不要嚇跑你)。 – 2017-02-18 16:45:34