

Giới thiệu khái niệm và một số mô hình cơ sở dữ liệu phân tán
- 10-06-2025
- Toanngo92
- 0 Comments
Mục lục
🧠 1. Định nghĩa cơ bản
Cơ sở dữ liệu phân tán là một hệ thống cơ sở dữ liệu trong đó dữ liệu không được lưu trữ tại một địa điểm duy nhất, mà được chia nhỏ và phân bố tại nhiều vị trí khác nhau (gọi là site), nhưng vẫn hoạt động như một hệ thống thống nhất.
Ví dụ:
- Chi nhánh Hà Nội lưu dữ liệu khách hàng phía Bắc.
- Chi nhánh TP.HCM lưu dữ liệu khách phía Nam.
- Tất cả chi nhánh có thể truy vấn và cập nhật dữ liệu như một hệ thống duy nhất.
🔍 2. Hai cơ chế chính trong cơ sở dữ liệu phân tán
A. Phân mảnh dữ liệu (Fragmentation)
Dữ liệu được chia nhỏ và phân tán đến các site khác nhau.
- Phân mảnh dọc (Vertical Fragmentation): chia dữ liệu theo cột
- Ví dụ: bảng
Customers
có thể tách ra thành bảngCustomerPersonalInfo
(tên, giới tính) vàCustomerPayment
(phương thức thanh toán).
- Ví dụ: bảng
- Phân mảnh ngang (Horizontal Fragmentation): chia dữ liệu theo dòng
- Ví dụ: dữ liệu khách hàng ở miền Bắc lưu ở site A, miền Nam lưu ở site B.
✅ Lợi ích: Giảm tải mạng, tăng hiệu năng truy xuất tại địa phương.
B. Sao chép dữ liệu (Replication)
Một bản sao dữ liệu được lưu tại nhiều vị trí khác nhau để:
- Tăng tính sẵn sàng
- Hạn chế rủi ro mất mát dữ liệu
⚠️ Tuy nhiên cần có cơ chế đồng bộ → tránh mâu thuẫn dữ liệu giữa các bản sao.
⚙️ 3. Hệ thống phân tán vẫn phải “giống như một hệ thống tập trung”
Theo nguyên lý thiết kế chuẩn:
“A distributed database should look exactly like a centralized one.”
Tức là:
- Người dùng không cần biết dữ liệu nằm ở đâu
- Vẫn sử dụng các câu lệnh SQL thông thường
- Tính trong suốt (transparency) được đảm bảo
✅ Giúp ẩn toàn bộ sự phức tạp bên dưới, làm cho việc thao tác dữ liệu trở nên đơn giản và nhất quán như làm việc với CSDL tập trung.
🔐 4. Ba mức độ “tính trong suốt” cần đạt được
Loại tính trong suốt | Mô tả |
---|---|
Vị trí (Location) | Người dùng không cần biết dữ liệu đang ở site nào |
Phân mảnh (Fragmentation) | Không cần biết dữ liệu đã bị chia nhỏ thế nào |
Sao chép (Replication) | Không cần biết dữ liệu có bao nhiêu bản sao hoặc nằm ở đâu |
✅ Đây là tiêu chí giúp hệ thống phân tán dễ sử dụng và bảo trì.
🏁 5. Tự chủ địa phương (Local Autonomy)
Mỗi site có thể:
- Vận hành độc lập
- Có thể xử lý truy vấn cục bộ mà không phụ thuộc vào site trung tâm
⚠️ Điều này rất quan trọng trong môi trường như:
- Đa quốc gia (multi-national)
- Doanh nghiệp có nhiều chi nhánh độc lập
Tóm tắt nội dung
Yếu tố | Mô tả |
---|---|
Khái niệm chính | CSDL được chia ra và phân tán tại nhiều địa điểm |
Kỹ thuật nền tảng | Phân mảnh và sao chép dữ liệu |
Nguyên lý vận hành | Giống như hệ thống tập trung |
Yêu cầu về tính trong suốt | Không cần biết chi tiết nội bộ dữ liệu được phân bố ra sao |
Tự chủ địa phương | Mỗi site hoạt động độc lập, nhưng vẫn có thể kết nối hệ thống toàn cục |
📍 Tại sao cần Cơ sở dữ liệu phân tán?
🔑 1. Nhu cầu thực tế trong doanh nghiệp hiện đại
Cùng với sự phát triển mạnh mẽ của công nghệ và toàn cầu hóa, các tổ chức hiện đại thường:
- Có nhiều chi nhánh, văn phòng phân tán về mặt địa lý
- Có khối lượng dữ liệu lớn phát sinh từ nhiều nguồn khác nhau
- Cần chia sẻ, truy cập và quản lý dữ liệu linh hoạt giữa các bộ phận, địa điểm
✅ Vì thế, CSDL tập trung truyền thống trở nên không đủ linh hoạt và kém hiệu quả trong bối cảnh phân tán.
🧠 2. Các lý do cụ thể để triển khai CSDL phân tán
Lý do | Mô tả |
---|---|
🔄 Tăng quy mô doanh nghiệp | Các công ty ngày càng mở rộng ra nhiều khu vực, vùng miền, quốc gia. Việc lưu dữ liệu tập trung sẽ gây chậm trễ trong truy cập và xử lý. |
🌐 Toàn cầu hóa & công ty đa quốc gia | Doanh nghiệp hoạt động xuyên quốc gia cần hệ thống có thể vận hành tại nhiều quốc gia nhưng vẫn chia sẻ dữ liệu. |
📊 Chia sẻ dữ liệu giữa các bộ phận | Ví dụ: bộ phận bán hàng cần truy cập dữ liệu kho, kế toán cần dữ liệu giao dịch… |
🧩 Đa dạng hệ thống & nhu cầu | Mỗi chi nhánh có thể có yêu cầu hệ thống khác nhau (hệ điều hành, CSDL, giao diện…) |
⚡ Tăng hiệu năng | Truy cập cục bộ vào dữ liệu tại địa phương nhanh hơn nhiều so với truy vấn từ hệ thống trung tâm |
🚀 Hỗ trợ mở rộng linh hoạt | Có thể thêm site mới (ví dụ: mở chi nhánh mới) mà không làm ảnh hưởng đến toàn bộ hệ thống hiện tại |
🚫 Vấn đề nếu không dùng CSDL phân tán
Nếu chỉ dùng CSDL tập trung:
- Truy cập từ xa sẽ chậm và dễ nghẽn
- Tăng độ trễ mạng cho các chi nhánh
- Khó đảm bảo sẵn sàng khi một điểm trung tâm gặp sự cố
- Giảm khả năng mở rộng linh hoạt cho tổ chức đang tăng trưởng
💡 Cơ sở dữ liệu phân tán là giải pháp cho bài toán hiện đại
Vấn đề | Giải pháp từ CSDL phân tán |
---|---|
Chia sẻ dữ liệu giữa nhiều địa điểm | Phân phối dữ liệu theo vị trí |
Truy cập nhanh ở từng chi nhánh | Dữ liệu được lưu và truy cập cục bộ |
Khó mở rộng hệ thống tập trung | Phân tán giúp thêm site dễ dàng |
Rủi ro mất dữ liệu trung tâm | Có thể sao lưu và phân phối nhiều bản sao (replication) |
Khác biệt nền tảng | Hỗ trợ hệ thống không đồng nhất (heterogeneous DDBMS) |
Phân mảnh dữ liệu
Phân tích: Phân mảnh dữ liệu trong Cơ sở dữ liệu phân tán
🔍 1. Phân mảnh là gì?
Phân mảnh dữ liệu (Fragmentation) là kỹ thuật chia nhỏ bảng dữ liệu thành nhiều phần (fragment), để lưu trữ và quản lý tại các site khác nhau trong hệ thống phân tán.
➡️ Mục tiêu:
- Phân bổ dữ liệu hợp lý theo địa điểm sử dụng
- Tăng hiệu năng truy vấn cục bộ
- Giảm lưu lượng truyền tải trên mạng
- Dễ mở rộng, bảo trì
🧩 2. Có mấy loại phân mảnh?
CSDL phân tán sử dụng 3 loại phân mảnh chính:
Loại | Mô tả | Câu lệnh SQL tương ứng |
---|---|---|
Phân mảnh ngang (Horizontal Fragmentation) | Chia bảng theo dòng dữ liệu, dựa trên điều kiện cụ thể | SELECT * FROM Customers WHERE City = 'Manchester' |
Phân mảnh dọc (Vertical Fragmentation) | Chia bảng theo cột, giữ lại khóa chính để JOIN khi cần | SELECT CustomerID, Name, Sex FROM Customers |
Phân mảnh kết hợp (Mixed Fragmentation) | Kết hợp cả hai: trước phân mảnh ngang, sau đó phân mảnh dọc (hoặc ngược lại) | Nhiều câu lệnh kết hợp WHERE và SELECT |
📘 A. Phân mảnh ngang (Horizontal Fragmentation)
- Mỗi phân mảnh chứa một tập con các bản ghi
- Điều kiện thường dựa vào vị trí địa lý, loại khách hàng, khu vực hoạt động…
Ví dụ:
sqlCopyEdit-- Dữ liệu khách hàng ở Manchester
SELECT * FROM Customers WHERE Area = 'Manchester';
Ưu điểm:
- Truy vấn tại địa phương rất nhanh
- Trực quan, dễ hiểu
Cần đảm bảo:
- Tập hợp các phân mảnh phải có thể ghép lại thành bảng gốc thông qua UNION
📗 B. Phân mảnh dọc (Vertical Fragmentation)
- Chia bảng theo các cột liên quan đến nghiệp vụ khác nhau
- Cần giữ lại Primary Key để có thể JOIN lại khi cần
Ví dụ:
Fragment 1 | Fragment 2 |
---|---|
CustomerID, Name, Sex | CustomerID, Area, PaymentType |
Khôi phục bảng gốc bằng:
sqlCopyEditSELECT * FROM Fragment1
JOIN Fragment2 USING (CustomerID);
Ưu điểm:
- Mỗi site chỉ lưu phần dữ liệu mình cần
- Tiết kiệm tài nguyên, tăng bảo mật (VD: ẩn thông tin thanh toán ở site không cần)
📙 C. Phân mảnh kết hợp (Mixed Fragmentation)
- Phức tạp hơn nhưng linh hoạt nhất
- Ví dụ: chỉ lấy khách hàng ở Manchester, nhưng chỉ lưu tên và phương thức thanh toán
Kết quả:
sqlCopyEditCustomerID | Name | PaymentType
-----------|------|-------------
8 | Singh| Card
2 | Rice | Cash
Ưu điểm:
- Phù hợp với hệ thống phức tạp, dữ liệu lớn, truy vấn đặc thù
📌 3. Nguyên tắc khi phân mảnh dữ liệu
Để đảm bảo tính toàn vẹn và hiệu quả, phân mảnh cần tuân thủ các nguyên tắc:
Nguyên tắc | Mô tả |
---|---|
Completeness (Đầy đủ) | Toàn bộ dữ liệu gốc phải có thể được tạo lại từ các phân mảnh |
Reconstruction (Có thể phục hồi) | Phải có thể dùng UNION , JOIN để khôi phục bảng gốc |
Disjointness (Không chồng lặp – với phân mảnh ngang) | Một bản ghi chỉ nằm trong một phân mảnh |
Replication – Sao chép dữ liệu trong CSDL phân tán
🧠 1. Khái niệm Replication
Replication là quá trình tạo ra nhiều bản sao của cùng một dữ liệu và lưu trữ tại nhiều site khác nhau trong hệ thống phân tán.
Ví dụ:
- Bảng
Customers
có thể được sao chép toàn bộ và lưu tại Site A và Site B. - Người dùng ở bất kỳ site nào cũng có thể truy cập dữ liệu ngay tại chỗ, không cần truy vấn qua mạng.
✅ 2. Mục tiêu của Replication
- Tăng tính sẵn sàng: Nếu một site gặp sự cố, site khác vẫn có dữ liệu.
- Tăng tốc độ truy vấn: Người dùng truy cập dữ liệu gần nhất (local).
- Giảm độ trễ mạng: Hạn chế phụ thuộc vào mạng WAN/chậm trễ truy xuất.
⚠️ 3. Vấn đề phải giải quyết khi dùng replication
Vấn đề | Mô tả |
---|---|
Đồng bộ dữ liệu | Khi một bản ghi bị thay đổi, các bản sao khác phải cập nhật kịp thời |
Xung đột cập nhật (Conflict Resolution) | Nếu hai site cùng sửa một bản ghi tại cùng thời điểm, hệ thống cần quyết định bản nào đúng |
Tăng chi phí lưu trữ | Lưu nhiều bản sao sẽ chiếm thêm không gian đĩa |
Phức tạp hóa hệ thống | Cần cơ chế kiểm tra, phát hiện và xử lý xung đột tự động |
🔧 4. Các kiểu replication phổ biến
Kiểu replication | Mô tả | Ví dụ |
---|---|---|
Full replication | Sao chép toàn bộ CSDL tới mỗi site | Site A, B, C đều chứa full DB |
Partial replication | Chỉ sao chép một phần dữ liệu cần thiết tới mỗi site | Site A chứa dữ liệu miền Bắc |
Snapshot replication | Tạo ảnh chụp định kỳ | Cập nhật mỗi ngày một lần |
Real-time (synchronous) | Đồng bộ ngay khi có thay đổi | Gần như không có độ trễ, nhưng tốn tài nguyên |
Asynchronous | Cập nhật sau một khoảng thời gian | Đỡ tốn tài nguyên, chấp nhận trễ nhẹ |
🧊 Transparency – Tính trong suốt
🌟 1. Khái niệm
Tính trong suốt trong hệ thống phân tán là khả năng ẩn đi sự phức tạp nội tại của việc phân bố dữ liệu, khiến người dùng cảm nhận như đang làm việc với một hệ thống tập trung duy nhất.
🔍 2. Các loại tính trong suốt
Loại transparency | Mô tả |
---|---|
Vị trí (Location transparency) | Người dùng không cần biết dữ liệu nằm ở site nào |
Phân mảnh (Fragmentation transparency) | Người dùng không thấy dữ liệu đã bị chia nhỏ hay cách chia |
Sao chép (Replication transparency) | Người dùng không biết có bao nhiêu bản sao của dữ liệu |
📌 3. Ý nghĩa của Transparency
Lợi ích | Giải thích |
---|---|
Đơn giản hóa truy vấn | Người dùng có thể viết truy vấn SQL như trên hệ thống tập trung |
Tăng khả năng mở rộng | Có thể thêm site hoặc bản sao mà không cần thay đổi truy vấn của người dùng |
Giảm rủi ro lỗi | Không cần quan tâm đến chi tiết kỹ thuật, tránh sai sót |
Bảo mật tốt hơn | Hệ thống kiểm soát truy cập và đồng bộ hóa nội bộ, người dùng không tiếp xúc với tầng vật lý |
🧠 4. Tương quan giữa replication và transparency
- Khi sử dụng replication, hệ thống phải đảm bảo replication transparency để:
- Không ảnh hưởng đến truy vấn
- Không gây ra lỗi do xung đột bản sao
- Không yêu cầu người dùng biết cách hệ thống đồng bộ
Ưu điểm và Nhược điểm của CSDL phân tán
✅ 1. ƯU ĐIỂM CỦA CƠ SỞ DỮ LIỆU PHÂN TÁN
Việc triển khai hệ thống CSDL phân tán đem lại nhiều lợi ích rõ ràng cho tổ chức:
Ưu điểm | Mô tả chi tiết |
---|---|
📌 Mô phỏng theo cơ cấu tổ chức (Emulating organisational structure) | Mỗi site/quốc gia/chi nhánh có thể quản lý phần dữ liệu riêng, phản ánh đúng cách tổ chức vận hành trong thực tế |
🧠 Tăng quyền kiểm soát cục bộ (Greater control) | Mỗi địa phương có thể xử lý nghiệp vụ độc lập, mà không cần phụ thuộc vào trung tâm |
🔁 Tăng tính sẵn sàng (Improved availability) | Nếu một site gặp lỗi, các site còn lại vẫn truy cập được dữ liệu nhờ replication |
🔒 Tăng độ tin cậy (Greater reliability) | Dữ liệu có thể được sao lưu tại nhiều nơi – tránh mất mát toàn bộ dữ liệu |
⚡ Hiệu suất tốt hơn (Better performance) | Truy vấn dữ liệu gần tại site cục bộ nhanh hơn nhiều so với truy vấn từ xa |
📈 Dễ dàng mở rộng (Easier growth/scalability) | Có thể thêm site mới, dữ liệu mới mà không ảnh hưởng đến hệ thống hiện tại |
❌ 2. NHƯỢC ĐIỂM CỦA CSDL PHÂN TÁN
Dù có nhiều lợi ích, hệ thống CSDL phân tán vẫn tồn tại không ít thách thức:
Nhược điểm | Phân tích |
---|---|
🧩 Phức tạp về cấu trúc (Complexity) | Thiết kế hệ thống phân tán đòi hỏi hiểu sâu về phân mảnh, đồng bộ, xử lý phân tán |
💰 Chi phí cao (Cost) | Cần đầu tư vào phần cứng, hạ tầng mạng, phần mềm, và nhân lực có chuyên môn |
🔐 Bảo mật (Security) | Nhiều site → tăng nguy cơ bị tấn công, khó kiểm soát toàn diện |
⚠️ Kiểm soát toàn vẹn dữ liệu khó (Integrity control) | Khó đảm bảo tất cả bản sao đồng bộ đúng lúc, dễ xảy ra mâu thuẫn |
📚 Thiếu tiêu chuẩn thống nhất (Lack of standards) | Các hệ thống CSDL không đồng nhất (heterogeneous) có thể thiếu tương thích |
🧪 Thiếu kinh nghiệm (Lack of experience) | Không nhiều đội ngũ có kỹ năng triển khai và duy trì hệ thống phân tán quy mô lớn |
🧠 Thiết kế phức tạp hơn (Design more complex) | Phải tính đến phân mảnh, vị trí dữ liệu, cấu trúc mạng, chiến lược đồng bộ, tối ưu truy vấn… |
📊 Bảng tổng hợp so sánh ưu – nhược điểm
Tiêu chí | Ưu điểm | Nhược điểm |
---|---|---|
Cấu trúc tổ chức | Phản ánh thực tế, tự chủ cục bộ | Cần kiến trúc phức tạp |
Hiệu năng | Truy cập nhanh tại địa phương | Khó tối ưu truy vấn liên site |
Độ tin cậy | Tăng nhờ replication | Phải giải quyết xung đột dữ liệu |
Mở rộng | Dễ thêm site mới | Khó duy trì đồng bộ giữa các site |
Chi phí | Linh hoạt lâu dài | Chi phí đầu tư ban đầu lớn |
Quản lý | Tùy chỉnh theo nhu cầu từng site | Khó bảo trì tổng thể |
Các loại CSDL phân tán
Trong thực tế, không phải tất cả các hệ thống CSDL phân tán đều giống nhau. Chúng được phân loại dựa trên mức độ đồng nhất về phần mềm, phần cứng và hệ điều hành giữa các site.
🟢 1. Homogeneous Distributed Database System (Hệ thống phân tán đồng nhất)
🧠 Khái niệm:
Là hệ thống mà tất cả các site sử dụng cùng một hệ quản trị CSDL (DBMS) và hệ điều hành giống nhau.
Ví dụ:
- Site 1: Windows + Oracle
- Site 2: Windows + Oracle
- Site 3: Windows + Oracle
✅ Ưu điểm:
- Dễ triển khai và bảo trì
- Truy vấn và giao tiếp giữa các site đơn giản hơn
- Các công cụ và ngôn ngữ truy vấn đồng bộ
⚠️ Nhược điểm:
- Thiếu linh hoạt trong việc kết hợp các công nghệ khác nhau
- Khó tích hợp với hệ thống cũ hoặc bên thứ ba
🔴 2. Heterogeneous Distributed Database System (Hệ thống phân tán không đồng nhất)
🧠 Khái niệm:
Các site sử dụng các hệ quản trị CSDL khác nhau, có thể cả hệ điều hành khác nhau.
Ví dụ:
- Site 1: Windows + Oracle
- Site 2: Windows + MS SQL Server
- Site 3: Unix + Informix
✅ Ưu điểm:
- Tính linh hoạt cao, dễ tích hợp hệ thống hiện có
- Phù hợp với môi trường đa dạng, công ty nhiều hệ thống kế thừa (legacy)
⚠️ Nhược điểm:
- Giao tiếp giữa các site phức tạp hơn
- Khó đồng bộ hóa, phải xử lý các vấn đề tương thích dữ liệu và truy vấn
- Tốn nhiều công sức lập trình, bảo trì
🟡 3. Federated Database System (Hệ thống cơ sở dữ liệu liên kết tự trị)
🧠 Khái niệm:
Mỗi site là một hệ thống CSDL tự trị, độc lập, không có sự tích hợp dữ liệu thường xuyên. Các site chỉ chia sẻ dữ liệu khi cần.
Đặc điểm chính:
- Không có kho dữ liệu trung tâm
- Không đồng bộ hóa liên tục
- Mỗi site kiểm soát dữ liệu riêng, bảo vệ quyền truy cập
Ví dụ:
- Site 1: Oracle tại trụ sở chính
- Site 2: MySQL tại chi nhánh A
- Site 3: PostgreSQL tại chi nhánh B
→ Chỉ chia sẻ dữ liệu khi một bên cần truy vấn qua API hoặc gateway
✅ Ưu điểm:
- Mỗi site có toàn quyền kiểm soát dữ liệu
- Giảm độ phụ thuộc, tăng tính bảo mật nội bộ
⚠️ Nhược điểm:
- Không toàn vẹn dữ liệu toàn cục
- Khó thực hiện truy vấn phức tạp liên site
- Không phù hợp với các hệ thống cần real-time hoặc đồng bộ hóa mạnh
📊 Bảng tổng hợp 3 loại hệ thống phân tán
Tiêu chí | Homogeneous | Heterogeneous | Federated |
---|---|---|---|
DBMS & OS | Giống nhau | Khác nhau | Tùy từng site |
Dễ triển khai | ✅ | ❌ | ✅ |
Đồng bộ hóa | Dễ | Phức tạp | Không có |
Toàn vẹn dữ liệu toàn cục | ✅ | Có thể có | ❌ |
Tính tự trị site | Trung bình | Trung bình | ✅ Cao |
Tính tương thích | Thấp | Cao | Cao |
Dùng khi nào? | Hệ thống mới, đồng bộ hóa cao | Tích hợp nhiều hệ thống cũ | Mỗi site cần tự chủ dữ liệu |
Thiết kế hệ thống cơ sở dữ liệu phân tán
Thiết kế CSDL phân tán không chỉ là thiết kế bảng, mà còn cần xác định cách phân bổ dữ liệu, kiến trúc mạng, và tối ưu truy vấn phân tán.
🎯 1. Mục tiêu thiết kế
- Tối ưu truy vấn tại từng site → giảm độ trễ và tải mạng
- Đảm bảo toàn vẹn và đồng bộ dữ liệu
- Phản ánh đúng mô hình tổ chức thực tế
- Dễ bảo trì, mở rộng, tích hợp với hệ thống cũ
🧩 2. Các bước thiết kế hệ thống phân tán
🔹 Bước 1: Thiết kế vật lý (Physical Design) như trong hệ thống tập trung
- Xác định bảng cơ sở (base tables)
- Lựa chọn chỉ mục (indexes), khóa chính – khóa ngoại
- Tối ưu không gian lưu trữ
🔹 Bước 2: Phân tích cách dữ liệu được sử dụng tại từng site
- Dữ liệu nào được truy vấn nhiều nhất tại mỗi site?
- Dữ liệu nào cần cập nhật thường xuyên?
- Dữ liệu nào cần chia sẻ giữa các site?
➡️ Dựa vào hành vi sử dụng để quyết định phân mảnh
🔹 Bước 3: Quyết định phương án phân mảnh và sao chép
- Phân mảnh ngang nếu site truy cập theo vùng địa lý
- Phân mảnh dọc nếu mỗi site chỉ cần một phần dữ liệu
- Replication nếu cần tăng tính sẵn sàng, hoặc dữ liệu không thay đổi nhiều
🔹 Bước 4: Xem xét kiến trúc mạng (network topology)
- Dữ liệu truyền tải theo hướng nào?
- Có bị nghẽn mạng không?
- Mỗi site có đủ băng thông/độ ổn định để truyền dữ liệu không?
🔹 Bước 5: Tối ưu truy vấn phân tán
- Trình tối ưu hóa truy vấn cần biết:
- Vị trí dữ liệu (data location)
- Chi phí truyền tải giữa site
- Kỹ thuật join từ xa (remote join)
- Sử dụng semi-join, query shipping nếu cần
🌐 3. Cân nhắc kiến trúc mạng khi thiết kế
Yếu tố | Tác động đến thiết kế |
---|---|
Băng thông mạng (bandwidth) | Ảnh hưởng tốc độ đồng bộ và truy vấn |
Sơ đồ kết nối (topology) | Site trung tâm, site phụ hay ngang hàng? |
Chi phí truyền tải | Tăng nếu join từ xa, cần tối ưu bằng cache hoặc pre-aggregation |
Khả năng mở rộng | Thiết kế phải cho phép thêm site mới dễ dàng |
🧭 4. Ví dụ tình huống thiết kế thực tế
Tình huống: Công ty có 3 chi nhánh: Hà Nội, Đà Nẵng, TP.HCM.
- Dữ liệu khách hàng chia theo vùng → phân mảnh ngang theo địa phương
- Bảng sản phẩm giống nhau tại mọi chi nhánh → full replication
- Bảng đơn hàng: mỗi site xử lý riêng, nhưng cần tổng hợp báo cáo → partial replication + ETL định kỳ
✅ Mục tiêu:
- Truy vấn cục bộ nhanh
- Hạn chế truyền dữ liệu qua mạng
- Đảm bảo khả năng báo cáo toàn cục
🧱 5. Gợi ý chiến lược thiết kế phân tán hiệu quả
Tình huống | Chiến lược |
---|---|
Dữ liệu thay đổi thường xuyên | Tránh full replication, ưu tiên phân mảnh |
Site cần xử lý độc lập | Tự chủ + phân mảnh + đồng bộ định kỳ |
Cần báo cáo thống nhất | Dùng data warehouse hoặc kết hợp ETL từ các site |
Dữ liệu truy cập nhiều | Replicate theo nhu cầu đọc (read-intensive) |
Môi trường mạng yếu | Tránh join từ xa, dùng cache hoặc pre-aggregation |