DynamoDB 避免重复的非键属性

问题描述 投票:0回答:3

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

id
(键)、
name
email

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

如果数据库中已存在非键属性

put
create
,如何防止
save
/
email
/
name
操作成功?

我有一张表,

tblUsers
,其中一个关键属性是
id
。 然后,我有两个全局二级索引,每个索引都有一个键属性,即第一个索引表的
email
,第二个索引表的
name

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

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

asp.net amazon-web-services asp.net-mvc-5 asp.net-identity amazon-dynamodb
3个回答
4
投票

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

根据您的情况,有 2 个选项:

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

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.