0

我有一個擁有這些屬性的用戶對象。DynamoDB避免重複的非關鍵屬性

id(鍵),nameemail

,我試圖以確保這些屬性在DB獨特。

如何防止put/create/save操作得手,在任一非關鍵屬性,emailname的情況下,已經存在的數據庫?

我有一張表,tblUsers,其中一個關鍵屬性是id。 然後我有兩個全局二級索引,每個都有一個關鍵屬性,第一個索引表爲email,第二個爲name

我正在使用microsoft.net標識框架,它本身會在創建用戶之前使用給定名稱或電子郵件檢查現有用戶。

我預見到的問題是檢查現有用戶和創建新用戶之間的延遲。沒有安全性,多個線程不會最終創建具有相同名稱或電子郵件的兩個用戶。

回答

2

dynamodb只能爲哈希範圍表鍵強制唯一性(不是全局二級索引鍵)

做你的情況有2個選項:

1)迫使它在應用層面 - 如果你的問題是安全性,然後用鎖(鎖緩存)

2)不使用dynamodb(也許它不會回答你的要求)

+0

沒想過鎖 - 我想這是我最好的選擇 - 鎖 - >檢查重複 - >創建 - >發佈 – Tsanas

+0

是的,我用這種方式也:) –

0

我使用本地的Ehcache來重複檢查。添加一個檢查ehcache是​​否爲空(由於某些原因,緩存已被重置)。通過向dynamoDb查詢重新填充緩存。