PHÂN TÁN CƠ SỞ DỮ LIỆU

Một phần của tài liệu Bài giảng hệ quản trị csdl it10 Đại học mở hà nội (Trang 61 - 79)

Mục tiêu:

Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:

1. Nắm được khái niệm về phân tán

2. Hiểu và nắm được các phương pháp phân tán

3. Nắm được các trường hợp thực hiện phân mảnh

4. Hiểu và vận dụng thực hiện phân tán trong SQL Server

Nội dung:

I. LIÊN KẾT ĐẾN MÁY CHỦ PHÂN TÁN

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ế chúng ta 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. 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 liên kết server bằng thủ tục hệ thống chúng ta sử dụng thủ tục có tên sp_addlinkedserver với cú pháp như sau:

Sp_adlinkedserver [@server=] ‘server’

[,[@srvproduct=] ‘product_name’]

[,[@provider=] ‘provider_name’]

[,[@datasrc=] ‘data_source’]

[,[@location=] ‘location’]

[,[@provstr=] ‘provider_string’]

[,[catalog=] ‘catalog’]

Trong đó, tham số:

[@server=] ‘server’: Tên server dùng để tham chiếu khi bạn khai báo truy cập

dữ liệu

[@srvproduct=] ‘product_name’: Tên sản phẩm ứng với cơ sở dữ liệu SQL Server. Trong trường hợp này chúng ta không cần cung cấp tham số này

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 2 [@provstr=] ‘provider_string’: Chuỗi ứng với trình điều khiển cơ sở dữ liệu [@datasrc=] ‘data_source’: Tên Server hay địa chỉ IP cài đặt SQL Server mà bạn muốn tạo liên kết.

[@catalog=] ‘catalog’: Tên cơ sở dữ liệu bạn muốn truy cập sau khi liên kết

Sau khi tạo liên kết SQL Server thành công, để có thể truy cập và sử dụng dữ liệu trong các đối tượng Table hay View của cơ sở dữ liệu muốn liên kết đến, chúng ta cần khai báo đặc quyền truy cập.

Người quản trị hệ thống có thể điều khiển và có thể truy xuất một máy chủ liên kết cá biệt bằng việc thiết lập một ánh xạ đăng nhập bằng cách sử dụng thủ tục hệ thốngsp_addlinkedsrvlogin. Thủ tục này cho phép thiết lập từ xa một tên đăng nhập và mật khẩu cho một tên đăng nhập nội bộ cụ thể. Thủ tục cũng cho phép để thiết lập chính ánh xạ cho các đăng nhập xác thực Windows.

Chúng ta sử dụng thủ tục hệ thống có tên sp_addlinkedsrvlogin với cú pháp như sau:

Sp_addlinkedsrvlogin

[@rmtsrvname=] ‘rmtsrvname’]

[,[@useself=] ‘useself’]

[,[@locallogin=] ‘locallogin’]

[,[@rmtuser=] ‘rmtuser’]

[,[@rmtpassword=] ‘rmtpassword’]

Trong đó, tham số:

[@rmtsrvname=] ‘rmtsrvname’: Tên máy chủ liên kết.

[@useself=] ‘useself’: Khi giá trị thật sự được sử dụng, các SQL cục bộ đăng nhập được sử dụng để kết nối vào tên máy chủ từ xa. Nếu giá trị chưa sử dụng thì các tham số locallogin, rmtuser và rmtpassword của thủ tục sp_addlinkedsrvlogin sẽ được áp dụng vào việc lập một ánh xạ mới.

[@locallogin=] ‘locallogin’: Tên đăng nhập. Nếu tham số này là rỗng thì việc thiết lập ánh xạ sẽ được áp dụng cho tất cả các tên đăng nhập.

[@rmtuser=] ‘rmtuser’: Tên của người dùng từ xa.

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 3

[@rmtpassword=] ‘rmtpassword’: Mật khẩu của người dùng từ xa.

