2016-12-14 96 views
0

我的用例是我需要在我的DynamoDB表中有一个UUID作为主键。我正在使用@DynamoDBAutoGeneratedKey,并且我可以使用UUID。我也明白,自动生成的密钥可以从写入到Dynamo数据库的实体中检索,只需将其存储在Dynamo数据库中即可。但我担心的是,是否有任何干净的方法来检索应用程序中任何位置的自动生成的密钥,还是需要将自动生成的密钥存储在内存中?或者我应该实现二级索引来检索自动生成的密钥?为DynamoDB自动生成UUID

+0

自动生成的密钥只有在语义上符合您的用例时才有意义(例如,如果项目的密钥会保存在别处,例如另一个表或另一个系统等),或者如果有技术上的理由使用它如防止热键(在这种情况下添加GSI可能是有意义的)。但是如果这两种情况都不适合你,那么你应该考虑一个更为自然的主键。 –

回答

0

注意: - OP没有用例需要通过主键获取数据的信息。我认为最终的要求可能不是获得UUID。相反,它可能是使用UUID获取项目。

一些常规选项如下: -

如果你不知道哈希键是生成的UUID汽车,

1)扫描表来获取生成的自键。请注意,这是一个全表扫描,这将是一个昂贵的操作。

2)是,全局二级索引可用于通过不同的属性查询表,即不同于定义为主表中散列键的UUID字段。如果主表的散列键是未知的,则这是更高效的选项。

3)我不确定完整的用例。但是,如果相同的HTTP请求或进程稍后要为新插入的UUID获取数据,则可以将UUID保留在内存中(即使用Java集合)以便稍后使用它。在这种情况下,实际上可以保留先前插入的整个对象在内存中。