Năm loại tính trong suốt (Transparency) của cơ sở dữ liệu phân tán
1. Tổng quan
A. Định nghĩa
Cơ sở dữ liệu phân tán (DDB) là hệ thống làm cho dữ liệu được lưu trữ và quản lý phân chia về mặt vật lý tại nhiều site trông như một CSDL thống nhất duy nhất về mặt logic đối với người dùng. Khi đó, mức độ "che giấu khỏi người dùng sự thật rằng dữ liệu đang được phân tán" được gọi là tính trong suốt (Transparency).
Bản chất của tính trong suốt là che giấu độ phức tạp (abstraction). Dữ liệu thực sự nằm ở đâu, bị chia thành bao nhiêu mảnh, có bao nhiêu bản sao chỉ là chuyện nội bộ của hệ thống; người dùng chỉ cần gửi một câu SQL như truy vấn một CSDL duy nhất. Vì không cần biết chi tiết về phân tán nên việc phát triển ứng dụng trở nên đơn giản, và đạt được tính độc lập vị trí — dù cách bố trí dữ liệu thay đổi cũng không cần sửa ứng dụng.
B. Bối cảnh xuất hiện và sự cần thiết
Khi dữ liệu tập trung vào một máy chủ duy nhất, máy chủ đó vừa là nút thắt cổ chai vừa là điểm lỗi đơn (SPOF), và người dùng ở xa về địa lý phải chịu độ trễ do truy cập từ xa. Để giải quyết điều này, dữ liệu phải được phân tán và sao chép ra nhiều khu vực, nhiều node, nhưng khi đó phát sinh gánh nặng là ứng dụng phải bận tâm từng chút "kết nối node nào và đọc bản sao nào". Tính trong suốt cần thiết chính là để hệ thống gánh thay gánh nặng này, vừa tận dụng lợi ích của phân tán (tính sẵn sàng, khả năng mở rộng, tính cục bộ) vừa duy trì cho người dùng sự đơn giản của một CSDL duy nhất.
2. Năm loại tính trong suốt
flowchart TB
T[Tính trong suốt của CSDL phân tán] --> L[Trong suốt vị trí]
T --> F[Trong suốt phân mảnh]
T --> R[Trong suốt nhân bản]
T --> C[Trong suốt đồng thời]
T --> A[Trong suốt sự cố]
Năm loại tính trong suốt khác nhau ở chỗ "che giấu điều gì khỏi người dùng". Ba loại đầu (vị trí, phân mảnh, nhân bản) che giấu cách bố trí dữ liệu, còn hai loại sau (đồng thời, sự cố) bảo đảm tính đồng thời và độ tin cậy.
- Trong suốt vị trí (Location): Có thể truy cập dữ liệu mà không cần biết nó được lưu trữ vật lý tại site nào. Hệ thống tham chiếu danh mục toàn cục (global catalog) để định tuyến truy vấn đến node tương ứng. Ví dụ, dù thông tin hội viên được chia ra hai trung tâm dữ liệu ở Seoul và Busan, ứng dụng chỉ cần thực thi
SELECT * FROM member. - Trong suốt phân mảnh (Fragmentation): Không cần ý thức việc một bảng bị chia thành nhiều mảnh (fragment) để lưu trữ. Có phân mảnh ngang (theo hàng, ví dụ: đơn hàng theo khu vực) và phân mảnh dọc (theo cột), và hệ thống ghép lại các mảnh để trả về kết quả hoàn chỉnh.
- Trong suốt nhân bản (Replication): Người dùng không cần biết việc tồn tại nhiều bản sao của cùng một dữ liệu và phải đồng bộ chúng khi cập nhật. Người dùng thấy như đang xử lý một dữ liệu duy nhất nhưng bên trong có giao thức nhất quán giữa các bản sao hoạt động.
- Trong suốt đồng thời (Concurrency): Dù nhiều giao dịch thực thi đồng thời tại nhiều site, vẫn bảo đảm tính tuần tự hóa (serializability) như thể từng giao dịch được thực hiện tuần tự một mình. Khóa phân tán và dấu thời gian (timestamp) ngăn chặn sự can thiệp lẫn nhau.
- Trong suốt sự cố (Failure): Dù một số site hoặc liên kết truyền thông gặp sự cố, tính nguyên tử (All-or-Nothing) và tính nhất quán của giao dịch vẫn được duy trì. Việc commit được điều phối để lỗi cục bộ không làm ô nhiễm toàn bộ.
| Tính trong suốt | Đối tượng che giấu | Hiệu quả cốt lõi |
|---|---|---|
| Vị trí | Vị trí lưu trữ vật lý | Độc lập vị trí |
| Phân mảnh | Việc chia mảnh dữ liệu | Cung cấp khung nhìn thống nhất |
| Nhân bản | Sự tồn tại·số lượng bản sao | Khung nhìn duy nhất nhất quán |
| Đồng thời | Can thiệp giữa các thực thi đồng thời | Bảo đảm tính tuần tự hóa |
| Sự cố | Sự cố cục bộ | Tính nguyên tử·khôi phục |
3. Các công nghệ triển khai liên quan
Mỗi loại tính trong suốt không tự nhiên mà có, mà được hỗ trợ bởi các công nghệ xử lý phân tán tương ứng như dưới đây. Đặc biệt, commit hai pha (2PC) — cốt lõi của trong suốt sự cố — bảo đảm tính nguyên tử bằng cách bộ điều phối (coordinator) hỏi 'chuẩn bị (prepare)' tới mọi site tham gia và chỉ ra lệnh 'commit' khi tất cả đồng ý, ngăn việc phản ánh cục bộ khi chỉ một số node được commit. Tuy nhiên, 2PC có điểm yếu chặn (blocking): nếu bộ điều phối chết thì các bên tham gia bị kẹt ở trạng thái chờ, vì vậy gần đây 3PC giảm nhẹ vấn đề này, các thuật toán đồng thuận (Paxos, Raft) và Saga dựa trên giao dịch bù trừ được dùng kèm.
| Tính trong suốt | Công nghệ hỗ trợ |
|---|---|
| Vị trí·Phân mảnh | Danh mục toàn cục, xử lý·tối ưu hóa truy vấn phân tán |
| Nhân bản | Đồng bộ bản sao, giao thức nhất quán (đồng bộ·bất đồng bộ) |
| Đồng thời | Khóa phân tán·2PL, sắp xếp theo dấu thời gian |
| Sự cố | Commit hai pha (2PC)·3PC, khôi phục dựa trên log |
4. Ưu nhược điểm
Tính trong suốt càng cao thì sự tiện lợi khi sử dụng càng lớn, nhưng hệ thống càng phải gánh thay sự tiện lợi đó nên chi phí nội bộ tăng lên. Ví dụ, để bảo đảm hoàn toàn trong suốt nhân bản thì phải đồng bộ ngay mọi bản sao (sao chép đồng bộ), điều này làm tăng độ trễ cập nhật và chi phí truyền thông. Ngược lại, nếu dùng sao chép bất đồng bộ vì hiệu năng thì giá trị giữa các bản sao tạm thời khác nhau và tính nhất quán bị lung lay. Như vậy, tính trong suốt, tính nhất quán và hiệu năng là quan hệ kéo co lẫn nhau.
| Ưu điểm | Nhược điểm |
|---|---|
| Bảo đảm tính sẵn sàng·khả năng mở rộng·tính cục bộ dữ liệu | Tăng độ phức tạp thiết kế·vận hành |
| Đơn giản hóa ứng dụng nhờ truy cập trong suốt | Chi phí đồng bộ·duy trì nhất quán, chi phí truyền thông |
5. Những điểm cần cân nhắc và hàm ý
- Đánh đổi của định lý CAP: Phân vùng mạng (P) là không thể tránh, nên hệ thống phân tán phải chọn ưu tiên tính nhất quán (C) hay tính sẵn sàng (A). Chẳng hạn, nếu tính chính xác quan trọng như tài chính thì chọn C, nếu không gián đoạn quan trọng như dịch vụ quy mô lớn thì chọn A.
- Lựa chọn mô hình nhất quán: Nếu chấp nhận nhất quán cuối cùng (eventual consistency) thay cho nhất quán mạnh (2PC), ta đạt được hiệu năng và tính sẵn sàng nhưng phải chịu sự không nhất quán tức thời. Cần xác định mức phù hợp với yêu cầu.
- Liên kết·triển vọng: Các NewSQL/CSDL phân tán toàn cầu như Google Spanner, CockroachDB theo đuổi đồng thời tính nhất quán mạnh và khả năng mở rộng bằng TrueTime và thuật toán đồng thuận, còn NoSQL phát triển theo hướng lấy tính sẵn sàng làm trung tâm. Cốt lõi thực tiễn của giao dịch phân tán là kết hợp 2PC và Saga phù hợp với tình huống để cân bằng tính nhất quán và hiệu năng.
Tóm tắt một câu: Tính trong suốt của CSDL phân tán gồm năm loại vị trí·phân mảnh·nhân bản·đồng thời·sự cố, che giấu sự phân tán, sao chép, đồng thời và sự cố cục bộ khỏi người dùng để hệ thống trông như một CSDL duy nhất; chúng được triển khai bằng danh mục toàn cục, đồng bộ bản sao, khóa phân tán, 2PC… nhưng phải cân bằng với hiệu năng trong bối cảnh đánh đổi CAP và tính nhất quán.