DynamoDB的用户友好唯一标识符

时间:2019-06-20 09:29:20

标签: amazon-web-services amazon-dynamodb

在名为File.AppendAllLines(filePath, new string[] { "Exception Detail Start-------------------------------------------", "Stack Trace :" + ex.StackTrace, "Error :" + ex.Message, "Exception Detail End-------------------------------------------" }); 的DynamoDB表中,我需要一个唯一的标识符,以便用户记住。

在RDBMS中,我可以使用自动增量ID来满足要求。

由于DynamoDB中没有自动增量ID的方法,有没有办法满足这一要求?

如果我将上次使用的ID保留在另一个表(users中)在添加新文档之前进行检索,请增加该编号并在两个表(lastIdTablelastIdTable)中保存更新的编号,效率会很低。

更新

请注意,无法使用现有属性或为此目的获取用户输入。

3 个答案:

答案 0 :(得分:1)

由于似乎您必须创建一个令人难忘的userId,而无需提供有关该用户的任何信息,因此建议您从标准词典中创建一个由2-4个简单单词组成的随机词组。

例如,您可能生成短语correct horse battery staple。 (我知道这是一个userId而不是密码,但是记忆性方面的考虑仍然适用。)

https://imgs.xkcd.com/936/

无论您使用的是随机数(与顺序号具有相似的记忆力)还是随机的短语(我认为更容易记忆),您都需要进行条件写操作,条件是ID尚未存在,如果确实存在,则应生成一个新ID,然后重试。

答案 1 :(得分:0)

电子邮件地址似乎是最好的选择...

既可以用作分区键,也可以使用GUID作为分区键,并在电子邮件地址上具有全局二级索引。

或者像Matthew在评论中建议的那样,让用户选择用户名。

答案 2 :(得分:0)

Docker容器命名策略可能会让您有所了解。 https://github.com/moby/moby/blob/master/pkg/namesgenerator/names-generator.go 它将带来独特(有限)却又人性化的

示例

awesome_einstein
nasty_weinstein
perv_epstein

类似的一个:https://github.com/jjmontesl/codenamize