Amazon QLDB – Quantum Ledger Database

4 min read

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ợ OLTP workload
  • 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ÔNG hỗ trợ các dạng backup và restore
  • KHÔNG hỗ trợ PITR
  • Workaround: tạo export job để export data trong journal tới S3
    • 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 copiesDurability
  • Action ghi chỉ được coi là thành công khi data được lưu vào trong storage của nhiều AZs
  • Cross-region KHÔNG hỗ 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 files với một số thông tin thêm
  • CloudTrail

Pricing

  • Storage – mỗi GB
  • IOs – đơn vị triệu request
  • Data transfer
Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *