asp.net DynamoDB避免重复的非键属性

wlwcrazw  于 4个月前  发布在  .NET
关注(0)|答案(3)|浏览(87)

我有一个具有这些属性的用户对象。
id(密钥)、nameemail
我试图确保这些属性在DB中是唯一的。
如果数据库中已经存在emailname这两个非键属性,如何阻止put/create/save操作成功?
我有一个表tblUsers,其中一个键属性是id。然后我有两个全局二级索引,每个索引也有一个键属性,第一个索引表是email,第二个索引表是name
我使用的是microsoft .net identity framework,在创建用户之前,它会检查现有用户是否具有给定的名称或电子邮件。
我预见到的问题是,检查现有用户和创建新用户之间的延迟。没有安全性,多个线程最终不会创建两个具有相同名称或电子邮件的用户。

wooyq4lh

wooyq4lh1#

dynamodb可以强制唯一性只为哈希范围表键(不为全局二级索引键)
在你的情况下,有两种选择:
1)在应用程序级别强制它-如果你的问题是安全性,那么使用锁(缓存锁)
2)不要使用dynamodb(也许它不符合您的要求)

dpiehjr4

dpiehjr42#

我在本地使用ehcache来检查重复项。如果ehcache为空(由于某种原因,缓存已重置),则再添加一个检查。通过查询dynamoDb来重新填充缓存。

q8l4jmvw

q8l4jmvw3#

我有同样的情况下,我发现我使用了相同的属性2次。

相关问题