Chú ý bảo mật: Khi kết nối đến một nguồn dữ liệu khác, SQL Server đóng vai trò đăng nhập hợp lý cho Windows xác thực của các đăng nhập; Tuy nhiên, SQL Server không thể đóng vai trò cho Windows xác thực các đăng nhập. Do đó, với SQL Server xác thực các đăng nhập, SQL Server có thể truy xuất nguồn dữ liệu khác như là các file hoặc các nguồn dữ liệu không quan hệ như Active Directory, bằng cách sử dụng các ngữ cảnh bảo mật của tài khoản trong Windows cấp dưới mà dịch vụ SQL Server đang chạy. Để làm điều này có khả năng đưa đăng nhập truy xuất đến các nguồn dữ liệu khác mà chúng không có phân quyền, nhưng các tài khoản dưới của dịch vụ SQL Server đang chạy không được phân quyền. Khả năng này nên được cân nhắc kỹ khi truy xuất đến một SQL Server xác thực đăng nhập đến một máy chủ liên kết bằng cách sử dụng thủ tục sp_addlinkedsrvlogin.

II. CÁC CÂU LỆNH TRUY VẤN PHÂN TÁN

Các câu truy vấn phân tán truy xuất dữ liệu từ nhiều nguồn dữ liệu hỗn tạp (không đồng nhất). Những nguồn dữ liệu có thể được lưu trữ trong cùng hoặc các máy tính khác.Microsoft SQL Server 2005 hỗ trợ các câu truy vấn phân tán bằng cách sử dụng OLE DB. Với những thông tin về những tính năng mới và nâng cao cho các câu truy vấn phân tán. Người sử dụng SQL Server có thể sử dụng các câu truy vấn phân tán để truy xuất như sau:

 Dữ liệu phân tán được lưu trữ trong nhiều mẫu cài đặt của SQL Server.

 Các dữ liệu hỗn tạp lưu trữ trong các quan hệ khác nhau và các dữ liệu không quan hệ truy xuất bằng sử dụng một OLE DB provider.

Nguồn cung cấp OLE DB đặt dữ liệu vào các đối tượng được xếp thành bảng gọi là các rowset. SQL Server cho phép các rowset từ nguồn cung cấp OLE DB được tham chiếu đến các câu lệnh Transact-SQL như là các bảng.

Các table và view trong các nguồn dữ liệu bên ngoài có thể tham chiếu trực tiếp trong các câu lệnh Transact-SQL gồm: SELECT, INSERT, UPDATE, và DELETE.

Chú ý: Việc sử dụng các câu truy vấn phân tán trong SQL Server là tương tự các chức năng của bảng liên kết qua ODBC. Chức năng này được hỗ trợ trước đây

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 4 của Microsoft Access, bây giờ được xây dựng vào SQL Server sử dụng OLE DB như là giao diện cho dữ liệu bên ngoài.

Minh hoạ sau đây trình bày các kết nối giữa một máy trạm với một mẫu cài đặt của SQL Server với một nguồn cung cấp OLE DB.

Việc chỉ rỏ một mẫu cài đặt của SQL Server 2005 trong một máy chủ đang chạy đa mẫu cài đặt của SQL Server 2005 đòi hỏi cú pháp không thay đổi đến các yếu tố của Transact-SQL mà đã được sử dụng trong các câu truy vấn phân tán. Các mẫu cài đặt có thể được xác định trong các câu truy vấn phân tán bằng cách

sử dụng một trong các phương pháp sau:

 Xác định một tên máy chủ bằng cách sử dụng cú

pháp 'server_name\instance_name' trong tham

số @datasrc của sp_addlinkedserver.

 Xác định 'server=server_name\instance_name' trong chuổi kết nối

(connection string).

Nếu một mẫu cài đặt không được xác định, câu truy vấn phân tán kết nối đến cài đặt mặt định của SQL Server 2005 trong máy chủ đã chỉ định.

Ví dụ: Chỉ định một mẫu cài đặt có tên là DHKH trong một máy chủ có tên

DHMO như sau:

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 5

+ Chỉ định một liên kết server trong một mẫu cài đặt của SQL Server sử dụng @datasrc:

sp_addlinkedserver @server = 'DHMO/DHKH_1', @provider = 'SQLOLEDB',@datasource = ‘DHMO/DHKH’

+ Chỉ định một liên kết server trong một mẫu cài đặt của SQL Server sử dụng INSTANCENAME trong một chuổi “provider”:

sp_addlinkedserver @server = 'DHMO/DHKH_2', @provider = 'SQLOLEDB', @provstr = 'Server=DHMO;INSTANCENAME=DHKH'

+ Chỉ định một mẫu cài đặt của SQL Server trong OPEN DATASOURCE sử dụng Data Source:

SELECT *

