我目前工作在AWS的一个API,这是使用DynamoDB表,主键是一个UUID像123e4567-e89b-12d3-a456-426614174000。
所以我的GET请求会使用这个url: example。com/users/123e4567-e89b-12d3-a456-426614174000,这对我来说太长了,不友好。
因为DynamoDB我不能使用计数器。
我做了一些研究,当然有纳米机器人,但要真正独一无二,它还需要相当长的时间。
stackoverflow是如何通过使用短的数字id来解决这个问题的?
例如:https://stackoverflow.com/questions/26615900
###你可以在发电机中使用一个增量计数器,有很多关于如何为PKs制作计数器的帖子。
您还必须评估为什么使用UUID作为主键。如果你使用UUID,因为你只有一个分区键而没有排序键,那么发电机可能不是你表需要的正确解决方案。发电机时效果最好,给最功率设置根据访问模式——你有这一些信息(PK),你需要这些类型的文档/对象(sks)所以你可以查询基于一个PK和获得所有可能的数据需要从sks下不同的文档。
如果您试图用一个独特的复合键在发电机中做每一个单一的输入,您正在丧失很多功率,像发电机带来的NoSQL,您应该考虑它是否适合您的产品
除了可以工作的uuid之外——带有其他值(如用户名——其名称的前几个字符)的Unix时间戳作为前缀或后缀——它在大多数情况下在您的系统中是功能惟一的。(如果你做对了,你会发现两个不同的人用相同的字母组合在相同的毫秒时间创建一个账户是非常罕见的)
但是,您确实需要考虑您的访问模式,以及根据您所拥有的信息计划访问的内容。PK+SK的组合构成了一个复合键,这个复合键必须是唯一的——但这意味着只要这个PK+SK的组合不同,您就可以拥有多个具有相同值的PKS。