Các thực tiễn tốt nhất của DyanmoDB cho thấy rõ rằng:
Bạn nên duy trì càng ít bảng càng tốt trong ứng dụng DynamoDB. Hầu hết các ứng dụng được thiết kế tốt chỉ yêu cầu một bảng.
Tôi thấy thật thú vị khi mỗi bài hướng dẫn tôi từng thấy đối phó với DyanmoDB đều có thiết kế nhiều bảng.
Nhưng điều này có ý nghĩa gì trong thực tế?
Hãy xem xét một ứng dụng đơn giản với ba thực thể chính: Người dùng, Dự án và Tài liệu. Người dùng sở hữu nhiều dự án và Dự án có thể có nhiều Tài liệu. Chúng tôi thường phải truy vấn các Dự án cho Người dùng và trên Tài liệu cho Dự án. Đọc số lượng lớn hơn viết bởi một lề đáng kể.
Thiết kế bảng hướng dẫn ngây thơ sẽ sử dụng ba bảng:
Users
Hash key
user-id
Projects
Hash key Global Index
project-id user-id
Documents
Hash key Global Index
document-id project-id
Chúng tôi có thể dễ dàng sụp đổ Project
và Document
vào một Documents
bảng:
Documents
Hash key Sort key Global Index
project-id document-id user-id
Nhưng tại sao dừng lại ở đó? Tại sao không một bảng để thống trị tất cả? Vì đó User
là gốc rễ của mọi thứ ...
Users
Hash key Sort key
user-id aspect
--------- ---------
foo user email: foo@bar.com ...
foo project:1 title: "The Foo Project"
foo project:1:document:2 document-id: 2 ...
Sau đó, chúng tôi sẽ có một Chỉ số toàn cầu về, ví dụ, email
lĩnh vực tra cứu hồ sơ người dùng và một document-id
lĩnh vực khác trên lĩnh vực tra cứu tài liệu trực tiếp.
Đó có phải là cách nó hoạt động? Có hợp pháp khi ném các loại dữ liệu khác nhau như vậy vào cùng một bảng không? Hoặc là thiết kế thứ hai, hai bàn là một cách tiếp cận tốt hơn?
Tại điểm nào sẽ là chính xác để thêm một bảng thứ hai?