FROM OPENDATASOURCE(

'SQLOLEDB',

'Data Source=DHMO/DHKH;User ID=sa;Password=123'

).Northwind.dbo.Categories

+ Chỉ định một mẫu cài đặt của SQL Server trong OPENROWSET sử dụng một chuổi người cung cấp (provider):

SELECT a.*

FROM OPENROWSET(

'SQLOLEDB',

'Data Source=DHH;INSTANCENAME=DHKH;

User ID=sa;Password=123',

Northwind.dbo.Categories

) AS a

+ Chỉ định một mẫu cài đặt của SQL Server trong OPENROWSET sử dụng một tham số của nguồn dữ liệu (datasource):

SELECT a.*

FROM OPENROWSET(

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 6 'SQLOLEDB','DHMO/DHKH','sa','123',

'SELECT * FROM Northwind.dbo.Categories'

) AS a

III. CÁC THÀNH PHẦN TRONG LINKED SERVER

Sau khi một máy chủ liên kết (linked server ) được định nghĩa, để các đối tượng tham chiếu dữ liệu trong máy phục vụ liên kết. Chúng ta có thể sử dụng một tên gồm 4 thành phần: linked_server_name.catalog.schema.object_name trong các câu lệnh của Transact-SQL để tham chiếu các đối tượng dữ liệu trong máy chủ liên kết đó.

Bảng dưới đây mô tả các phần của 4 tên bộ phận (Part name).

Part name Mô tả

linked_server_name Liên kết đến máy chủ đang tham chiếu đến dữ liệu nguồn (OLE

DB data source)

Catalog Catalog trong OLE DB data source chứa đối tượng (database)

Schema Lược đồ trong catalog chứa đối tượng

object_name Đối tượng dữ liệu trong lược đồ

SQL Server sử dụng tên liên kết máy chủ (linked server name ) để định danh nơi cung cấp OLE DB và dữ liệu nguồn, các tham số catalog, schema,

object_name được hợp quy cách đến nguồn cung cấp OLE DB để nhận dạng một đối tượng dữ liệu đặc biệt. Khi một linked_server tham chiếu đến một mẫu cài đặt của SQL Server thì catalog tham chiếu đến cơ sở dữ liệu (database) và schema tham chiếu đến một định danh chủ nhân tạo đối tượng (owner ID)

Sự minh hoạ này trình bày 4 thành phần của SQL Server giải quyết đến một đối tượng trong nguồn cung cấp QLE DB.

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 7

IV. KIẾN TRÚC CỦA CÂU TRUY VẤN PHÂN TÁN

Microsoft SQL Server 2005 hỗ trợ hai phương thức để tham chiếu nguồn

dữ liệu OLE DB hỗn tạp trong câu lệnh Transact-SQL.

 Tên máy chủ liên kết (Linked server names):

Thủ tục bảo quản hệ thống (system stored

procedures) sp_addlinkedserver và sp_addlinkedsrvlogin được sử dụng để đưa một tên máy chủ đến một dữ liệu nguồn OLE DB. Các đối tượng trong các máy chủ liên kết có thể được tham chiếu trong các câu lệnh Transact-SQL sử dụng bốn thành phần.

Ví dụ: nếu một máy chủ liên kết tên là DHKH được định nghĩa dựa vào một mẫu cài đặt khác của SQL Server 2005, câu lệnh sau tham chiếu một bảng trong máy chủ đó.

SELECT ten, ngaysinh

FROM DHKH.DB_QLSV.QLSV.HOSO_SV

Tên máy chủ liên kết cũng có thể được chỉ định trong một câu lệnh OPENQUERY để mở một rowset từ dữ liệu nguồn OLE DB. Rowset này có thể tham chiếu như là một bảng dữ liệu trong câu lệnh Transact-SQL.

 Tên bộ nối Ad hoc (Ad hoc connector names)

Để ít xảy ra các tham chiếu đến một dữ liệu nguồn, các chức năng OPENROWSET hoặc OPENDATASOURCE được chỉ định với các thông tin cần thiết để kết nối đến máy chủ liên kết. Rowset có thể được tham chiếu như cách một bảng được tham chiếu trong câu lệnh Transact-SQL.

Ví dụ câu lệnh truy vấn sau:

SELECT *

FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'c:\MSOffice\Access\Samples\Northwind.mdb';'Admin';''; Employees)

