DynamoDB避免重复的非键属性

时间:2016-02-14 02:39:34

标签: asp.net amazon-web-services asp.net-mvc-5 asp.net-identity amazon-dynamodb

我有一个具有这些属性的用户对象。

y++; if(y == MAX_WORDS){ break; } (密钥),idname

我正在努力确保这些属性在数据库中是唯一的。

如果有任何非关键属性email和{{1},如何阻止put / create / save操作成功},已存在于DB?

我有一个表email,其中一个键属性为name。 然后我有两个全局二级索引,每个索引也有一个键属性,第一个索引表为tblUsers,第二个为id

我正在使用microsoft .net身份框架,它在创建用户之前会检查具有给定名称或电子邮件的现有用户。

我预见到的问题是检查现有用户和创建新用户之间的延迟。没有安全性,多线程不会最终创建两个具有相同名称或电子邮件的用户。

2 个答案:

答案 0 :(得分:2)

dynamodb只能对哈希范围表键强制唯一性(不适用于全局二级索引键)

在您的情况下,有2个选项:

1)强制它在应用程序级别 - 如果你的问题是安全的,那么使用锁(缓存锁)

2)不要使用dynamodb(也许它不能满足你的要求)

答案 1 :(得分:0)

我在本地使用ehcache来检查重复项。再添加一项检查ehcache是​​否为空(由于某种原因,缓存已被重置)。通过查询dynamoDb来重新缓存缓存。