Professional Documents
Culture Documents
Ly Thuyêt
Ly Thuyêt
Trong những
lần về Sài Gòn, tôi cũng có ghé qua những tiệm sách, nhưng không thấy có sách nào về
CSDL phân tán. Chúng ta vẫn còn đang trong thời kỳ phôi thai về CNTT, cho nên sách
quý khó tìm. Không phải chỉ riêng Việt Nam chúng ta, mà nhiều quốc gia khác cũng
chung...số phận, kể cả những quốc gia đã phát triển.
Nếu bạn cần tài liệu bằng Anh-ngữ, thì có hàng hà sa số. Bạn chỉ cần lên mạng, google
"Distributed Database", thì bạn sẽ tìm thấy ít nhất là vài trăm tài liệu, đọc mệt xỉu. Nhưng
có một trang web của Wikipedia, mà tôi nghĩ rằng sẽ cho bạn một khái niệm khá tốt về
CSDL phân tán:
http://en.wikipedia.org/wiki/Distributed_database
Điều quan trọng nhất, là phải hiểu CSSL phân tán là gì, và đặc biệt là trong những trường
hợp nào chúng ta cần đến CSDL-PT.
Lấy thực tế làm thí dụ, một trong những tập đoàn cần CSDL-PT nhất là một tập đoàn có
nhiều cơ sở buôn bán, chẳng hạn như V-Mart ở Việt Nam, hay Sears ở Mỹ. Đây là những
tập đoàn có những tiệm bán lẻ trên nhiều thành phố khác nhau. Tôi không biết V-Mart có
bao nhiêu tiệm, nhưng Sears ở Mỹ có vài ngàn tiệm. Hãy dùng V-Mart để làm thí dụ:
Mỗi tiệm V-Mart có một máy chủ dùng CSDL. Dĩ nhiên, CSDL này cung cấp cho tiệm
nhiều dữ liệu vô cùng cần thiết cho việc buôn bán: từ số hàng còn tồn kho, cho đến
những số hàng đã bán được trong ngày, trong tuần.
Từ văn phòng chính của V-Mart, cũng có máy chủ dùng CSDL. Ở đây là máy chính có
thể thu nhập được những dữ liệu từ hàng chục tiệm V-Mart ở nhiều tỉnh, nhiều nơi khác
nhau gửi về hàng đêm. Hay ít nhất, người chủ của V-Mart
cũng hy vọng có một ngày máy chủ có khả năng như thế. Bởi vì, nếu được như thế, ông
ta có thể ngồi tại văn phòng chính, mà có thể theo dõi số thu nhập của tất cả các tiệm V-
Mart ở khắp mọi nơi. Tuyệt vời hơn nữa, ông ta còn có thể theo dõi số hàng tồn kho của
từng tiệm, để có thể sắp xếp những chuyến xe tải hàng cần thiết chở dàng đến từng tiệm
theo nhu cầu.
Trên căn bản, V-Mart đã có một CSDL phân tán. Điểm thiết yếu nhất ở đây, là câu hỏi:
làm sao để dữ liệu từ các CSDL của tất cả các tiệm được chuyển về CSDL của văn phòng
chính qua hệ thống kết nối. Bởi vì, nếu dữ liệu không được chuyển về (ít nhất là hàng
đêm), thì tất cả những CSDL của tất cả các tiệm đều chỉ là những CSDL rời rạc, không
cùng chung một hệ thống.
SQL Server có nhiều dụng thể cần thiết cho DLPT, và hai dụng thể cần thiết nhất là SQL
Agent và Replicated Server. Trên lý thuyết, nếu tất cả các CSDL đã được kết nối với
nhau, chúng ta không cần đến SQL Agent và Replicated Server, vì chúng ta có thể dùng
Linked Server để đọc những dữ liệu từ tất cả các CSDL. Nhưng trên thực tế, tốc độ xử lý
không cho phép, cho nên, SQL Agent và Replicated Server là hai phương tiện giúp chúng
ta đạt được tốc độ xử lý khả quan.
Bạn có thể google SQL Agent/Replicated Server để lấy thêm tài liệu. Và tôi không nghĩ
rằng bạn có thể lấy được tài liệu của SQL Agent bằng tiếng Việt ở bất cứ đâu, ít nhất là
trong giai đoạn hiện tại.
Các trạm Updatable Snapshot sử dụng thông tin từ một bảng chủ
4.4. Đơn chủ với nhiều trạm Read-Only Snapshot và đa nhân bản chủ
Là sự kết hợp giữa nhân bản nhiều bản chính và nhiều các trạm Read-only Snapshot.
Đơn chủ với nhiều trạm Read-Only Snapshot và đa nhân bản chủ
Đa nhân bản Snapshot chủ là: Có một số trạm Snapshot chủ, bảng đầy đủ và tập các bảng
nhân bản có thể được kết hợp trong một hệ thống. Hình trên thể hiện đa nhân bản giữa
hai Snapshot chủ có thể chứa nhân bản bảng đầy đủ giữa hai trạm chủ chứa hai miền. Các
Snapshot có thể được định nghĩa trên các Snapshot chủ từ các bảng nhân bản đầy đủ hoặc
tập các bảng từ các trạm thuộc các miền.
Lợi ích của đa nhân bản: Các Snapshot có thể được điều khiển từ các trạm chủ khác. Nếu
một trạm chủ bị lỗi, các Snapshot có thể được làm tươi từ trạm chủ khác và tiếp tục quá
trình xử lí.
4.5. Sự khác nhau giữa Updatable Snapshot và các nhân bản chủ
• Các nhân bản chủ phải gồm dữ liệu của một bảng đầy đủ được nhân bản. Các Snapshot
có thể nhân bản các tập con dữ liệu của bảng chủ.
• Nhiều nhân bản chủ cho phép nhân bản các thay đổi cho mỗi giao tác như chúng tìm
thấy, trong khi các Snapshot là tập cố định, lan truyền thay đổi từ nhiều giao tác hiệu quả
hơn.
• Nếu các mâu thuẫn xảy ra như kết quả của các thay đổi tới nhiều bản sao của cùng dữ
liệu, các mâu thuẫn được tìm ra và giải quyết bởi các trạm chủ.
5. Lan truyền sự thay đổi giữa các nhân bản
5.1. Giới thiệu
Khi thay đổi một đối tượng trong môi trường nhân bản, thay đổi này ngay lập tức sẽ được
lan truyền tới tất cả các trạm chủ, các trạm Snapshot cũng được thay đổi tương ứng. Lựa
chọn giữa hai phương pháp: Phương pháp không đồng bộ và phương pháp đồng bộ chính
là sự lựa chọn giữa những thuộc tính sẵn có và những thuộc tính phức tạp hơn. Cả hai
phương pháp đồng bộ và không đồng bộ đều có ưu điểm riêng theo yêu cầu và các bản
sửa đổi địa phương của dữ liệu.
Với môi trường đồng bộ, có thể cập nhật dữ liệu tại tất cả các trạm, các mâu thuẫn cập
nhật không bao giờ xảy ra.
Với môi trường không đồng bộ, ưu điểm là sử dụng những thuộc tính sẵn có. Không có
sự phụ thuộc vào các thay đổi ở một trạm khác. Nếu có một trạm bị lỗi thì có thể chuyển
tới trạm khác và tiếp tục làm việc.
5.2. Phương pháp đồng bộ
Đặc điểm:
• Sự thay đổi tại các trạm sẽ lập tức phản xạ tới trạm của bạn.
• Một dữ liệu có thể được cập nhật tại nhiều trạm, chúng ta không phải quan tâm đến các
mâu thuẫn sẽ xuất hiện trong quá trình cập nhật.
• Khi hệ thống mạng bị lỗi tại một trạm nhân bản, các thay đổi sẽ được truyền đồng bộ,
do đó cho đến khi lỗi mạng được khắc phục hoặc gỡ bỏ các trạm lỗi trong môi trường
nhân bản, việc cập nhật tại các địa phương là không được phép.
• Thời gian trả lời các thay đổi có thể chậm hơn, vì phải trả lời từ tất cả các trạm trước khi
chuyển giao hoặc quay lại một giao tác.
• Các thủ tục truyền dữ liệu đồng bộ là tuỳ chọn cho các môi trường với dữ liệu Read-
Often/Write-Occasionally.
5.3. Phương pháp không đồng bộ
Đặc điểm:
• Lỗi tại các trạm hoặc lỗi mạng không làm ảnh hưởng đến các trạm khác. Tức là khả
năng chịu lỗi tốt hơn.
• Thời gian đáp ứng các thay đổi được cải thiện hơn so với phương pháp đồng bộ vì
không phải đợi đáp ứng từ một trạm ở xa.
• Làm chậm các giao tác được lan truyền tại bất cứ khoảng cách.
• Thay đổi tại các trạm không phản xạ ngay lập tức tới trạm khác, kết quả tạm thời là có
mâu thuẫn giữa các nhân bản.
• Mâu thuẫn thay đổi có thể làm tại nhiều trạm. Các mâu thuẫn sẽ không được tìm ra
trong khi các thay đổi được truyền.
5.4. Kỹ thuật lan truyền sự thay đổi của các trạm dữ liệu không đồng bộ
5.4.1. Làm chậm các giao tác
Cho nhiều nhân bản chủ và nhân bản từ Updatable Snapshot tới các trạm chủ. Hệ quản trị
cơ sở dữ liệu có thể sinh ra một Trigger và thủ tục lưu trữ bảng chứa nhân bản của các
trạm dữ liệu bị thay đổi. Khi có một thay đổi địa phương các thủ tục lưu trữ được gọi và
thực hiện việc cập nhật các thay đổi.
5.4.2. Làm tươi Snapshot
Để lan truyền các thay đổi từ bảng chính tới các Read-Only Snapshot hoặc Updatable
Snapshot, có thể sử dụng kỹ thuật làm tươi Snapshot thay cho việc nhân bản trạm hàng.
Thực hiện làm tươi Snapshot:
• Một thay đổi tại trạm chủ từ khi Snapshot được tạo hoặc được làm tươi trước đó được
truyền tới Snapshot.
• Sự thay đổi các giao tác được lan truyền có hiệu quả, xử lý định hướng từng đợt.
Vì Snapshot là một đơn vị cơ sở được sao hoặc làm tươi, nên nếu muốn làm tươi hai hoặc
nhiều Snapshot cùng một thời điểm thì ta chỉ cần tạo ra một nhóm các Snapshot được làm
tươi (Snapshot Refresh Groups).
5.4.3. Kỹ thuật nhân bản luân phiên
Kết hợp với phương pháp làm chậm giao tác và làm tươi Snapshot, hệ quản trị cơ sở dữ
liệu cung cấp hai phương pháp luân phiên cho việc truyền sự thay đổi trạm dữ liệu giữa
các nhân bản: nhân bản trạm hàng đồng bộ, nhân bản thủ tục.
Nhân bản trạm hàng đồng bộ: sử dụng như nhân bản trạm hàng, truyền các thay đổi trạm
dữ liệu như kỹ thuật làm chậm giao tác nhưng không sử dụng hàng đợi làm chậm giao
tác. Khi có sự thay đổi từ một nhân bản bảng, hệ sẽ kích hoạt một trigger, trigger gọi các
thủ tục thực hiện tại mỗi trạm chủ tương ứng với các thay đổi.
Nhân bản thủ tục: gọi thủ tục lưu trữ được sử dụng để cập nhật dữ liệu, tuy nhiên không
nhân bản các bảng tự cập nhật.
Yêu cầu tính nhất quán ở đây là tổng A+B không được thay đổi bởi sự thực hiện của giao
dịch này. Nếu không yêu cầu tính nhất quán đối với giao dịch, tiền có thể được tạo ra hay
bị hủy đi bởi giao dịch này. Có thể kiểm tra một cách dễ ràng, nếu cơ sở dữ liệu toàn vẹn
trước khi giao dịch, cơ sở dữ liệu vẫn còn toàn vẹn sau khi thực hiện giao dịch đó.
Đảm bảo tính nhất quán đối với một giao dịch là trách nhiệm của người viết chương
trình, hoặc có thể được thực hiện tự động bằng cách kiểm tra các ràng buộc toàn vẹn
trong cơ sở dữ liệu.
Các mức nhất quán
Có bốn mức nhất quán theo trình tự từ cao xuống thấp như sau:
Mức 3: Giao dịch T nhìn mức nhất quán 3 nếu:
- T không ghi đè dữ liệu nháp của giao dịch khác
- T không chuyển giao bất cứ một việc ghi nào đến khi nó hoàn thành hoàn toàn việc ghi
của nó.
- T không đọc dữ liệu nháp từ các giao dịch khác.
- Các giao dịch khác không nháp vào bất cứ dữ liệu nào đọc bởi T trước khi T hoàn
thành.
Mức 2: Giao dịch T nhìn mức nhất quán 2 nếu:
- T không ghi đè lên dữ liệu nháp của giao dịch khác.
- T không chuyển giao bất kỳ việc ghi nào trước EOT (End of Transaction).
- T không đọc dữ liệu nháp từ giao dịch khác.
Mức 1: Giao dịch T nhìn mức nhất quán 1 nếu:
- T không ghi đè lên dữ liệu nháp của giao dịch khác.
- T không chuyển giao bất kỳ việc ghi nào trước EOT.
Mức 0: Giao dịch T nhìn mức nhất quán 0 nếu:
- T không ghi đè lên dữ liệu nháp của giao dịch khác.