Những người dùng SQL Server liên lạc giữa máy quan hệ và máy lưu trữ. Máy quan hệ ngắt xuống từng câu lệnh Transact-SQL vào một khối các hoạt động trong các rowset OLE DB đơn được mở bởi máy lưu trữ từ các bảng dữ liệu cơ

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 8

sở. Nghĩa là máy quan hệ cũng có thể mở các rowset OLE DB đơn trong một vài

dữ liệu nguồn OLE DB.

Máy quan hệ sử dụng các giao diện lập trình ứng dụng (API) OLE DB để

mở các rowset trong các máy chủ liên kết, tìm nạp từng dòng và quản lý các giao tác (transaction). Mỗi dữ liệu nguồn OLE DB truy xuất như một máy chủ liên kết, một nguồn cung cấp OLE DB phải được hiện diện trong máy chủ đang chạy SQL Server. Việc thiết lập các hoạt động mà có thể sử dụng để dựa vào một chỉ định nguồn dữ liệu OLE DB phụ thuộc vào khả năng của nguồn cung cấp OLE DB.

Với mỗi mẫu cài đặt của SQL Server 2005, các thành viên của nhóm sysadmin được cố định vai trò máy chủ cho phép hoặc không cho phép sử dụng các “tên bộ nối ad-hoc” cho một nguồn cung cấp OLE DB sử dụng thuộc tính của SQL Server là DisallowAdhocAccess. Khi ad-hoc truy xuất nó cho phép tất cả thành viên đã đăng nhập vào mẫu cài đặt đó có thể thực thi các câu lệnh SQL chứa đựng bộ nối ad-hoc, tham chiếu vào dữ liệu nguồn trong mạng mà có thể được truy xuất sử dụng nguồn cung cấp OLE DB. Để điều khiển việc truy xuất các thành viên có vai trò sysadmin có thể không cho phép ad-hoc truy xuất bởi nguồn cung cấp OLE DB. Theo cách đó giới hạn người dùng những nguồn dữ liệu tham chiếu bằng liên kết máy chủ chỉ được định nghĩa bởi người quản trị. Theo mặc định, truy xuất ad-hoc được nhúng trong nguồn cung cấp OLE DB và không cho phép tất cả các nguồn cung cấp khác.

Các câu truy vấn phân tán có thể cho phép người sử dụng truy xuất nguồn

dữ liệu (ví dụ: các file, các nguồn dữ liệu không quan hệ ) sử dụng ngữ cảnh bảo mật của tài khoản Microsoft Windows mà SQL Server đang chạy. SQL Server

2005 đóng vai trò thích hợp đăng nhập cho đăng nhập Windows; tuy nhiên, đó là điều không thể thực hiện được của việc đăng nhập SQL Server.

Đây có thể là khả năng cho phép một người dùng truy vấn phân tán truy xuất nguồn dữ liệu khác mà họ không được phân quyền, nhưng các tài khoảng bên dưới mà dịch vụ SQL Server đang chạy có phân quyền. Sử dụng sp_addlinkedsrvlogin để định nghĩa sự chỉ định đăng nhập mà uỷ quyền để truy xuất máy chủ tương ứng. Điều khiển này không có sẵn cho ad- hoc. Vì thế sử dụng thận trọng trong việc nhúng một nguồn cung cấp OLE

DB cho truy xuất ad-hoc.

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 9

Khi có thể thực hiện được, SQL Server đẩy các hành động quan hệ như là nối, hạn chế, chiếu, sắp xếp, và nhóm bằng các thao tác đến nguồn dữ liệu OLE

DB. SQL Server không mặc định quét bảng cơ sở vào SQL Server và biểu diễn chính các thao tác quan hệ. SQL Server truy vấn OLE DB quyết định mức của ngữ pháp của SQL mà nó hỗ trợ, và trên cơ sở các thông tin đó, việc đẩy như là nhiều thao tác quan hệ có thể thực hiện được đến nguồn cung cấp.

SQL Server 2005 chỉ rỏ một máy cho một nguồn cung cấp OLE DB để trả lại các trạng thái biểu thị các giá trị khoá ra sao được phân tán bên trong nguồn dữ liệu OLE DB. Điều này đặt ra cho tối ưu truy vấn SQL Server cao hơn phân tích kiểu dữ liệu trong nguồn dữ liệu dựa vào các yêu cầu của mỗi câu lệnh SQL, làm tăng thêm khả năng tối ưu truy vấn để tạo ra các kế hoạch thực thi tối ưu.

