我有一个具有这些属性的用户对象。
y++;
if(y == MAX_WORDS){
break;
}
(密钥),id
和name
我正在努力确保这些属性在数据库中是唯一的。
如果有任何非关键属性email
和{{1},如何阻止put
/ create
/ save
操作成功},已存在于DB?
我有一个表email
,其中一个键属性为name
。
然后我有两个全局二级索引,每个索引也有一个键属性,第一个索引表为tblUsers
,第二个为id
。
我正在使用microsoft .net身份框架,它在创建用户之前会检查具有给定名称或电子邮件的现有用户。
我预见到的问题是检查现有用户和创建新用户之间的延迟。没有安全性,多线程不会最终创建两个具有相同名称或电子邮件的用户。
答案 0 :(得分:2)
dynamodb只能对哈希范围表键强制唯一性(不适用于全局二级索引键)
在您的情况下,有2个选项:
1)强制它在应用程序级别 - 如果你的问题是安全的,那么使用锁(缓存锁)
2)不要使用dynamodb(也许它不能满足你的要求)
答案 1 :(得分:0)
我在本地使用ehcache来检查重复项。再添加一项检查ehcache是否为空(由于某种原因,缓存已被重置)。通过查询dynamoDb来重新缓存缓存。