Lập mô hình dữ liệu là quá trình thiết kế cách ứng dụng lưu trữ dữ liệu trong cơ sở dữ liệu đã cho. Với cơ sở dữ liệu NoSQL như DynamoDB, cách lập mô hình dữ liệu sẽ khác với cách lập mô hình bằng cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ được xây dựng hướng đến sự linh hoạt và rất phù hợp với các ứng dụng phân tích. Trong quá trình lập mô hình dữ liệu quan hệ, bạn cần bắt đầu với các thực thể của mình trước. Khi có mô hình quan hệ chuẩn hóa, bạn có thể đáp ứng bất kỳ mẫu hình truy vấn nào mình cần trong ứng dụng.
Cơ sở dữ liệu NoSQL (không ràng buộc) được thiết kế nghiêng về tốc độ và khả năng mở rộng—chứ không phải sự linh hoạt. Mặc dù hiệu suất của cơ sở dữ liệu quan hệ có thể giảm khi bạn mở rộng quy mô nhưng việc mở rộng quy mô cơ sở dữ liệu theo chiều ngang như DynamoDB sẽ cung cấp hiệu suất nhất quán ở mọi quy mô. Một số người dùng DynamoDB có các bảng vượt quá 100 TB nhưng hiệu suất đọc và ghi của các bảng này không khác gì so với bảng có kích thước dưới 1 GB.
Để đạt được kết quả tốt nhất với cơ sở dữ liệu NoSQL như DynamoDB, bạn cần thay đổi tư duy khỏi định nghĩa cơ sở dữ liệu thường thấy. Sử dụng những biện pháp tốt nhất sau đây khi lập mô hình dữ liệu bằng DynamoDB.
1. Tập trung vào mẫu hình truy cập
Khi thực hiện bất kỳ kiểu lập mô hình dữ liệu nào, bạn sẽ bắt đầu bằng sơ đồ thực thể - mối quan hệ mô tả các đối tượng (hoặc thực thể) khác nhau trong ứng dụng của bạn và cách chúng kết nối với nhau (hoặc mối quan hệ giữa các thực thể).
Trong cơ sở dữ liệu quan hệ, bạn sẽ trực tiếp đưa thực thể vào bảng và chỉ định mối quan hệ bằng khóa ngoại. Sau khi bạn xác định bảng dữ liệu, cơ sở dữ liệu quan hệ sẽ cung cấp ngôn ngữ truy vấn linh hoạt để trả về dữ liệu ở hình thức bạn cần.
Trong DynamoDB, bạn cần suy nghĩ về các mẫu hình truy cập trước khi lập mô hình bảng. Cơ sở dữ liệu NoSQL chú trọng đến tốc độ, chứ không phải sự linh hoạt. Trước tiên, bạn cần nghĩ về cách truy cập dữ liệu, rồi mới lập mô hình dữ liệu ở hình thức dữ liệu sẽ được truy cập.
Trước khi thiết kế bảng DynamoDB, hãy ghi lại tất cả nhu cầu của bạn về việc đọc và ghi dữ liệu trong ứng dụng. Hãy cẩn trọng và suy nghĩ về tất cả các luồng trong ứng dụng vì bạn chuẩn bị tối ưu hóa bảng cho mẫu hình truy cập.
2. Tối ưu hóa cho số yêu cầu gửi tới DynamoDB
Sau khi ghi lại nhu cầu mẫu hình truy cập của ứng dụng, bạn đã sẵn sàng để thiết kế bảng. Bạn nên thiết kế bảng để giảm thiểu số yêu cầu gửi tới DynamoDB cho từng mẫu hình truy cập. Tốt nhất, mỗi mẫu hình truy cập chỉ cần một yêu cầu tới DynamoDB vì các yêu cầu mạng thường chậm và việc này giới hạn số lượng yêu cầu mạng bạn sẽ tạo trong ứng dụng của mình.
Để tối ưu hóa số yêu cầu gửi tới DynamoDB, bạn cần hiểu rõ một số khái niệm chính sau:
● Khóa chính
● Chỉ mục phụ
● Giao dịch
3. Không làm giả mô hình quan hệ
Những người mới dùng DynamoDB thường tìm cách triển khai một mô hình quan hệ trên DynamoDB không ràng buộc. Nếu cố gắng làm vậy, bạn sẽ mất hầu hết lợi ích của DynamoDB.
Các phản mẫu hình phổ biến nhất (phản hồi không hiệu quả đối với các sự cố lặp lại) mà mọi người thử thực hiện với DynamoDB là:
- Chuẩn hóa: Trong cơ sở dữ liệu quan hệ, bạn chuẩn hóa dữ liệu của mình để giảm dư thừa dữ liệu và dung lượng lưu trữ, sau đó sử dụng phép kết nối để kết hợp nhiều bảng khác nhau. Tuy nhiên, các phép kết nối ở quy mô lớn thường chậm và tốn kém. DynamoDB không cho phép thực hiện phép kết nối vì chúng trở nên chậm khi số bảng tăng lên.
- Mỗi bảng một loại dữ liệu: Bảng DynamoDB của bạn thường sẽ có các loại dữ liệu khác nhau trong một bảng. Trong ví dụ, chúng ta có các thực thể User, Game và UserGameMapping trong một bảng. Trong cơ sở dữ liệu quan hệ, các dữ liệu này sẽ được lập mô hình thành ba bảng khác nhau.
- Quá nhiều chỉ mục phụ: Mọi người thường tìm cách tạo chỉ mục phụ cho từng mẫu hình truy cập bổ sung mà họ cần. DynamoDB không cần lược đồ và các chỉ mục của bạn cũng vậy. Tận dụng sự linh hoạt của các thuộc tính để tái sử dụng một chỉ mục phụ cho nhiều loại dữ liệu trong bảng. Đây được gọi là quá tải chỉ mục.
Ở các bước sau, chúng ta sẽ xây dựng sơ đồ thực thể - mối quan hệ và chỉ ra trước các mẫu hình truy cập. Đây luôn là những bước đầu tiên khi bạn sử dụng DynamoDB. Sau đó, ở các mô-đun sau, chúng ta sẽ triển khai các mẫu hình truy cập này ở trong thiết kế bảng.
Thời gian hoàn thành mô-đun: 20 phút