V. CÁC TÙY CHỌN ĐỂ ĐỊNH NGHĨA LIÊN KẾT MÁY CHỦ

Các tuỳ chọn liên kết máy chủ được định nghĩa bằng sử dụng điều khiển sp_serveroption và cách SQL Server sử dụng đối chiếu từ các máy chủ liên kết:

 Sử dụng sự tham chiếu từ xa (use remote collation) mục chọn này chỉ định

sự tham chiếu một cột từ xa hoặc một máy chủ địa phương sẽ được sử dụng. Khi true, sự tham chiếu các cột được sử dụng cho các nguồn dữ liệu SQL Server, và sự tham chiếu được chỉ định trong collation

name được sử dụng cho các nguồn dữ liệu. Khi false các câu truy vấn

phân tán luôn luôn sử dụng các tham chiếu mặc định của máy chủ địa phương và collation name các tham chiếu của các cột từ xa được bỏ qua.

 Tuỳ chọn collation name chỉ định tên của tham chiếu sử dụng bởi nguồn

dữ liệu từ xa nếu use remote collationtrue và dữ liệu nguồn không phải là một dữ liệu nguồn của SQL Server. Tên phải là một trong các tham chiếu hỗ trợ bởi SQL Server. Sử dụng tuỳ chọn này khi bạn truy xuất một nguồn dữ liệu OLE DB khác SQL Server, nhưng những tham chiếu thoả một trong các tham chiếu của SQL Server. Các nguồn dữ liệu SQL Server báo cáo các cột tham chiếu của chúng, và collation

name được bỏ qua cho các máy chủ liên kết mà tham chiếu các nguồn dữ

liệu SQL Server .

Hệ quản trị cơ sở dữ liệu - SQL Server - Bài 6 Trang 10

Chú ý: Sử dụng các tuỳ chọn liên kết máy chủ chỉ là cách để cho phép tham

chiếu từ xa. Do đó, các câu lệnh truy vấn được xây dựng sử dụng ad-hoc cung cấp

bởiOPENROWSET và OPENDATASOURCE không thể sử dụng các thông tin

tham chiếu của dữ liệu ký tự từ xa. Hơn nữa, tất cả các máy chủ liên kết trong

phiên bản SQL Server 7.0 được nâng cấp lên SQL Server 2000 hoặc về sau được

thiết lập use remote collation = false

Tổng hợp các thiết lập tuỳ chọn

Bảng sau tổng hợp các SQL Server xác định các tham chiếu mà được sử

dụng cho mỗi cột khi use remote collation được thiết lập là True (hoặc On)

Kiểu

Linked

server

Tên tham chiếu không thiết lập Tên tham chiếu thiết lập

(đến CollX)

SQL Server Các cột từ xa thực sự tham chiếu Các cột từ xa thực sự tham

chiếu

Others Mặt định tham chiếu mẫu cài đặt cục bộ của

SQL Server. CollX

Bảng sau tổng hợp cách mà SQL Server xác định tham chiếu mà được sử

dụng cho mỗi cột khi mà use remote collation được thiết lập là False (hoặc Off).

Kiểu

Linked

server

Tên tham chiếu không thiết lập Tên tham chiếu thiết lập (đến CollX)

SQL Server Mặt định tham chiếu mẫu cài đặt cục

bộ của SQL Server

Mặt định tham chiếu mẫu cài đặt cục

bộ của SQL Server

Others Mặt định tham chiếu mẫu cài đặt cục

bộ của SQL Server

Mặt định tham chiếu mẫu cài đặt cục

bộ của SQL Server

Loopback các máy chủ liên kết

Các máy chủ liên kết có thể được định nghĩa điểm trỏ đằng sau (loop back)

đến một máy chủ mà chúng đã được định nghĩa. Các máy chủ Loopback hầu như

hữu ích nhất khi kiểm thử một ứng dụng mà sử dụng các câu truy vấn phân tán

trong một máy chủ mạng đơn độc.

Ví dụ: việc thực thi thủ tục sp_addlinkedserver trong một máy chủ được

đặt tên là MyServer định nghĩa một máy chủ liên kết loopback.

Một phần của tài liệu Bài giảng hệ quản trị csdl it10 Đại học mở hà nội (Trang 61 - 79)

Tải bản đầy đủ (PDF)

(79 trang)