Tổng quan
Amazon QLDB (Quantum Ledger Database) là một dịch vụ ledger database serverless được quản lý hoàn toàn bởi AWS. QLDB được thiết kế để lưu trữ lịch sử thay đổi dữ liệu một cách minh bạch, bất biến (immutable) và có khả năng xác minh mật mã học (cryptographically verifiable).
Khác với cơ sở dữ liệu quan hệ truyền thống chỉ lưu trạng thái hiện tại của dữ liệu, QLDB tự động lưu lại toàn bộ lịch sử thay đổi của dữ liệu trong một journal bất biến, giúp dễ dàng truy vết và kiểm toán.
Đặc điểm chính
- Serverless, không cần quản lý hạ tầng.
- Tự động lưu toàn bộ lịch sử thay đổi dữ liệu.
- Dữ liệu trong journal là immutable (không thể chỉnh sửa hoặc xóa).
- Hỗ trợ tính minh bạch và khả năng xác minh dữ liệu bằng cơ chế mật mã học.
- Hỗ trợ đầy đủ các thuộc tính ACID transaction.
- Sử dụng PartiQL (tương tự SQL) để truy vấn và thao tác dữ liệu.
- Sử dụng Amazon Ion làm định dạng lưu trữ dữ liệu.
Công nghệ sử dụng
PartiQL
QLDB sử dụng PartiQL làm ngôn ngữ truy vấn dữ liệu.
PartiQL là ngôn ngữ truy vấn tương thích với SQL, cho phép thao tác trên dữ liệu quan hệ, JSON và các dữ liệu bán cấu trúc khác.
Ví dụ:
SELECT * FROM VehicleRegistration
WHERE VIN = '123456789';
Tài liệu:
https://partiql.org/tutorial.html
Amazon Ion
Amazon Ion là định dạng dữ liệu mở rộng từ JSON, hỗ trợ thêm nhiều kiểu dữ liệu phong phú như:
- Decimal chính xác cao
- Timestamp
- Binary
- Symbol
- Annotation
Điều này giúp QLDB lưu trữ dữ liệu có độ chính xác cao hơn JSON thông thường.
Tài liệu:
https://amazon-ion.github.io/ion-docs
Các trường hợp sử dụng
QLDB phù hợp với các hệ thống cần khả năng lưu vết và kiểm toán dữ liệu.
Ví dụ:
- Lưu trữ giao dịch ngân hàng.
- Quản lý lịch sử hợp đồng bảo hiểm.
- Theo dõi chuỗi cung ứng (Supply Chain).
- Quản lý hồ sơ đăng ký phương tiện.
- Hệ thống quản lý tài sản.
- Quản lý giấy phép và chứng nhận.
Cấu trúc
QLDB là một cơ sở dữ liệu ledger bao gồm hai thành phần chính:
Serverless- Hỗ trợ
OLTPworkload - Bao gồm
Journal+tables=ledger
Journal
Journal là thành phần cốt lõi của QLDB.
Đặc điểm:
- Chỉ cho phép ghi (append-only).
- Không hỗ trợ update hoặc delete các bản ghi đã tồn tại.
- Lưu trữ mọi thay đổi dữ liệu dưới dạng các block được liên kết với nhau.
- Không sử dụng cơ chế phân tán như blockchain.
- Dữ liệu được lưu trữ tập trung và quản lý bởi AWS.
Mỗi thay đổi phát sinh từ transaction đều được ghi vào journal.
Ngay cả khi dữ liệu bị xóa khỏi bảng, lịch sử thay đổi vẫn tồn tại trong journal và có thể truy xuất lại.
Tables
Tables chứa trạng thái dữ liệu hiện tại để phục vụ các truy vấn OLTP.
Đặc điểm:
- Dữ liệu được lưu dưới định dạng Amazon Ion.
- Hỗ trợ index để tối ưu truy vấn.
- Lưu cả dữ liệu hiện tại và thông tin lịch sử liên quan.
- Được đồng bộ tự động từ journal.

So sánh Relational DB và Ledger

Views trong QLDB
QLDB cung cấp ba loại view để truy cập dữ liệu.
User View
Hiển thị dữ liệu mới nhất của bảng.
SELECT * FROM VehicleRegistration;
Đây là view mặc định mà ứng dụng thường sử dụng.
Committed View
Bao gồm dữ liệu hiện tại và metadata của transaction.
SELECT *
FROM _ql_committed_VehicleRegistration;
Metadata bổ sung:
- Transaction ID
- Commit timestamp
- Hash thông tin liên quan
History View
Hiển thị toàn bộ lịch sử thay đổi của dữ liệu.
SELECT *
FROM history(VehicleRegistration) AS h
WHERE h.metadata.id = '11sPfkrm0lUS0X02Y';
Bao gồm:
- Dữ liệu hiện tại.
- Dữ liệu đã bị sửa đổi.
- Dữ liệu đã bị xóa.
- Metadata của từng lần thay đổi.
Data verification
QLDB sử dụng cơ chế digest với các block trong journal
Mỗi block sẽ có một signature được mã hoá SHA-256 với Merkle tree-based model

QLDB sẽ so sánh signature với value được digest tính toán ra (nếu sai sẽ có lỗi IllegalArgumentException)

Có thể sử dụng AWS Console hoặc API
Backup và Restore
- QLDB
KHÔNGhỗ trợ các dạng backup và restore KHÔNGhỗ trợ PITR- Workaround: tạo
export jobđể exportdata trong journaltớiS3- Usecases: analytics, auditting, chuyển data sang hệ thống khác, backup, …..
- Giới hạn
2 concurrent export jobs

Stream

High availability và Durability
- Data trong QLDB Ledger được copy ra
3 AZs

- Trong mỗi AZ, data cũng có
nhiều bản copies⇒Durability Action ghichỉ được coi là thành công khi data đượclưu vào trong storage của nhiều AZs- Cross-region
KHÔNGhỗ trợ- Workaround ⇒ export journal tới S3 rồi copy tới region khác

Security
- Sử dụng
IAMđể authen và author - Hỗ trợ encryption
at rest(chỉ có thể dùng AWS Owned key,KHÔNG hỗ trợ CMKs) và in transit - VPC – sử dụng
AWS PrivateLinkđể giao tiếp đến QLDB

Monitoring
- Kết hợp với
CloudWatch - Một số metrics: JournalStorage, IndexedStorage, CommandLatency, ….
- QLDB hỗ trợ
log filesvới một số thông tin thêm - CloudTrail
Pricing
- Storage – mỗi
GB - IOs – đơn vị
triệu request - Data transfer
