Mặc dù SQL Server không phải là hệ hệ quản trị cơ sơ dữ liệu phân tán nhưng người dùng có thể dùng nó để xây dựng cơ sở dữ liệu phân tán với những hỗ trợ như MSDTC for remote transtion,
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐẠI HỌC QUỐC GIA TPHCM
BÀI THU HOẠCH MÔN HỌC
CƠ SỞ DỮ LIỆU NÂNG CAO
Đề tài: Cơ sở dữ liệu phân tán trong SQL Server
Giảng viên: PGS.TS Đỗ Phúc
Học viên: Đào Thị Phấn
Mã số: CH1101118
TPHCM, Tháng 8/2012
Trang 2Trang 2
MỤC LỤC
LỜI MỞ ĐẦU 3
Phần I: Giới thiệu cơ sở dữ liệu phân tán 4
1 Cơ sở dữ liệu phân tán là gì? 4
2 Ưu và nhược điểm của hệ dữ liệu phân tán 6
3 Các loại truy xuất cơ sở dữ liệu phân tán 6
4 Các đặc điểm chính của hệ phân tán 8
Phần II: Cơ sở dữ liệu phân tán trong SQL Server 12
1 Framework quản lý phân tán SQL (SQL Distributed Management Framework) 12
2 Giao tác phân tán 13
3 Server liên kết - Linked server 15
3.1 Tạo linked server dùng Transact-SQL 15
3.2 Tạo linked server dùng công cụ giao diện đồ hoạ 17
4 Truy vấn phân tán (distributed query) 19
4.1 Truy vấn dùng linked server 21
4.2 Truy vấn dùng Adhoc computer name 22
5 Tính trong suốt dữ liệu trong dữ liệu phân tán 24
Tài liệu tham khảo 26
Trang 3Trang 3
LỜI MỞ ĐẦU
Ngày nay cùng với sự phát triển rất mạnh của internet là nhu cầu sử dụng, lưu trữ dữ liệu với lượng rất lớn của các doanh nghiệp nói riêng, của các ứng dụng công nghệ thông tin nói chung Trong khi các tổ chức, doanh nghiệp có trụ sở phân tán ở nhiều vị trí địa lý khác nhau, vấn đề đặt ra làm thế nào để quản lý các luồng dữ liệu và sử dụng chung dữ liệu, chương trình chung của tổ chức Ngoài ra, còn có các nhu cầu khác như sử dụng một phần hoặc toàn bộ dữ liệu một cách đồng thời với thời gian truy xuất nhanh Do đó, nhu cầu phải có một hình thức để chia nhỏ/liên kết các luồng dữ liệu lại để từ đó có thể truy cập dữ liệu ở bất kỳ vị trí nào mà vẫn đạt hiệu quả cao là cần thiết Để giải quyết vấn đề này, cơ sở dữ liệu phân tán ra đời và tiếp đó là các hệ quản trị cơ sơ dữ liệu phân tán Mặc
dù SQL Server không phải là hệ hệ quản trị cơ sơ dữ liệu phân tán nhưng người dùng có thể dùng nó để xây dựng cơ sở dữ liệu phân tán với những hỗ trợ như MSDTC (for remote transtion), linked server, OPENDATASOURCE, …
SQL Server là hệ quản trị cơ sở dữ liệu quan hệ và cũng đóng vai trò là nền tảng dữ liệu của doanh nghiệp Các phiên bản gần đây của Microsoft SQL Server hỗ trợ nhiều tính năng mạnh so với các phiên bản trước như: dịch vụ thông báo, dịch vụ môi giới, dịch vụ báo cáo, và bộ máy xử lý cơ sở dữ liệu, …
Tiểu luận này trình bày khái quát về cơ sở dữ liệu phân tán, đồng thời trình bày sự
hỗ trợ cơ sở dữ liệu phân tán trong một hệ quản trị cơ sở dữ liệu phổ biến, đó là SQL Server
Em xin chân thành cảm ơn PGS.TS Đỗ Phúc – Giảng viên môn học Cơ Sở Dữ Liệu Nâng Cao đã truyền đạt cho em những kiến thức vô cùng quý báu Em cũng xin chân thành cảm ơn quý Thầy Cô thuộc phòng đào tạo Sau đại học đã tạo điều kiện về tài liệu tham khảo để em có thể hoàn thành môn học này
Chân thành cảm ơn!
Trang 4Trang 4
Phần I: Giới thiệu cơ sở dữ liệu phân tán
1 Cơ sở dữ liệu phân tán là gì?
Cơ sở dữ liệu phân tán được hiểu là một cơ sở dữ liệu không được lưu trữ trong một thiết bị lưu trữ duy nhất, mà có thể được chia nhỏ và đặt ở nhiều máy tính khác nhau ở những nơi khác nhau về địa lý hoặc lưu trữ trong nhiều máy tính khác nhau có kết nối mạng
Một cơ sở dữ liệu phân tán có thể được lưu trữ ở các máy chủ có liên kết thông qua mạng internet, intranet, hay extranet, hoặc mạng các công ty Sự nhân bản và phân bố dữ liệu đã giúp cho tốc độ truy xuất dữ liệu của các ứng dụng nhanh hơn
Nhằm đảm bảo cơ sở dữ liệu phân tán luôn được cập nhật đúng và đủ, cần có hai tiến trình, đó là nhân bản (replication) và duplication Replication được thực hiện nhờ vào một phần mềm chuyên dụng nào đó Đây là tiến trình tạo ra nhiều bản dữ liệu giống nhau Tiến trình này sẽ tiêu tốn nhiều thời gian phụ thuộc vào kích cỡ và số lượng dữ liệu phân tán Quá trình duplication không quá phức tạp như replication Nó chỉ cần nhận diện một
cơ sở dữ liệu như là dữ liệu chính (master database) và thực hiện duplicate nó Quá trình này thông thường được thực hiện sau một khoảng thời gian được thiết lập Điều này đảm bảo rằng dữ liệu ở những nơi phân tán sẽ được cập nhật và giống nhau Trong quá trình duplication, có thể có thay đổi trên master database Tuy nhiên, để đảm bảo dữ liệu cục bộ không bị mất thì trong cả hai tiến trình, dữ liệu hiện tại vẫn được giữ ở các nơi được phân tán
Ví dụ: Với một ngân hàng có ba chi nhánh đặt tại các vị trí khác nhau Tại mỗi chi
nhánh có một máy tính điều khiển một số máy tính khác và cơ sở dữ liệu thống kê của chi nhánh đó Mỗi máy tính với cơ sở dữ liệu thống kê của mỗi nhánh được đặt ở một vị trí của cơ sở dữ liệu phân tán Các máy tính được nối với nhau bởi một mạng truyền thông Các nút trong một mạng phân tán một mặt xử lý thông tin tại vị trí mà nó quản lý, mặt
Trang 5Trang 5
khác nó cũng tham gia vào xử lý các yêu cầu về thông tin cần truy cập qua nhiều địa điểm Ví dụ việc lên danh sách tất cả các nhân viên của công ty Yêu cầu này đòi hỏi tất
cả các máy tính ở các chi nhánh của công ty đều phải hoạt động để cung cấp thông tin
Có hai tiếp cận chính để lưu trữ một quan hệ trong hệ thống dữ liệu phân tán:
- Nhân bản (replication)
- Phân mảnh (fragmentation)
Trong nhân bản, hệ thống sẽ lưu giữ một số bản của cùng một quan hệ ở nhiều nơi khác nhau Và thuận lợi là:
- Dữ liệu luôn có sẵn ở nhiều nơi để truy xuất
- Truy xuất đồng thời gia tăng cho nhu cầu đọc dữ liệu
Trong phân mảnh, một quan hệ có thể được chia làm nhiều quan hệ nhỏ hơn (các mảnh) và các mảnh này được lưu trữ ở các nơi khác nhau Tuy nhiên, có thể tái thiết lại quan hệ ban đầu từ các mảnh mà không mất dữ liệu Có hai kiểu phân mảnh: phân mảnh ngang và phân mảnh dọc
Hình 1: Một cơ sở dữ liệu phân tán trên một mạng phân tán địa lý
Trang 6Trang 6
2 Ưu và nhược điểm của hệ dữ liệu phân tán
Đối tượng chủ yếu của hệ phân tán là cung cấp các dịch vụ truy cập dữ liệu và trình diễn dữ liệu cho người sử dụng ở mọi nơi khác nhau Để đáp ứng được điều này, hệ thống phân tán phải được thiết kế về phần cứng lẫn phần mềm thích hợp với vị trí địa lý
và yêu cầu của người sử dụng Cũng từ đó, chúng ta có thể thấy những ưu và nhược điểm của hệ thống phân tán như sau :
a) Ưu điểm :
Đáp ứng nhanh hầu hết các ứng dụng sử dụng dữ liệu tại các trạm
Tăng cường các đơn thể ứng dụng và cơ sở dữ liệu mà không làm cản trở người
Phải xử lý mọi thay đổi thông báo trong mọi địa điểm
Khó kiểm soát tính toàn vẹn dữ liệu với nhiều bản sao dữ liệu được phân bố khắp mọi nơi
Đáp ứng chậm nhu cầu của các trạm trong trường hợp các phần mềm ứng dụng không được phân bố phù hợp với việc sử dụng chung
3 Các loại truy xuất cơ sở dữ liệu phân tán
Truy xuất dữ liệu từ xa của một ứng dụng có thể được thực hiện theo hai cách cơ bản: Truy xuất từ xa thông qua các tác vụ cơ bản và truy xuất từ xa thông qua chương trình phụ trợ :
a) Truy xuất từ xa thông qua các tác vụ cơ bản :
Trang 7Trang 7
Theo cách này, ứng dụng phát ra một yêu cầu truy xuất cơ sở dữ liệu ở một vị trí nào
đó Yêu cầu này sẽ được hệ quản trị cơ sở dữ liệu phân tán tự động gửi đến vị trí chứa dữ liệu đó Sau đó yêu cầu này được thực hiện và kết quả được gửi trả về
Tr×nh øng
dông
VÞ trÝ 1
VÞ trÝ 2
C¸c t¸c vô c¬ b¶n truy xuÊt CSDL
KÕt qu¶ göi
vÒ
DBMS1
C¬ së d÷ liÖu
2 DBMS2
Tr×nh øng dông
VÞ trÝ 1
VÞ trÝ 2
Yªu cÇu thùc hiÖn ch−¬ng tr×nh phô trî
C¸c t¸c vô truy xuÊt CSDL vμ kÕt qu¶
DBMS1
C¬ së d÷ liÖu
2
DBMS2 KÕt qu¶ toμn côc
Ch−¬ng tr×nh phô trî
Trang 8Trang 8
Nếu tính năng của chương trình phụ trợ trong cách thứ hai lớn hơn tính năng của các tác vụ cơ bản truy xuất cơ sở dữ liệu trong cách thứ nhất thì cách thứ hai có thể hiệu quả hơn Do đó, các tác vụ cơ bản thao tác các mẫu tin cùng một lúc là một đặc tính rất hữu ích cho các hệ quản trị cơ sở dữ liệu cục bộ trong việc xây dựng cơ sở dữ liệu phân tán Tuy nhiên, hầu hết hệ quản trị cơ sở dữ liệu thương mại sẵn có trên thị trường là hệ thống chỉ xử lý một mẫu tin tại một thời điểm (One record at a time system) và do đó chương trình phụ trợ là cần thiết
4 Các đặc điểm chính của hệ phân tán
a) Chia sẻ tài nguyên
• Được thực hiện qua mạng truyền thông
• Mỗi tài nguyên cần phải được quản lý bởi một chương trình có giao diện truyền thông
• Các tài nguyên có thể được truy nhập, cập nhật một cách tin cậy và nhất quán
Quản lý tài nguyên bao gồm:
• Lập kế hoạch dự phòng
• Đặt tên cho các lớp tài nguyên
• Cho phép tài nguyên được truy nhập từ nơi này đến nơi khác
• Ánh xạ tên tài nguyên vào địa chỉ truyền thông
Trang 9Trang 9
- Tính mở của hệ phân tán dựa trên việc cung cấp cơ chế truyền thông giữa các tiến trình
và công khai các giao diện dùng để truy nhập các tài nguyên chung
c) Khả năng song song
- Hệ phân tán hoạt động trên một mạng truyền thông có nhiều máy tính, mỗi máy có thể
có một hay nhiều CPU
- Có thể thực hiện nhiều tiến trình trong cùng một thời điểm Việc thực hiện tiến trình theo cơ chế phân chia thời gian (một CPU) hay (nhiều CPU)
Khả năng làm việc song song trong hệ phân tán được thể hiện qua hai tình huống sau:
- Nhiều người sử dụng đồng thời đưa ra các lệnh hay các tương tác với các chương trình ứng dụng
- Nhiều tiến trình Server chạy đồng thời, mỗi tiến trình phải đáp ứng yêu cầu từ các Clients
e) Khả năng thứ lỗi
Việc thiết kế khả năng thứ lỗi các hệ thống máy tính dựa trên hai giải pháp sau:
• Dùng khả năng thay thế để đảm bảo sự hoạt động liên tục và hiệu quả
• Dùng các chương trình hồi phục dữ liệu khi xảy ra sự cố
f) Đảm bảo tin cậy và nhất quán
Hệ thống yêu cầu độ tin cậy như:
Bí mật của dữ liệu
Trang 10Trang 10
Các chức năng khôi phục hư hỏng phải đảm bảo
Ngoài ra các yêu cầu của hệ thống về tính nhất quán cũng thể hiện ở chổ: không có
mâu thuẩn trong nội dung cơ sở dữ liệu
g) Tính trong suốt
Tính trong suốt của một hệ phân tán được hiểu như là việc che khuất đi các thành phần riêng biệt của hệ đối với người sử dụng và những người lập trình ứng dụng
Các loại trong suốt trong hệ phân tán:
- Trong suốt phân đoạn (fragmentation transparency) :
Khi dữ liệu đã được phân đoạn thì việc truy cập vào CSDL được thực hiện bình thường như là chưa bị phân tán và không ảnh hưởng tới người sử dụng
Ví dụ: Xét quan hệ tổng thể NCC (Id, Tên, Tuổi) và các phân đoạn được tách ra từ nó:
NCC1 (Id1, Tên, Tuổi)
NCC2 (Id2, Tên, Tuổi)
NCC3 (Id3, Tên, Tuổi)
Giả sử DDBMS cung cấp tính trong suốt về phân đoạn, khi đó ta có thể thấy tính trong suốt này được thể hiện như sau:
Khi muốn tìm một người có Id=”Id1“ thì chỉ cần tìm trên quan hệ tổng thể NCC
mà không cần biết quan hệ NCC có phân tán hay không
SELECT * FROM NCC WHERE Id=”Id1”
- Trong suốt về vị trí (location transparency)
• Người sử dụng không cần biết về vị trí vật lý của dữ liệu mà có quyền truy cập đến
cơ sở dữ liệu tại bất cứ vị trí nào
• Các thao tác để lấy hoặc cập nhật một dữ liệu từ xa được tự động thực hiện bởi hệ thống tại điểm đưa ra yêu cầu
• Tính trong suốt về vị trí rất hữu ích, nó cho phép người sử dụng bỏ qua các bản sao
dữ liệu đã tồn tại ở mỗi vị trí Do đó có thể di chuyển một bản sao dữ liệu từ một vị
Trang 11Trang 11
trí này đến một vị trí khác và cho phép tạo các bản sao mới mà không ảnh hưởng đến các ứng dụng
Ví dụ: Với quan hệ tổng thể R và các phân đoạn như đã nói ở trên nhưng giả sử
rằng DDBMS cung cấp trong suốt về vị trí nhưng không trong suốt phân đoạn
Xét câu truy vấn tìm người có Id=”Id1”
Ở đây quan hệ NCC2 được sao làm hai bản trên hai vị trí1 và vị trí2, ta chỉ cần tìm thông tin trên quan hệ NCC2 mà không cần quan tâm nó ở vị trí nào
Trang 12Trang 12
Phần II: Cơ sở dữ liệu phân tán trong SQL Server
SQL Server là hệ quản trị cơ sở dữ liệu ngoài hỗ trợ cơ sở dữ liệu quan hệ, nó còn
hỗ trợ cơ sở dữ liệu phân tán Nó cho phép tạo ra các view từ các bảng dữ liệu trên các Server khác nhau được kết nối (linked server), thực thi các truy vấn hay chuyển tác phân tán trải dài trên nhiều Server,
Với hệ quản trị cơ sở dữ liệu SQL Server thì ngôn ngữ dùng để tương tác với cơ sở
dữ liệu là Transact – SQL Đây là một phiên bản của ngôn ngữ SQL Ngôn ngữ Transact – SQL trên SQL Server bao gồm nhiều câu lệnh khác nhau nhưng chia thành hai nhóm chính: nhóm lệnh định nghĩa dữ liệu và nhóm lệnh thao tác dữ liệu
SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ hoạt động trên môi trường mạng theo mô hình khách/chủ (client-server) Phía máy chủ chạy các dịch vụ cần thiết mà quan trọng nhất là dịch vụ cơ sở dữ liệu SQL Server Service
SQL Server có rất nhiều phiên bản và phiên bản mới nhất là SQL Server 2012 Tuy nhiên, khi thực hiện tiểu luận này thì các ví dụ được thể hiện trên SQL Server 2005
1 Framework quản lý phân tán SQL (SQL Distributed Management Framework)
Framework quản lý phân tán SQL (SQL-DMF) là một framework tích hợp các đối tượng, dịch vụ và các thành phần sử dụng để quản lý SQL Server SQL-DMF cung cấp một framework quản lý mềm dẽo và thích hợp với nhu cầu của một tổ chức Nó làm giảm yêu cầu cần thiết cho các tác vụ bảo trì chăm sóc của người sử dụng (như backup dữ liệu và thông báo cảnh báo) bằng việc cung cấp các dịch vụ tương tác ngay lập tức với SQL Server Các thành phần khoá của SQL-DMF hỗ trợ quản lý các mẫu của SQL Server trong mạng bằng cách cho phép định nghĩa:
- Tất cả đối tượng của SQL Server và phân quyền (permissions) của chúng
- Lập lại các hành động việc quản trị để nắm bắt khoảng cách và thời gian
Trang 13Trang 13
- Hiệu chỉnh các hành động khi các điều kiện đặc biệt được phát hiện Việc hiệu chỉnh các hành động có thể đối với cả tác vụ định nghĩa để giải quyết các hậu quả, hoặc các lời cảnh báo bằng cách đánh trang hoặc e-mail đến người mà có thể giải quyết hậu quả
Hình 4: Các thành phần chính của SQL-DMF
2 Giao tác phân tán
Một giao tác phân tán bắt đầu trong Transact-SQL với một cấu trúc tương đối đơn giản:
• Một kịch bản hay ứng dụng Transact-SQL kết nối thực thi một lệnh Transact-SQL
là bắt đầu một giao tác phân tán
Trang 14• Khi kịch bản hay ứng dụng đưa ra lệnh COMMIT hoặc ROLLBACK, server điểu khiển sẽ gọi MS DTC để quản lý hai giai đoạn hoặc là chuyển giao quá trình xử lý hoặc là thông báo cho các linked server để phục hồi lại các giao dịch
Các câu lệnh Transact-SQL điều khiển các giao tác phân tán rất ít vì hầu hết các công việc được thực hiện nội bộ bởi các SQLServer Database Engine và MS DTC
Một lệnh SQL yêu cầu những kịch bản hay ứng dụng trong SQL gồm:
Transact-• Bắt đầu một giao tác phân tán
• Thực thi các truy vấn phân tán trở lại các máy chủ
• Gọi các câu lệnh chuẩn Transact-SQL như:
COMMIT TRANSACTION, COMMIT WORK, ROLLBACK
TRANSACTION hay ROLLBACK WORK để kết thúc giao tác
Đối với bất kỳ giao tác phân tán Transact-SQL thì Database Engine sẽ xử lý kịch bản hoặc kết nối tự động để gọi MS DTC nhằm chuyển giao hay phục hồi giao tác
Có thể bắt đầu giao tác phân tán trong Transact-SQL bằng lệnh sau:
BEGIN DISTRIBUTED TRANSACTION [ transaction_name |
@tran_name_variable ]
Trong đó:
Trang 15Trang 15
- transaction_name: Là một giao tác người dùng định nghĩa để theo dõi giao tác phân tán bên trong tiện ích MS DTC Transaction_name phải thích ứng với các quy luật định danh nhưng chỉ 32 ký tự đầu tiên được sử dụng
- @tran_name_variable: Tên của biến người dùng định nghĩa chứa tên một giao tác dùng để theo dõi giao tác phân tán bên trong tiện ích của MS DTC Biến phải được khai báo với một trong các kiểu dữ liệu char, varchar, nchar, hoặc nvarchar
3 Server liên kết - Linked server
SQL Server hỗ trợ khả năng liên kết với các hệ quản trị dữ liệu khác cũng như liên kết các máy chủ SQL Server với nhau thông qua việc tạo linked server Liên kết các máy chủ SQL Server cung cấp khả năng truy cập dữ liệu từ các nguồn dữ liệu từ xa Bằng cách sử dụng các cơ chế được hỗ trợ, người dùng có thể truy cập, thực hiện các thao tác sửa đổi, bổ sung dữ liệu và thực hiện các thủ tục từ xa Ngoài ra, có thể sử dụng lệnh Transact-SQL với chức năng OPENROWSET để truy vấn một nguồn dữ liệu từ xa mà không cần một linked server Để tạo linked server có thể dùng giao diện đồ hoạ hoặc dùng lệnh Transact-SQL
3.1 Tạo linked server dùng Transact-SQL
Khi dùng Transact-SQL, thủ tục tạo linked server sp_addlinkedserver sẽ được gọi