Câu hỏi là, một người dùng có thể có một danh sách bạn bè. Với một người dùng, chúng tôi muốn có tất cả bạn bè của anh ấy / cô ấy (tên + trạng thái trực tuyến / ngoại tuyến). Làm cách nào để chúng tôi thực hiện việc này trong DynamoDB?
Đầu tiên cho mỗi người dùng, bạn cần chỉ định user_id. Đó sẽ là số nhận dạng duy nhất cho người dùng đó, hay nói cách khác là một con trỏ.
Bạn có thể sử dụng bảng Hash-Range để lưu trữ dữ liệu tình bạn. Cả khóa băm và khóa phạm vi của bảng này sẽ là user_id. Trong DynamoDB mỗi khóa băm có thể có nhiều khóa phạm vi. Khóa băm sẽ là một người dùng và chúng tôi có thể lưu trữ tất cả id người dùng của bạn bè cô ấy trong khóa phạm vi.
giả sử user_1 là bạn với user_2 và user_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Bạn có thể có một bảng khác lưu trữ thông tin Người dùng
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Bây giờ bạn muốn kết bạn của user_1. Bạn có thể thực hiện truy vấn DynamoDB với hash_key =user_1. Trong ví dụ trên, bạn sẽ nhận được 2 hàng:
(user_1, user_2) (uiser_1, user_3).
Bây giờ bạn biết rằng user_2 và user_3 là bạn của user_1. Bạn có thể sử dụng Bảng người dùng để nhận trạng thái trực tuyến của user_2 và user_3.