我有一个要存储在DynamoDB中的订单,其中包含以下字段:
(没有唯一的订单标识符)
首先,我将名字和姓氏“ John Doe”组合为分区键,并以订购日期作为排序键。直到:
我认为我无法查询分区键(客户名称)。我希望能够按客户查找客户订单!
第二个处理该顺序的URL看起来像:https://example.com/2019-03-27/John%20Doe...
,即空格确实引起一些混乱。有没有更有效的方式来编码名称?
我最热衷于电子邮件地址,但通过研究发现,电子邮件似乎是一个不好的领域。
访问模式非常简单。需要一种方法:
我尝试制作包含订单状态和订单日期的组合键,但是效果不佳:Replace an old item with a new item in DynamoDB
答案 0 :(得分:0)
在这种情况下,大多数人都会为用户生成一个UUID,并使其成为分区键。
如果您使用电子邮件地址作为分区键,则意味着您的用户永远无法更改其电子邮件地址,至少没有您自己的创造性编码。
在您的情况下使用电子邮件地址可能是有效的,例如,如果用户永远无法更改电子邮件地址。在这种情况下,您应该只能够对客户端上的电子邮件地址进行URL编码。但是,如果要完全避免这种情况,可以接受Base64编码格式的参数,并在与DynamoDB一起使用之前对其进行解码。
如果您决定生成UUID并将其作为分区键,则可能会创建带有电子邮件地址和订单状态的分区键的GSI。您可以使用这些GSI以指定的访问方式快速访问数据。