DynamoDB Data Modeling

本文档记录了我学习用 DynamoDB 建立数据模型的学习心得. 主要分两个部分:

  1. Principal 包括各种经典数据模型, one-to-many, many-to-many, 以及各种 查询模式 的数据模型.

  2. system 包括各种互联网产品的后台设计. 比如设计抖音的数据后台.

参考资料:

E-Commerce Data Modeling Example

使用场景:

  • user_id

  • user_major_email

  • order_id

  • item_id

  • 一个 user 只能有一个 major email, 所以 user vs email = 一对一.

  • 一个 user 可能有多个 order, 但是一个 order 只有一个 user. 所以 user vs order = 一对多.

  • 一个 order 可能有多个 item, 一个 item 也可能被多个 order 所包含. 所以 order vs item = 多对多.

table_users:

user_id (partition_key)     email
2d4b83                      alice@example.com
f97c69                      bob@example.com

index_users_email_to_user, partition key of GSI can be duplicate:

email (partition_key)       user_id
alice@example.com           2d4b83
bob@example.com             f97c69

table_users: