Amazon DynamoDB
Đây là dịch vụ cơ sở dữ liệu NoSQL của AWS là DynamoDB.
DynamoDB là một cơ sở dữ liệu NoSQL được quản lý hoàn toàn và có khả năng mở rộng lên đến hàng triệu truy vấn mỗi giây và hàng trillions hàng tỉ giá trị lưu trữ. Nó được thiết kế để xử lý các ứng dụng với khối lượng truy cập và yêu cầu truy vấn lớn. DynamoDB được xây dựng trên kiến trúc phân tán và được sao chép qua nhiều vùng khác nhau (AZs) để đảm bảo tính khả dụng cao.
DynamoDB không phải là một cơ sở dữ liệu quan hệ, mà là một cơ sở dữ liệu NoSQL. Nó hỗ trợ giao dịch và đảm bảo tính toàn vẹn dữ liệu. DynamoDB được tích hợp với IAM để cung cấp bảo mật, xác thực và quản lý. Nó có khả năng tự động mở rộng và tự động điều chỉnh, giúp giảm chi phí và đảm bảo tính sẵn sàng cao.
DynamoDB cung cấp hai lớp bảng: Standard và Infrequent Access (IA). Lớp bảng Standard được sử dụng cho các truy vấn được thực hiện thường xuyên hơn, trong khi lớp bảng IA được sử dụng cho các truy vấn ít thường xuyên hơn. Lớp bảng IA có giá trị thấp hơn so với lớp bảng Standard, nhưng nó có giá trị phí ghi và đọc cao hơn. Lớp bảng IA được sử dụng cho các dữ liệu ít được truy cập nhưng vẫn cần được lưu trữ và có thể được truy cập một cách đáng tin cậy khi cần thiết.
DynamoDB – Basics
DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL, được thiết kế để cung cấp tính sẵn sàng cao và khả năng mở rộng tuyệt vời. DynamoDB được tạo thành từ các bảng, mỗi bảng có khóa chính (Primary Key) và có thể chứa một số lượng vô hạn các mục (items). Mỗi mục được mô tả bởi các thuộc tính (attributes) của nó.
Tại thời điểm tạo bảng, người dùng phải quyết định khóa chính cho bảng đó. Khóa chính có thể là một khóa đơn giản hoặc một khóa phức tạp được gọi là khóa chính bổ sung (Composite Primary Key). Khóa chính sẽ được sử dụng để xác định duy nhất mỗi mục trong bảng.
Mỗi mục trong bảng có thể chứa nhiều thuộc tính (attributes), bao gồm cả thuộc tính có giá trị null. Các thuộc tính này có thể được thêm vào sau khi bảng được tạo. Mỗi mục có thể chứa tối đa 400KB dữ liệu.
DynamoDB hỗ trợ nhiều loại dữ liệu, bao gồm các loại dữ liệu cơ bản (Scalar Types) như chuỗi, số, nhị phân, boolean và null, các loại dữ liệu tài liệu (Document Types) như danh sách (List) và bản đồ (Map) và các loại dữ liệu Set như Set chuỗi, Set số và Set nhị phân.
Do đó, DynamoDB cho phép người dùng dễ dàng thêm, sửa đổi hoặc xóa các thuộc tính của một mục mà không cần phải lo lắng về việc thay đổi cấu trúc của bảng. DynamoDB cho phép người dùng nhanh chóng tiến hóa các schema dữ liệu của mình để đáp ứng nhu cầu của ứng dụng của họ.
DynamoDB –Table example
Để minh họa cho ví dụ của DynamoDB Table, chúng ta có thể xem xét một bảng dữ liệu chứa thông tin về kết quả chơi game của các người dùng, với cấu trúc sau:
Tên bảng (Table Name): GameResults
Khóa chính (Primary Key): Partition Key (User_ID), Sort Key (Game_ID)
Thuộc tính (Attributes): Score, Result
Trong bảng này, User_ID và Game_ID được sử dụng làm khóa chính của bảng. User_ID sẽ được sử dụng để phân vùng dữ liệu và Game_ID sẽ được sử dụng để sắp xếp dữ liệu trong mỗi phân vùng.
Mỗi mục (item) trong bảng sẽ có các thuộc tính (attributes) như Score và Result để lưu trữ thông tin về kết quả chơi game của người dùng. Ví dụ, một mục trong bảng GameResults có thể chứa thông tin như sau:
- User_ID: “johnsmith”
- Game_ID: “tictactoe”
- Score: 150
- Result: “Win”
Trong ví dụ này, người dùng có tên “johnsmith” đã chơi trò chơi Tic Tac Toe và giành chiến thắng với điểm số là 150. Các thuộc tính của mục này được lưu trữ trong bảng GameResults và có thể được truy cập và cập nhật bằng cách sử dụng các API của DynamoDB.
DynamoDB – Read/Write Capacity Modes
Trong DynamoDB, bạn có thể kiểm soát cách quản lý năng lực của bảng (read/write throughput) bằng cách sử dụng hai chế độ: Provisioned Mode và On-Demand Mode.
Provisioned Mode là chế độ mặc định của DynamoDB, trong đó bạn sẽ chỉ định số lần đọc/ghi mỗi giây (read/write throughput) mà bạn mong đợi bảng của mình sẽ phục vụ. Khi sử dụng chế độ này, bạn phải lên kế hoạch cho năng lực của bảng trước, để đảm bảo rằng bảng của bạn có đủ khả năng phục vụ cho lưu lượng truy cập. Bạn sẽ trả tiền cho số lượng Read Capacity Units (RCU) và Write Capacity Units (WCU) mà bạn đã đặt trước. Provisioned Mode cũng cho phép bạn thêm chế độ tự động mở rộng (auto-scaling) cho RCU và WCU, để tăng khả năng phục vụ của bảng khi có nhu cầu.
On-Demand Mode là chế độ tương tự như mô hình tiêu chuẩn của các dịch vụ điện toán đám mây khác. Bảng của bạn sẽ tự động mở rộng hoặc thu hẹp theo mức độ tải của công việc. Bạn không cần lên kế hoạch cho năng lực của bảng trước và sẽ chỉ trả tiền cho số lượng đọc/ghi thực tế mà bạn sử dụng. Tuy nhiên, chế độ này có giá cao hơn Provisioned Mode. On-Demand Mode thích hợp cho các công việc có khối lượng truy cập không đều hoặc có sự thay đổi đột ngột trong khối lượng truy cập.
Hands on
Đầu tiên bạn vào DynamoDB › Tables › Create table. Trong DynamoDB, bảng (table) được tạo bằng cách sử dụng chức năng “Create Table”. Khi tạo một bảng trong DynamoDB, bạn cần chỉ định ba yếu tố cơ bản: tên bảng, khóa phân vùng (partition key) và khóa sắp xếp (sort key).
- Tên bảng (Table name): Đây là tên của bảng mà bạn muốn tạo. Tên này phải là duy nhất trong tài khoản AWS của bạn.
- Khóa phân vùng (Partition key): Đây là thuộc tính trong bảng được sử dụng để phân vùng dữ liệu. Tất cả các mục trong cùng một phân vùng sẽ được lưu trữ trên cùng một node. Khóa phân vùng là bắt buộc và phải được chỉ định khi tạo bảng.
- Khóa sắp xếp (Sort key) – optional: Nếu bạn muốn sắp xếp các mục trong phân vùng dữ liệu, bạn có thể sử dụng khóa sắp xếp. Khóa sắp xếp là tùy chọn và bạn có thể bỏ qua nó nếu không muốn sử dụng tính năng sắp xếp.
Ví dụ, nếu bạn tạo bảng để lưu trữ thông tin người dùng, bạn có thể sử dụng tên người dùng làm khóa phân vùng và thời gian đăng ký làm khóa sắp xếp. Điều này sẽ giúp bạn truy xuất các mục liên quan đến một người dùng cụ thể và sắp xếp chúng theo thời gian đăng ký.
Trong nhiều trường hợp, phần mềm hoặc dịch vụ sẽ có các cài đặt mặc định (default settings) được sử dụng khi không có cài đặt tùy chỉnh (customize settings) được chỉ định.
- Default settings: Đây là các giá trị được cài đặt trước đó hoặc giá trị mặc định của một phần mềm hoặc dịch vụ. Các giá trị này được sử dụng khi không có các giá trị được chỉ định bởi người dùng hoặc quản trị viên.
Ví dụ, khi bạn tải xuống một phần mềm mới, các cài đặt mặc định của phần mềm này sẽ được sử dụng cho đến khi bạn tùy chỉnh chúng.
- Customize settings: Đây là các giá trị mà người dùng hoặc quản trị viên cài đặt theo ý muốn để tùy chỉnh phần mềm hoặc dịch vụ. Việc tùy chỉnh các giá trị này giúp người dùng có thể tối ưu hóa hiệu suất hoặc đáp ứng các yêu cầu cụ thể của họ.
Ví dụ, nếu bạn đang sử dụng một máy chủ web, bạn có thể tùy chỉnh các cài đặt để tối ưu hóa hiệu suất, chẳng hạn như cấu hình kích thước bộ đệm hoặc số lượng kết nối tối đa.
Capacity Calculator là một công cụ được cung cấp bởi Amazon Web Services (AWS) để tính toán tài nguyên (resource) cần thiết cho các dịch vụ AWS như DynamoDB, Amazon RDS, Amazon EC2, và Amazon Redshift.
Trong DynamoDB, Read/Write Capacity Settings là một phần quan trọng trong thiết lập bảng. Nó cho phép bạn quản lý số lượng truy cập dữ liệu đồng thời (concurrency) trong bảng và quyết định cách sử dụng tài nguyên (resource) trong bảng. Có hai chế độ sử dụng tài nguyên:
- On-Demand Capacity Mode: Đây là chế độ mà DynamoDB tự động điều chỉnh tài nguyên để đáp ứng với nhu cầu truy cập dữ liệu. Trong chế độ này, bạn không cần phải cấu hình số lượng RCUs hoặc WCUs, DynamoDB sẽ tự động quản lý tài nguyên cho bảng của bạn. Bạn sẽ chỉ trả tiền cho mỗi yêu cầu đọc hoặc ghi, giá cả sẽ được tính dựa trên số lượng dữ liệu truy cập và tự động điều chỉnh tài nguyên.
- Provisioned Capacity Mode: Đây là chế độ mà bạn phải tự cấu hình số lượng RCUs hoặc WCUs tối đa để đáp ứng với nhu cầu truy cập dữ liệu. Trong chế độ này, bạn cần tính toán số lượng RCUs và WCUs cần thiết để hỗ trợ tốc độ đọc và ghi dữ liệu tối đa trong bảng. DynamoDB sẽ cấp phát tài nguyên dựa trên số lượng RCUs và WCUs đã cấu hình và tính phí dựa trên số lượng RCUs và WCUs đã sử dụng.
Với chế độ On-Demand, DynamoDB sẽ tự động tăng hoặc giảm tài nguyên theo nhu cầu thực tế của bảng của bạn, giúp bạn tiết kiệm chi phí và dễ dàng quản lý bảng của mình. Tuy nhiên, giá cả sử dụng sẽ đắt hơn so với Provisioned Capacity Mode.
Với chế độ Provisioned, bạn có thể dễ dàng tính toán chi phí và quản lý tài nguyên trong bảng của mình, tuy nhiên nếu sử dụng không hiệu quả có thể dẫn đến lãng phí tài nguyên và chi phí cao hơn.
Thông báo “The Demo Table table was created successfully” cho biết bạn đã tạo Table thành công.
Bạn hãy bấm vào table “Demo Table” vừa tạo xong và bấm vào View Items.
Tại đây bạn bấm vào Create item để tạo item mới.
Mình sẽ tạo các item như dưới.
Mình có item đầu tiên.
Mình sẽ tạo item thứ 2.
Và đây là kết quả.