Data System

Định nghĩa

Data system là một hoặc nhiều thành phần lưu trữ và xử lý dữ liệu được phối hợp để cung cấp một service cùng các guarantee xác định. Khái niệm này bao quát database, cache, search index, message queue và batch/stream processing vì ranh giới giữa các nhóm công cụ ngày càng mờ.

Mental model

Các công cụ đa dụng
database + cache + search index + message queue
              ↓ application code phối hợp
API thống nhất + guarantee của service
              ↓
data system chuyên biệt

Cơ chế hình thành một data system tổng hợp

  1. Mỗi công cụ đảm nhận workload phù hợp với access pattern và đặc tính performance của nó.
  2. Application code kết nối các công cụ và giữ dữ liệu giữa chúng đồng bộ.
  3. API che giấu chi tiết triển khai khỏi client.
  4. Toàn bộ tổ hợp cung cấp một tập guarantee, chẳng hạn cách cache được cập nhật khi có write.

Trách nhiệm của data system designer

  • Giữ dữ liệu đúng và đầy đủ khi bên trong xảy ra lỗi.
  • Duy trì performance chấp nhận được khi một thành phần degraded.
  • Có phương án xử lý khi data volume, traffic hoặc complexity tăng.
  • Thiết kế API phản ánh service contract mà không buộc client hiểu kiến trúc nội bộ.
  • Xác định rõ guarantee giữa database và các thành phần dẫn xuất như cache hoặc search index.

Trade-off theo bối cảnh

Không có một tổ hợp công cụ tối ưu cho mọi ứng dụng. Thiết kế bị chi phối bởi yêu cầu sản phẩm, kỹ năng đội ngũ, hệ thống legacy, thời hạn, mức chấp nhận rủi ro và ràng buộc pháp lý.

Hình minh họa

Ý chính: Một service được tạo từ nhiều thành phần đa dụng sẽ trở thành một data system chuyên biệt khi application code phối hợp chúng và API cung cấp một giao diện thống nhất.

Nguồn: Designing Data-Intensive Applications — Chapter 1, “Thinking About Data Systems”, trang 4–5.

Câu hỏi review

  • Vì sao ranh giới giữa database, cache và message queue ngày càng mờ?
  • Khi nào một application developer đồng thời trở thành data system designer?
  • API che giấu được điều gì, và điều gì vẫn phải được xử lý ở tầng phối hợp nội bộ?
  • Guarantee nào cần được xác định khi cache và search index nằm ngoài primary database?

Liên kết