【发布时间】:2017-03-13 13:35:22
【问题描述】:
我有一个 dynamodb 表,其中分区键是均匀分布的用户 ID。表存储有关用户信息的数据,如用户持有的(姓名、电子邮件、国家和门户卡 - 假设用户 1 有卡 1、卡 2、卡 3(最多 10 个卡类别),卡 1 的详细信息为(金卡,购买日期-yyyy- mm-dd)。用户可以通过 userid 对表进行查询。
- 我需要获取多少张姓名和类型为 user1 的卡片,
- 需要获取用户1的国家
- 需要获取user1是否持有card1类别的金卡 持有,是当年购买的,是哪个国家的 用户 1。
为了实现这一点,我可以通过 2 种方式设计我的架构:-
- 每个项目都有属性(除了用户 ID 分区键)为(国家字符串、名称字符串、电子邮件字符串、卡片 地图{"card1":{"purchasedate":"yyyy-mm-dd","type":"gold"},"card2":{{"purchasedate":"yyyy-mm-dd","type": “白金”}}}
- 将 userid 作为主键,将卡片类别作为排序键,并将用户信息保留在 key 为 userid_all 的 item 中,并将卡片信息保留在 item 中 键为 userid_card1,字符串类型的属性为 purchaseate 和类型。说 userid1_all : country:Us,email:abc@abc.com userid_card1: purchaseate:yyyy-mm-dd,type:gold
哪种方法更好?
- 从地图属性或字符串属性读取数据更好。
- 用地图类型更新属性(比如card1类型的userid1从黄金升级到白金)或字符串类型更好。
谢谢
【问题讨论】:
标签: amazon-dynamodb