Amazon DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL được quản lý hoàn toàn do Amazon Web Services (AWS) cung cấp. DynamoDB được thiết kế để cung cấp hiệu suất cao, khả năng mở rộng linh hoạt và độ tin cậy cho các ứng dụng hiện đại. Với khả năng xử lý hàng triệu yêu cầu mỗi giây và mở rộng tự động, DynamoDB là một lựa chọn phổ biến cho các ứng dụng yêu cầu độ trễ thấp và khả năng xử lý lượng dữ liệu lớn, đặc biệt là trong môi trường AWS.
1. NoSQL và Key-Value/Document Store
DynamoDB là một cơ sở dữ liệu NoSQL lưu trữ dữ liệu dưới dạng key-value và document. Mỗi bảng trong DynamoDB gồm các mục (items) tương tự như các hàng trong bảng của cơ sở dữ liệu quan hệ nhưng các mục này có thể có cấu trúc khác nhau.
2. Khả năng mở rộng linh hoạt
DynamoDB có khả năng tự động mở rộng theo quy mô dữ liệu và yêu cầu truy vấn của người dùng. Dịch vụ này có thể điều chỉnh băng thông và dung lượng lưu trữ một cách linh hoạt mà không cần sự can thiệp của con người.
3. Hiệu suất cao với độ trễ thấp
DynamoDB được tối ưu hóa cho các ứng dụng yêu cầu hiệu suất cao với độ trễ rất thấp (dưới 10 mili giây), ngay cả khi xử lý hàng triệu yêu cầu mỗi giây.
3. Quản lý hoàn toàn
Là một dịch vụ được quản lý hoàn toàn bởi AWS. DynamoDB giúp người dùng tránh được việc phải xử lý các tác vụ quản trị cơ sở dữ liệu như cập nhật phần mềm, sao lưu dữ liệu, quản lý clusters, và điều chỉnh hiệu suất.
4. Kiến trúc phân tán và dữ liệu sao lưu
DynamoDB lưu trữ dữ liệu trên nhiều phân vùng (partitions) để đảm bảo hiệu suất và khả năng chịu lỗi cao. Dữ liệu được tự động sao lưu để đảm bảo tính sẵn sàng ngay cả trong các tình huống gặp lỗi phần cứng.
5. Consistency Model
DynamoDB hỗ trợ hai mô hình nhất quán: Eventually Consistent (Nhất quán cuối cùng) và Strongly Consistent (Nhất quán mạnh). Tùy theo nhu cầu về độ trễ và tính chính xác chúng ta có thể chọn mô hình phù hợp.
6. Cơ chế truy vấn mạnh mẽ
DynamoDB cho phép truy vấn dựa trên Partition Key và Sort Key để tăng tốc độ tìm kiếm và duy trì hiệu suất cao cho các ứng dụng lớn. Ngoài ra nó hỗ trợ tính năng Secondary Indexes giúp mở rộng khả năng truy vấn linh hoạt hơn.
7. DynamoDB Streams
Đây là tính năng cho phép theo dõi các thay đổi đối với dữ liệu trong bảng DynamoDB theo thời gian thực. DynamoDB Streams có thể được tích hợp với các dịch vụ khác như AWS Lambda để xử lý các sự kiện hoặc phản hồi khi có thay đổi dữ liệu.
8. Bảo mật và tuân thủ
DynamoDB hỗ trợ mã hóa dữ liệu ở cả trạng thái nghỉ và khi truyền. Nó cũng tích hợp với các dịch vụ AWS như IAM (Identity and Access Management) để kiểm soát truy cập và CloudTrail để ghi lại các hoạt động truy cập cơ sở dữ liệu.
9. Transactions
DynamoDB hỗ trợ giao dịch ACID (Atomicity, Consistency, Isolation, Durability) giúp thực hiện các thao tác nguyên tử trên nhiều mục trong một hoặc nhiều bảng, đảm bảo tính toàn vẹn dữ liệu trong các hoạt động quan trọng.
10. Ưu điểm của DynamoDB
- Dễ mở rộng và linh hoạt: Tự động mở rộng để xử lý khối lượng công việc thay đổi mà không cần cấu hình thủ công.
- Khả năng xử lý lượng lớn dữ liệu: DynamoDB có thể xử lý hàng triệu yêu cầu mỗi giây.
- Không cần quản lý cơ sở hạ tầng: Dịch vụ được quản lý hoàn toàn, giảm bớt sự phức tạp trong vận hành.
- Tích hợp tốt với AWS Lambda, API Gateway và các dịch vụ khác để xây dựng các hệ thống serverless.
11. Nhược điểm của DynamoDB
- Chi phí: Mặc dù DynamoDB linh hoạt và mở rộng tốt nhưng chi phí sử dụng có thể cao nếu không tối ưu hóa việc sử dụng và cấu hình đúng cách.
- Giới hạn query: So với các cơ sở dữ liệu SQL truyền thống, DynamoDB có giới hạn nhất định về query và tính năng liên quan đến phép nối (join) hoặc các truy vấn phức tạp.
12. Khi nào nên sử dụng DynamoDB?
- Ứng dụng có khối lượng truy cập lớn và yêu cầu độ trễ thấp: DynamoDB là lựa chọn lý tưởng cho các ứng dụng thương mại điện tử, trò chơi trực tuyến và các hệ thống theo dõi thời gian thực.
- Mô hình dữ liệu không cần quan hệ phức tạp: Khi dữ liệu của chúng ta không phù hợp với các cấu trúc quan hệ phức tạp thì DynamoDB giúp đơn giản hóa lưu trữ và truy vấn.
- Cơ sở dữ liệu không cần quản lý thủ công: Nếu bạn muốn AWS tự động quản lý cơ sở dữ liệu, tiết kiệm thời gian và công sức trong việc duy trì hệ thống thì DynamoDB là lựa chọn tốt.
- … Tham khảo thêm tại đây
#DynamoDB Kiến trúc của DynamoDB Cài đặt DynamoDB Trên Local