NoSQL bắt đầu từ query
DynamoDB không thiết kế như một database relational rồi “bỏ schema”. Hãy liệt kê access pattern trước, sau đó chọn partition key/sort key/index. Query nên đi theo key; scan toàn bảng thường là tín hiệu thiết kế chưa phù hợp.
Bài tập
Thiết kế order table cho customer history, order by id, orders by status/time và item lookup. Ghi hot partition risk, consistency, capacity mode và TTL. Mỗi lựa chọn phải có access pattern chứng minh.
Bài giảng chuyên sâu
DynamoDB: thiết kế từ truy vấn, không từ bảng
Với order history, hãy liệt kê access pattern trước: customer xem đơn theo thời gian, lookup theo order id, tìm theo trạng thái và lấy item. Chọn partition key để phân phối tải, sort key cho range/query trong partition; GSI tạo thêm query path nhưng có storage/capacity/consistency cost. Scan toàn bảng là dấu hiệu access pattern chưa được thiết kế.
On-demand hợp traffic khó đoán; provisioned hợp workload ổn định có thể đo. Hot partition xảy ra khi key tập trung traffic; TTL dọn dữ liệu không còn giá trị nhưng không phải backup. Strong consistency và eventual consistency phải gắn với requirement.
Bài tập: tạo access-pattern matrix gồm key condition, expected result, write/read rate, hot-key risk và recovery. Failure drill: một customer trở thành hot key, GSI throttling và duplicate write; ghi metric evidence và phương án giảm tải.