Hệ thống Dữ liệu Phái sinh/Module 3 — Kiến trúc phái sinh: tổng quan
15/21
Bài 15 / 21~10 phútKiến trúc phái sinh (CDC, event sourcing, CQRS)Miễn phí lượt xem

Module 3 — Kiến trúc phái sinh: tổng quan

Ghép batch và stream thành kiến trúc dữ liệu thật: CDC, event sourcing, CQRS, lambda/kappa — và capstone đồ án nối cả track.

TL;DR: Module 3 khép track: dùng batch (Module 1) và stream (Module 2) làm gạch, xây nên các kiến trúc dữ liệu phái sinh thật. CDC biến changelog của database thành stream để đồng bộ index/cache/warehouse. Event sourcing lưu chuỗi sự kiện bất biến rồi dựng lại trạng thái bằng replay. CQRS tách đường ghi khỏi đường đọc, đổi độ trễ nhất-quán-cuối-cùng lấy read model tối ưu. Lambda/Kappa kết hợp batch và stream ở tầng kiến trúc. Kết bằng capstone đồ án nối mọi thứ đã học: một nguồn-sự-thật bất biến, nhiều hệ phái sinh luôn tính lại được.

Vì sao module này tồn tại

Hai module trước dạy hai công cụ: batch (khối bất biến, throughput cao) và stream (dòng vô tận, độ trễ thấp). Nhưng một hệ thật hiếm khi chỉ dùng một cái. Nó có một system of record (database giao dịch), rồi cần lan dữ liệu đó ra hàng loạt hệ phái sinh — chỉ mục tìm kiếm, cache, kho phân tích, model gợi ý — mỗi hệ tối ưu cho một truy vấn. Module này là các mẫu kiến trúc để làm việc lan-toả đó đúng và không bất nhất: đọc changelog thay vì dual-write, lưu sự kiện thay vì ghi đè, tách đọc-ghi, và kết hợp batch với stream.

Sau module này bạn sẽ

  • Explain change data capture (CDC) biến database changelog thành stream để đồng bộ hệ phái sinh.
  • Compare event sourcing và CQRS với CRUD truyền thống, lập luận trade-off.
  • Compare kiến trúc lambda và kappa khi kết hợp batch với stream, chọn theo yêu cầu.
  • Design một hệ dữ liệu phái sinh đầu-cuối nối batch, stream và CDC.

Lộ trình module

flowchart TB
  L1["01 CDC<br/>changelog DB -> stream"] --> L2["02 Event sourcing<br/>luu chuoi su kien"]
  L2 --> L3["03 CQRS<br/>tach doc/ghi"]
  L3 --> L4["04 Lambda vs Kappa<br/>ghep batch + stream"]
  L4 --> L5["05 Capstone<br/>he phai sinh dau-cuoi"]

Bắt đầu ở bài 01 — CDC: đọc chính transaction log của database và phát ra như stream. Bài 02 — Event sourcing lưu chuỗi sự kiện bất biến rồi replay để dựng lại state. Bài 03 — CQRS tách write model khỏi read model và cái giá của nhất quán cuối cùng. Bài 04 — Lambda vs Kappa so hai cách kết hợp batch với stream. Bài 05 — Capstone: bạn tự thiết kế một hệ dữ liệu phái sinh đầu-cuối, nối tất cả những gì đã học.

Yêu cầu trước khi bắt đầu

  • Hoàn thành Module 1 — Batch (input bất biến → output phái sinh) và Module 2 — Stream (Kafka log, windowing).
  • Quen WAL / transaction ở khoá SQL (CDC đọc chính log đó).

Time budget

  • Module: ~1.2 giờ đọc + capstone.
  • 01–04 mỗi bài 11–13 phút; 05 (capstone) ~20 phút; recap ~10 phút.

Cách học module này hiệu quả

  • Giữ một câu hỏi xuyên suốt: "cái nào là nguồn-sự-thật (bất biến), cái nào là phái sinh (tính lại được)?" — mọi mẫu ở đây đều xoay quanh ranh giới đó.
  • Với capstone (bài 05), tự vẽ kiến trúc trước khi xem gợi ý — đây là nơi ba module hội tụ.

Bài tiếp theo: Change Data Capture — biến changelog của DB thành stream

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên