我正在建模一个简单的应用程序,我想使用DynamoDB作为我的存储。我需要从电子商务网站存储所有订单。可以使用order_id和用户邮箱进行查询。
查看dynamodb文档,我认为最好的方法是使用order_id(我的大多数查询将在此索引上进行)作为我的主键(分区键)。
那电子邮件呢?我想要一个二级索引,但是我有点迷路了。最好的方法是什么?
看起来在email
属性上添加全局二级索引可以解决这个问题:
-
当需要按
order_id
查找时,使用GetItem
操作并指定order_id
为主键 -
当您需要通过
email
查找时,您可以在GSI上使用Query
API并指定email
作为分区键。
GSI有独立的读容量单元——因为你说你将在大多数时间使用order_id,你可以为主表提供比GSI更多的RCU。
参考:- http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html
- http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
- http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html