Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 1
PHẦN MỞ ĐẦU
Xử lý các giao dịch đã trở nên ngày càng quan trọng trong các ứng dụng
công nghệ thông tin cho doanh nghiệp, đặc biệt là trong các lĩnh vực ngân hàng,
tài chính, chứng khoán, giao dịch bất động sản… Kết quả là người sử dụng phải
truy cập, phân tích, xử lý, tích hợp, lưu trữ và xác minh dữ liệu giao dịch nhanh
hơn bao giờ hết – thường là trong thời gian thực – trên những hệ thống dữ liệu
không có chỗ cho việc gián đoạn hoặc thời gian chết. Nhu cầu về dữ liệu với độ
trễ thấp được kết hợp bởi sự tăng trưởng theo cấp số nhân về khối lượng dữ liệu
giao dịch và sự gia tăng các môi trường ứng dụng công nghệ thông tin không đồng
nhất trong các doanh nghiệp, tạo ra một nhu cầu cấp thiết về tích hợp dữ liệu cũng
như giải pháp đồng bộ dữ liệu. Các giải pháp này luôn đi kèm với yêu cầu dễ dàng
trong triển khai và tác động ở mức thấp nhất đối với các ứng dụng quan trọng của
doanh nghiệp.
Trong nội dung bài tiểu luận này, tôi xin trình bày kiến trúc cơ sở dữ liệu
phân tán được xây dựng và hỗ trợ trong hệ quản trị cơ sở dữ liệu Oracle 11g và
một công nghệ đồng bộ dữ liệu phân tán nổi bật của Oracle, đó là Oracle
GoldenGate 11g. Hiện nay, công nghệ GoldenGate được sử dụng hầu hết trong
các doanh nghiệp hàng đầu thế giới để hỗ trợ cho các hệ thống dữ liệu quan trọng
trong việc tích hợp và tăng cường tính sẵn sàng cao cho các cơ sở dữ liệu. Oracle
GoldenGate 11g phát triển dựa trên việc ứng dụng một loạt các công nghệ mới
nên tài liệu về kiến trúc, tài liệu triển khai chưa có nhiều. Trong tiểu luận này, tôi
chỉ trình bày kiến trúc công nghệ cơ bản của nó.
Tôi xin chân thành cảm ơn Phó giáo sư, Tiến sĩ Đỗ Phúc, giảng viên môn
học “Cơ sở dữ liệu nâng cao”, đã truyền đạt những kiến thức quý báu về các hệ cơ
sở dữ liệu tiên tiến hiện nay cũng như những hướng nghiên cứu sâu hơn về hệ cơ
sở dữ liệu phân tán; đã hướng dẫn và chỉ bảo để hoàn thành chuyên đề nghiên cứu
rất bổ ích và lý thú này.
Nội dung của bài tiểu luận ngoài phần mở đầu và kết luận, có hai chương:
Chương 1: Cơ sở dữ liệu phân tán trong Oracle 11g.
Chương 2: Công nghệ và cơ chế đồng bộ hoá dữ liệu của GoldenGate 11g.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 2
CHƯƠNG 1
CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG ORACLE 11G
Nội dung chương này trình bày một số khái niệm cơ bản về kiến trúc cơ sở dữ
liệu phân tán; sự hỗ trợ cơ sở dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu
Oracle 11g bao gồm: Kiến trúc cơ sở dữ liệu phân tán, Liên kết cơ sở dữ liệu,
Quản trị cơ sở dữ liệu phân tán, Xử lý giao dịch trong hệ thống phân tán, Phát
triển ứng dụng cho một hệ cơ sở dữ liệu phân tán.
1. Các khái niệm về cơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tán (Distributed Database - DDB) là một tập hợp nhiều cơ
sở dữ liệu có liên đới logic và được phân bố trên một mạng máy tính. Trong khái
niệm này có hai thuật ngữ quan trọng trong các định nghĩa là “liên đới logic” và
“phân bố trên một mạng máy tính”.
- Liên đới logic: Toàn bộ dữ liệu của cơ sở dữ liệu phân tán có một số các thuộc
tính ràng buộc chúng với nhau, điều này giúp chúng ta có thể phân biệt một cơ sở
dữ liệu phân tán với một tập hợp cơ sở dữ liệu cục bộ hoặc các tập tin lưu trữ tại
các vị trí khác nhau trong một mạng máy tính.
- Phân bố trên một mạng máy tính: Toàn bộ dữ liệu của cơ sở dữ liệu phân tán
không được lưu trữ ở một nơi mà lưu trữ trên nhiều trạm thuộc mạng máy tính,
điều này giúp chúng ta phân biệt cơ sở dữ liệu phân tán với cơ sở dữ liệu tập trung
đơn lẻ.
Hệ quản trị cơ sở dữ liệu phân tán (Distributed Database Management System
D-DBMS) được định nghĩa là một hệ thống phần mềm cho phép quản trị các hệ
cơ sở dữ liệu phân tán và làm cho sự phân tán trở nên “trong suốt” đối với người
sử dụng.
Hệ cơ sở dữ liệu phân tán (Distributed Database System - DDBS) được xây
dựng dựa trên hai công nghệ cơ bản là cơ sở dữ liệu và mạng máy tính. Một hệ cơ
sở dữ liệu phân tán không phải là một “tập hợp các tập tin” được lưu trữ riêng rẽ
tại mỗi nút của một mạng máy tính. Để tạo ra một hệ cơ sở dữ liệu phân tán các
tập tin không chỉ có liên đới logic mà chúng còn phải có cấu trúc và được truy
xuất qua một giao diện chung.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 3
Hình 1.1: Mô hình hệ cơ sở dữ liệu phân tán
Hệ cơ sở dữ liệu phân tán thuần nhất: các cơ sở dữ liệu cục bộ ở tất cả các nơi
(site) đều dùng chung một hệ quản trị cơ sở dữ liệu.
Hệ cơ sở dữ liệu phân tán không thuần nhất: các cơ sở dữ liệu cục bộ ở các nơi
(site) không dùng chung một hệ quản trị cơ sở dữ liệu.
2. Kiến trúc cơ bản của cơ sở dữ liệu phân tán
Kiến trúc này không biểu diễn tường minh cho mọi hệ cơ sở dữ liệu phân tán.
Tuy nhiên, với kiến trúc này các mức của cơ sở dữ liệu phân tán được trình bày
mang tính khái niệm thích hợp để dễ hiểu về tổ chức của các cơ sở dữ liệu phân
tán nói chung.
- Sơ đồ tổng thể: Định nghĩa tất cả các dữ liệu sẽ được lưu trữ trong cơ sở dữ
liệu phân tán. Trong mô hình quan hệ, sơ đồ tổng thể bao gồm định nghĩa của các
tập quan hệ tổng thể.
- Sơ đồ phân đoạn: Mỗi quan hệ tổng thể có thể chia thành một vài phần không
gối lên nhau được gọi là đoạn (fragments). Có nhiều cách khác nhau để thực hiện
việc phân chia này. Ánh xạ (một - nhiều) giữa sơ đồ tổng thể và các đoạn được
định nghĩa trong sơ đồ phân đoạn.
- Sơ đồ định vị: Các đoạn là các phần logic của quan hệ tổng thể được định vị
vật lý trên một hoặc nhiều vị trí trên mạng. Sơ đồ định vị định nghĩa đoạn nào
định vị tại các vị trí nào. Lưu ý rằng kiểu ánh xạ được định nghĩa trong sơ đồ định
vị quyết định cơ sở dữ liệu phân tán là dư thừa hay không.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 4
- Sơ đồ ánh xạ cục bộ: Ánh xạ các ảnh vật lý và các đối tượng được lưu trữ tại
một trạm (tất cả các đoạn của một quan hệ tổng thể trên cùng một vị trí tạo ra một
ảnh vật lý).
Hình 1.2: Các mức trong suốt phân tán
3. Các lý do để sử dụng cơ sở dữ liệu phân tán
- Các tổ chức có cấu trúc phân tán: Trong thực tế có nhiều tổ chức được phân tán
khắp nơi, trong khi đó, dữ liệu quản lý ngày càng lớn và phục vụ cho đa người
dùng nằm phân tán, vì vậy cơ sở dữ liệu phân tán là con đường thích hợp với cấu
trúc tự nhiên của các tổ chức đó.
- Cần kết nối các cơ sở dữ liệu có sẵn: Cơ sở dữ liệu phân tán là giải pháp tự nhiên
khi có các cơ sở dữ liệu đang tồn tại và sự cần thiết xây dựng một ứng dụng toàn
cục. Trong trường hợp này cơ sở dữ liệu phân tán được tạo theo tiến trình từ dưới
lên dựa trên nền tảng cơ sở dữ liệu đang tồn tại. Tiến trình này đòi hỏi phải tái cấu
trúc các cơ sở dữ liệu cục bộ ở một mức nhất định.
- Sự lớn mạnh của tổ chức: Các tổ chức có thể phát triển mở rộng bằng cách thành
lập thêm các đơn vị mới, vừa có tính tự trị, vừa có quan hệ với các đơn vị tổ chức
khác.
- Giảm chi phí truyền thông: Tăng ứng dụng cục bộ, giảm chi phí truyền thông.
- Nâng cao hiệu suất: Có cơ chế xử lý song song và phân mảnh dữ liệu theo ứng
dụng làm cực đại hóa tính cục bộ của ứng dụng.
-Tăng độ tin cậy và tính sẵn sàng: Nếu có một thành phần nào đó của hệ thống bị
hỏng, hệ thống vẫn có thể duy trì hoạt động.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 5
4. Kiến trúc cơ sở dữ liệu phân tán trong Oracle 11g
Một hệ cơ sở dữ liệu phân tán cho phép các ứng dụng truy cập dữ liệu từ các cơ
sở dữ liệu cục bộ và từ xa. Trong một hệ cơ sở dữ liệu phân thán thuần nhất, mỗi
cơ sở dữ liệu là một cơ sở dữ liệu Orcacle. Trong một hệ cơ sở dữ liệu phân thán
không thuần nhất, có ít nhất một cơ sở dữ liệu không phải là Oracle. Các cơ sở dữ
liệu phân tán sử dụng kiến trúc client/server để xử lý các yêu cầu thông tin.
Hệ cơ sở dữ liệu phân tán thuần nhất
Trong Oracle, một hệ cơ sở dữ liệu phân tán thuần nhất là một mạng lưới của
hai hay nhiều cơ sở dữ liệu Oracle nằm trên một hoặc nhiều máy. Hình 1.3 minh
họa một hệ thống phân tán kết nối 3 cơ sở dữ liệu: HQ, MFG và SALES. Một ứng
dụng đồng thời có thể truy cập hoặc sửa đổi dữ liệu trong một số cơ sở dữ liệu
trong môi trường phân tán. Ví dụ, một truy vấn từ một máy trạm Manufacturing
trên cơ sở dữ liệu cục bộ MFG có thể truy xuất dữ liệu từ bảng products trên cơ
sở dữ liệu cục bộ và bảng dept trên cơ sở dữ liệu từ xa HQ. Đối với một ứng
dụng client, vị trí và nền tảng của cơ sở dữ liệu là trong suốt. Ta cũng có thể tạo ra
các synonyms cho các đối tượng từ xa trong hệ thống phân tán để người dùng có
thể truy cập chúng với cú pháp tương tự như các đối tượng cục bộ. Ví dụ, nếu ta
kết nối đến cơ sở dữ liệu MFG nhưng muốn truy cập dữ liệu trên cơ sở dữ liệu HQ,
ta tạo ra một synonyms trên MFG cho bảng dept từ xa, cho phép thực hiện truy
vấn này: SELECT * FROM dept;
Bằng cách này, một hệ thống phân tán cho phép truy cập như một hệ thống dữ
liệu tập trung. Người sử dụng trên MFG không cần phải biết rằng các dữ liệu họ
đang truy cập nằm trên các cơ sở dữ liệu từ xa.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 6
Hình 1.3: Cơ sở dữ liệu phân tán thuần nhất
Cơ sở dữ liệu phân tán và xử lý phân tán
Các thuật ngữ cơ sở dữ liệu phân tán và xử lý phân tán có liên quan mật thiết
với nhau, nhưng chúng có ý nghĩa khác nhau. Oracle định nghĩa như sau:
- Cơ sở dữ liệu phân tán: Một tập hợp các cơ sở dữ liệu trong một hệ thống phân
tán mà có thể được truy cập bởi các ứng dụng như một nguồn dữ liệu đơn lẻ.
- Xử lý phân tán: Các hoạt động xảy ra khi một ứng dụng phân phối các tác vụ
của nó vào những máy tính khác nhau trong một mạng.
Các hệ thống cơ sở dữ liệu phân tán khác nhau sử dụng các kiến trúc xử lý phân
tán khác nhau. Ví dụ, một máy chủ cơ sở dữ liệu Oracle đóng vai trò như một máy
trạm khi nó yêu cầu dữ liệu mà một máy chủ khác quản lý.
Cơ sở dữ liệu phân tán và cơ sở dữ liệu thứ bản (replicated database)
Hai thuật ngữ này cũng có liên quan với nhau nhưng hoàn toàn khác nhau.
Trong một cơ sở dữ liệu phân tán hoàn toàn (nghĩa là, không có dữ liệu thứ bản),
hệ thống quản lý một bản sao duy nhất của tất cả dữ liệu và các đối tượng cơ sở
dữ liệu mà nó hỗ trợ. Thông thường, các ứng dụng cơ sở dữ liệu phân tán dùng
các giao dịch phân tán để truy cập cả hai dữ liệu cục bộ và dữ liệu từ xa và chỉnh
sửa cơ sở dữ liệu toàn cục trong thời gian thực. Trong tiểu luận này, ta chỉ nói đến
cơ sở dữ liệu phân tán hoàn toàn.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 7
Thuật ngữ thứ bản đề cập đến các hoạt động sao chép và duy trì các đối tượng
cơ sở dữ liệu trong nhiều cơ sở dữ liệu thuộc về một hệ thống phân tán. Dựa trên
công nghệ của cơ sở dữ liệu phân tán nhưng cơ sở dữ liệu thứ bản không cung cấp
được cho các ứng dụng các lợi ích mà môi trường cơ sở dữ liệu phân tán có sẵn.
Thông thường, dữ liệu thứ bản được sử dụng để cải thiện hiệu suất của cơ sở dữ
liệu cục bộ và bảo vệ tính sẵn sàng của các ứng dụng. Ví dụ, một ứng dụng
thường truy cập đến cơ sở dữ liệu cục bộ hơn là truy cập đến một máy chủ từ xa
để giảm thiểu lưu lượng truy cập mạng và đạt hiệu suất tối đa. Hơn nữa, ứng dụng
vẫn có thể hoạt động nếu máy chủ cục bộ gặp sự cố nhưng các máy chủ khác với
dữ liệu thứ bản vẫn còn truy cập được.
Hệ cơ sở dữ liệu phân tán không thuần nhất
Trong một hệ cơ sở dữ liệu phân tán không thuần nhất có ít nhất một cơ sở dữ
liệu không phải là Oracle. Để truy cập, Oracle xem nó như là một cơ sở dữ liệu
Oracle cục bộ. Máy chủ cơ sở dữ liệu Oracle truy cập cơ sở dữ liệu này thông qua
các dịch vụ xử lý không đồng nhất (Oracle Heterogeneous Services) kết hợp với
một agent. Nếu ta truy cập một cơ sở dữ liệu không phải là Oracle thông qua
Oracle Transparent Gateway thì agent chính là cổng truy cập của ứng dụng. Ví
dụ, nếu ta có một cơ sở dữ liệu Sysbase trong hệ cơ sở dữ liệu phân tán Oracle thì
ta cần khai báo một cổng truy cập Sysbase để cơ sở dữ liệu Oracle có thể giao tiếp
với nó. Ngoài ra, ta cũng có thể dùng các kết nối thông dụng để truy cập đến các
cơ sở dữ liệu không phải Oracle thông qua các giao thức ODBC hay OLE DB.
Dịch vụ xử lý không đồng nhất (Heterogeneous Services): Heterogeneous
Services (HS) là một thành phần tích hợp trong máy chủ cơ sở dữ liệu Oracle. HS
cung cấp kiến trúc chung và cơ chế quản trị của các sản phẩm Oracle Database
Gateway và các phương tiện truy cập không đồng nhất khác. Ngoài ra, nó cũng
cung cấp khả năng tương thích ngược cho hầu hết phiên bản của Oracle
Transparent Gateway.
Transparent Gateway Agents: Đối với từng hệ cơ sở dữ liệu không phải là
Oracle mà ta truy cập, HS sử dụng một Transparency Gateway Agent để giao tiếp
với cơ sở dữ liệu đó. Agent này là đặc trưng cho từng hệ thống cơ sở dữ liệu, vì
vậy mỗi loại hệ thống có đòi hỏi có một agent khác nhau. Transparency Gateway
Agent tạo thuận lợi trong việc giao tiếp giữa một hệ thống Oracle và không Oracle
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 8
và sử dụng các thành phần của HS trong máy chủ Oracle. Agent thực hiện các
lệnh SQL và các yêu cầu giao dịch khác tại hệ thống không Oracle thay mặt cho
máy chủ cơ sở dữ liệu Oracle.
Các kết nối thông dụng (Generic connectivity): Các kết nối thông dụng cho
phép kết nối đến các dữ liệu trong hệ thống không phải Oracle thông qua HS
ODBC agent hoặc HS OLE DB agent. Cả hai đều được tích hợp trong các sản
phẩm Oracle. Ta có thể dùng các trình điều khiển ODBC hoặc OLE DB để giao
tiếp với các agent. Tuy nhiên, một số tính năng truy cập dữ liệu chỉ có trên
Transparency Gateway Agent.
Kiến trúc cơ sở dữ liệu client/server
Một máy chủ cơ sở dữ liệu Oracle là một phần mềm Orcacle quản lý một cơ sở
dữ liệu và một máy trạm Oracle là một ứng dụng truy xuất thông tin trên máy chủ.
Mỗi máy tính trong mạng là một nút có thể lưu trữ một hay nhiều cơ sở dữ liệu.
Mỗi nút trong một hệ cơ sở dữ liệu phân tán có thể hoạt động như một máy trạm,
máy chủ hoặc cả hai tuỳ thuộc vào tình huống cụ thể.
Trong hình 1.4, máy lưu trữ cơ sở dữ liệu HQ hành động như một máy chủ cơ
sở dữ liệu khi một lệnh tác động lên cơ sở dữ liệu của nó (ví dụ, lệnh thứ hai trong
Transaction tác động lên bảng dept), nhưng lại hành động như một máy trạm khi
có một lệnh tác động lên cơ sở dữ liệu từ xa (ví dụ, lệnh đầu tiên trong
Transaction tác động lên bảng emp trong cơ sở dữ liệu từ xa SALES).
Hình 1.4: Một hệ cơ sở dữ liệu phân tán Oracle
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 9
Một máy trạm có thể kết nối trực tiếp hoặc gián tiếp đến một máy chủ cơ sở dữ
liệu. Một kết nối trực tiếp xảy ra khi một máy trạm kết nối đến một máy chủ và
truy cập thông tin trong cơ sở dữ liệu chứa trên máy chủ đó. Ví dụ, nếu kết nối với
cơ sở dữ liệu HQ và truy cập bảng dept trên cơ sở dữ liệu này như trong hình 1.4,
ta có thể gõ lệnh như sau: SELECT * FROM dept; Truy vấn này là trực tiếp
vì ta không truy cập đối tượng nào trên cơ sở dữ liệu từ xa. Ngược lại, một kết nối
gián tiếp xảy ra khi một máy trạm kết nối đến một máy chủ và sau đó truy cập
thông tin trong một cơ sở dữ liệu trên máy chủ khác. Ví dụ, nếu ta kết nối đến cơ
sở dữ liệu HQ và truy cập đến bảng emp của cơ sở dữ liệu từ xa SALES như trong
hình 1.4, ta gõ lệnh như sau: SELECT * FROM emp@sales; Truy vấn này là
gián tiếp vì đối tượng mà ta đang truy cập không nằm trên cơ sở dữ liệu mà ta
đang kết nối.
5. Các liên kết cơ sở dữ liệu (Database links)
Khái niệm trung tâm của các hệ cơ sở dữ liệu phân tán chính là Database link.
Một database link là một kết nối giữa hai máy chủ vật lý, cho phép một máy trạm
truy cập chúng như một cơ sở dữ liệu logic.
Database link
Database link là một con trỏ xác định một con đường giao tiếp một chiều từ
một máy chủ cơ sở dữ liệu Oracle đến một máy chủ cơ sở dữ liệu khác. Các con
trỏ liên kết được định nghĩa là một mục trong bảng từ điển dữ liệu. Để truy cập
liên kết này, ta phải được kết nối với cơ sở dữ liệu cục bộ có chứa các mục từ điển
dữ liệu đó. Một liên kết database link là một cách diễn giải theo ý nghĩa rằng một
máy trạm kết nối đến một cơ sở dữ liệu cục bộ A có thể sử dụng một liên kết được
lưu trữ trong cơ sở dữ liệu A để truy cập thông tin trong cơ sở dữ liệu từ xa B,
nhưng người dùng kết nối đến cơ sở dữ liệu B không thể sử dụng liên kết đó để
truy xuất dữ liệu trong cơ sở dữ liệu A. Một kết nối database link cho phép người
dùng cục bộ truy xuất dữ liệu trên cơ sở dữ liệu từ xa. Vì vậy, mỗi cơ sở dữ liệu
trong hệ thống phân tán phải có một tên toàn cục (global database name) duy nhất
trong một mạng (domain network). Tên toàn cục này xác định duy nhất một máy
chủ cơ sở dữ liệu trong một hệ phân tán.
Hình 1.5 mô tả người dùng scott truy cập bảng emp trên cơ sở dữ liệu từ xa
với tên toàn cục hq.acme.com.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 10
Hình 1.5: Database link
Các database link có thể là riêng tư hay công khai. Nếu là riêng tư thì chỉ có
người tạo ra liên kết đó mới có quyền truy cập. Nếu là công khai thì tất cả người
dùng cơ sở dữ liệu đó đều có quyền truy cập.
Sự khác biệt chủ yếu trong các database link là cách mà chúng kết nối đến một
cơ sở dữ liệu từ xa. Người dùng truy cập vào một cơ sở dữ liệu từ xa thông qua
các loại liên kết sau:
Loại liên kết
Mô tả
Connected user link
Người dùng kết nối như chính mình, nghĩa là họ phải có một
tài khoản trên cơ sở dữ liệu từ xa với username và password
giống như trên cơ sở dữ liệu cục bộ.
Fixed user link
Người dùng kết nối bằng cách sử dụng username và
password được tham chiếu trong liên kết. Ví dụ, nếu Jane sử
dụng một Fixed user link kết nối đến cơ sở dữ liệu HQ với
username và pasword là scott/tiger thì Jane có tất cả các
đặc quyền mà HQ đã cấp cho scott và tất cả các vai trò
(roles) mà scott được cấp trong HQ.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 11
Current user link
Người dùng kết nối như một người dùng toàn cục. Một
người dùng cục bộ có thể kết nối như là một người dùng
toàn cục trong ngữ cảnh của một stored procedure mà không
cần lưu password của người dùng toàn cục trong khai báo
liên kết. Ví dụ, Jane có truy cập một thủ tục do Scott viết,
truy cập tài khoản của Scott và các lược đồ của Scott trên cơ
sở dữ liệu HQ. Current user link là một thể hiện của Oracle
Advanced Security.
Tạo các database link bằng cách dùng lệnh CREATE DATABASE LINK, sau
khi liên kết được tạo ra ta có thể sử dụng nó để khai báo các đối tượng lược đồ
trong câu lệnh SQL.
Các liên kết cơ sở dữ liệu được chia xẻ (Shared Database Links)
Một shared database link là một liên kết giữa một tiến trình của máy chủ cục bộ
và một cơ sở dữ liệu từ xa. Liên kết này là được chia xẻ vì nhiều tiến trình máy
trạm có thể sử dụng liên kết này cùng lúc.
Khi một cơ sở dữ liệu cục bộ được kết nối với một cơ sở dữ liệu từ xa thông
qua một database link, cơ sở dữ liệu có thể chạy trong chế độ dedicated server
hoặc shared server. Bảng dưới đây minh hoạ các khả năng:
Một shared database link có thể tồn tại một trong bốn cấu hình trên. Các shared
link khác với các standard link như sau:
- Những người dùng khác nhau truy cập cùng một đối tượng lược đồ thông
qua một database link có thể chia sẻ một kết nối mạng.
- Khi một người dùng cần phải thiết lập một kết nối đến một máy chủ từ xa
từ một tiến trình máy chủ cụ thể, tiến trình này có thể tái sử dụng các kết
nối đã được thiết lập trước đó đến máy chủ từ xa. Tái sử dụng kết nối có
thể xảy ra nếu kết nối đó đã được thiết lập trên cùng một tiến trình máy chủ
với cùng database link, có thể trong một phiên làm việc (session) khác.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 12
Trong một database link không chia xẻ, một kết không được chia xẻ qua
nhiều phiên làm việc khác nhau.
- Khi sử dụng một shared database link trong cấu hình shared server, một kết
nối mạng được thiết lập trực tiếp ngoài tiến trình shared server tại máy chủ
cục bộ. Đối với một non-shared database link trên một máy chủ cục bộ chia
xẻ, kết nối này sẽ được thiết lập thông qua bộ điều phối cục bộ và yêu cầu
các dữ liệu phải thông qua các bộ điều phối này.
Tại sao phải sử dụng các database link
Ưu điểm lớn nhất của database link là chúng cho phép người dùng truy cập đến
các đối tượng của người dùng khác trong cơ sở dữ liệu từ xa bằng cách sử dụng
các đặc quyền của chủ sở hữu. Nói cách khác, một người dùng cục bộ có thể truy
cập vào một liên kết đến cơ sở dữ liệu từ xa mà không cần phải là người dùng của
cơ sở dữ liệu từ xa đó.
Tên cơ sở dữ liệu toàn cục trong các database link
Để hiểu cách một database link hoạt động như thế nào, trước tiên ta phải hiểu
tên cơ sở dữ liệu toàn cục là gì. Mỗi cơ sở dữ liệu trong cơ sở dữ liệu phân tán
được xác định duy nhất bằng tên cơ sở dữ liệu toàn cục (Global database name)
của nó. Cơ sở dữ liệu tạo thành tên cơ sở dữ liệu toàn cục bằng cách đặt nó trước
tên miền mạng, được quy định bởi tham số khởi tạo DB_DOMAIN vào lúc khởi
tạo cơ sở dữ liệu. Với những cơ sở dữ liệu riêng lẻ, được quy định bởi tham số
khởi tạo DB_NAME.
Hình 1.6: Minh hoạ một sắp xếp thứ bậc của các cơ sở dữ liệu trong một mạng.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 13
Tên của một cơ sở dữ liệu được hình thành bằng cách bắt đầu từ nút lá của cây
và lần theo đường đi đến nút gốc. Ví dụ, cơ sở dữ liệu mfg trong DIVISION3
thuộc nhánh acme_tools của miền com. Tên cơ sở dữ liệu toàn cục của mfg
được tạo ra bằng cách nối các nút trong cây như sau:
mfg.division3.acme_tools.com
Đặt tên cho các database link
Thông thường, một database link có cùng tên với tên cơ sở dữ liệu toàn cục của
các cơ sở dữ liệu từ xa mà nó tham chiếu. Ví dụ, nếu tên cơ sở dữ liệu toàn cục
của một cơ sở dữ liệu là sales.us.oracle.com thì database link cũng được
gọi là sales.us.oracle.com.
Khi ta thiết lập tham số khởi tạo GLOBAL_NAMES là TRUE, cơ sở dữ liệu bảo
đảm rằng tên của database link hoàn toàn giống như tên của cơ sở dữ liệu toàn
cục. Ví dụ, nếu tên của cơ sở dữ liệu toàn cục của hq là hq.acme.com thì tên
liên kết cũng là hq.acme.com. Lưu ý rằng, cơ sở dữ liệu kiểm tra phần tên miền
của cơ sở dữ liệu toàn cục trong từ điển dữ liệu chứ không phải kiểm tra trong
thiết lập DB_DOMAIN trong tập tin tham số khởi tạo.
Nếu ta thiết lập tham số khởi tạo GLOBAL_NAMES là FALSE, thì không thể sử
dụng được tên toàn cục. Ta có thể đặt tên cho database link là gì cũng được. Ví
dụ, ta có thể đặt tên database link cho hq.acme.com là foo. Tuy nhiên, Oracle
khuyến cáo ta nên sử dụng tên toàn cục bởi vì nhiều tính năng hữu ích của Oracle
đòi hỏi tên toàn cục.
Sau khi đã bật tính năng đặt tên toàn cục, các database link cơ bản là trong suốt
đối với người dùng trong một cơ sở dữ liệu phân tán bởi vì tên của database link
cũng giống như tên toàn cục của các cơ sở dữ liệu mà chúng trỏ đến. Ví dụ, lệnh
sau đây tạo ra một database link trong máy chủ cục bộ đến cơ sở dữ liệu từ xa:
CREATE PUBLIC DATABASE LINK sales.division3.acme.com USING
'sales1';
Tạo các database link: Ví dụ
Tạo database link dùng câu lệnh CREATE DATABASE LINK. Bảng sau đưa
ra các ví dụ về tạo các database link trong một cơ sở dữ liệu cục bộ đến cơ sở dữ
liệu từ xa sales.us.americas.acme_auto.com
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 14
Lệnh SQL
Liên kết đến CSDL
Kết nối như
Loại liên kết
CREATE DATABASE LINK
sales.us.americas.acme_
auto.com USING
'sales_us';
sales using net
service name
sales_us
Connected user
Private
connected
user
CREATE DATABASE LINK
foo CONNECT TO
CURRENT_USER USING
'am_sls';
sales using service
name am_sls
Current global
user
Private
current user
CREATE DATABASE LINK
sales.us.americas.acme_
auto.com CONNECT TO
scott IDENTIFIED BY
tiger USING 'sales_us';
sales using net
service name
sales_us
scott using
password
tiger
Private fixed
User
CREATE PUBLIC DATABASE
LINK sales CONNECT TO
scott IDENTIFIED BY
tiger USING 'rev';
sales using net
service name rev
scott using
password
tiger
Public fixed
User
CREATE SHARED PUBLIC
DATABASE LINK
sales.us.americas.acme_
auto.com CONNECT TO
scott IDENTIFIED BY
tiger AUTHENTICATED BY
anupam IDENTIFIED BY
bhide USING 'sales';
sales using net
service name sales
scott using
password
tiger,
authenticated as
anupam using
password
bhide
Shared
public fixed
user
Các đối tượng lược đồ (schema objects) và các database link
Sau khi tạo ra một database link, ta có thể thực hiện các lệnh SQL truy cập các
đối tượng trên cơ sở dữ liệu từ xa. Ví dụ, để truy cập đối tượng emp từ xa sử dụng
database link foo, ta viết: SELECT * FROM emp@foo;
Ta cũng phải được uỷ quyền trong cơ sở dữ liệu từ xa để truy cập các đối tượng
cụ thể. Do đó, việc xây dựng tên các đối tượng một cách đúng đắn bằng cách sử
dụng các database link là một đặc điểm thiết yếu của xử lý dữ liệu trong các hệ
thống phân tán.
Tên của các đối tượng lược đồ thông qua database link
Cơ sở dữ liệu Oracle sử dụng tên cơ sở dữ liệu toàn cục để đặt tên cho các đối
tượng lược đồ toàn cục bằng cách sử dụng mẫu sau:
schema.schema_object@global_database_name
Trong đó:
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 15
- schema là tập các cấu trúc dữ liệu logic hoặc các đối tượng lược đồ. Một
lược đồ sở hữu bởi một người dùng và có cùng tên với người dùng đó. Mỗi người
dùng chỉ sở hữu một lược đồ.
- schema_object là một cấu trúc dữ liệu logic như là table, index, view,
synonym, procedure, package, database link.
- global_database_name là tên xác định duy nhất một cơ sở dữ liệu từ
xa. Tên này phải giống như tham số khởi tạo DB_NAME và DB_DOMAIN trừ phi
tham số GLOBAL_NAMES được đặt là FALSE.
Ví dụ, bằng cách sử dụng database link đến cơ sở dữ liệu
sales.division3.acme.com, một người dùng hoặc một ứng dụng có thể
tham chiếu đến dữ liệu từ xa như sau:
SELECT * FROM ; # emp
table in scott's schema
SELECT loc FROM ;
Nếu tham số GLOBAL_NAMES được đặt thành FALSE thì ta có thể sử dụng tên
bất kỳ cho liên kết đến sales.division3.acme.com. Ví dụ, ta có thể đặt
liên kết này là foo. Sau đó, ta có thể truy cập cơ sở dữ liệu từ xa này như sau:
SELECT name FROM scott.emp@foo; # link name different
from global name
Uỷ quyền cho việc truy cập các đối tượng lược đồ từ xa
Để truy cập vào một đối tượng lược đồ từ xa, ta phải được cấp quyền truy cập
đến đối tượng đó trong cơ sở dữ liệu từ xa. Hơn nữa, để thực hiện bất kỳ thao tác
cập nhật, chèn hay xoá trên các đối tượng từ xa, ta phải được cấp quyền SELECT
cùng với các quyền UPDATE, INSERT hoặc DELETE trên đối tượng đó. Không
giống như khi truy cập một đối tượng cục bộ, quyền SELECT là cần thiết cho việc
truy cập một đối tượng từ xa bởi vì cơ sở dữ liệu này không có khả năng mô tả từ
xa. Cơ sở dữ liệu phải thực hiện lệnh SELECT * trên các đối tượng từ xa để xác
định cấu trúc của nó.
Từ đồng nghĩa (synonym) cho các đối tượng lược đồ
Cơ sở dữ liệu Oracle cho phép ta tạo ra các synonym nhằm mục đích ẩn tên các
database link khỏi sự tò mò của người dùng. Một synonym cho phép truy cập vào
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 16
một bảng trên cơ sở dữ liệu từ xa tương tự như cú pháp hay dùng để truy cập trên
cơ sở dữ liệu cục bộ. Ví dụ, ta có truy vấn sau tác động đến một bảng trong cơ sở
dữ liệu từ xa: SELECT * FROM ; thì ta có thể tạo ra
synonym emp thay cho và ta có thể thực hiện câu truy vấn
tương đương truy vấn trên như sau: SELECT * FROM emp;
Phân giải tên các đối tượng lược đồ
Để giải quyết các tham chiếu từ các ứng dụng đến các đối tượng lược đồ (một
tiến trình gọi là phân giải tên), cơ sở dữ liệu chia tên các đối tượng theo dạng
phân cấp. Ví dụ, cơ sở dữ liệu bảo đảm rằng mỗi lược đồ trong cơ sở dữ liệu có
một tên duy nhất và trong một lược đồ mỗi đối tượng có một tên duy nhất. Kết
quả là, tên của một đối tượng lược đồ luôn là duy nhất trong cơ sở dữ liệu đó. Hơn
nữa, cơ sở dữ liệu phân giải các tham chiếu của ứng dụng đến tên cục bộ của đối
tượng. Trong một cơ sở dữ liệu phân tán, một đối tượng lược đồ như table được
truy cập đến tất cả các ứng dụng trong hệ thống. Cơ sở dữ liệu mở rộng mô hình
đặt tên theo phân cấp với tên cơ sở dữ liệu toàn cục để tạo ra tên đối tượng toàn
cục một cách hiệu quả và phân giải các tham chiếu đến các đối tượng lược đồ
trong một hệ cơ sở dữ liệu phân tán. Ví dụ, một truy vấn có thể tham chiếu đến
một bảng từ xa bằng cách khai báo tên đầy đủ của nó, bao gồm cả tên cơ sở dữ
liệu mà nó thuộc về.
Ví dụ, giả sử ta kết nối đến cơ sở dữ liệu cục bộ sử dụng user SYSTEM:
CONNECT SYSTEM@sales1
Sau đó, ta thực hiện các lệnh sau sử dụng database link hq.acme.com để truy
cập các đối tượng trong lược đồ jane và scott trên cơ sở dữ liệu từ xa hq:
SELECT * FROM ;
INSERT INTO (acc_no,
acc_name, balance) VALUES (5001, 'BOWER', 2000);
UPDATE
SET balance = balance + 500;
DELETE FROM
WHERE acc_name = 'BOWER';
Các hạn chế của database link
Ta không thể thực hiện các thao tác sau bằng cách sử dụng database link:
- Gán quyền trên các đối tượng từ xa.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 17
- Thực hiện lệnh DESCRIBE trên một số đối tượng từ xa. Tuy nhiên một số đối
tượng sau hỗ trợ lệnh DESCRIBE: Table, View, Procedure, Function.
- Phân tích các đối tượng từ xa.
- Xác định hoặc thực thi toàn vẹn tham chiếu.
- Gán các vai trò cho người dùng trong cơ sở dữ liệu từ xa.
- Lấy vai trò không mặc định trên một cơ sở dữ liệu từ xa.
- Thực hiện các phép kết truy vấn băm trên các kết nối đến shared server.
- Sử dụng một current user link mà không cần chứng thực thông qua SSL, mật
khẩu hoặc xác thực NT.
6. Quản trị cơ sở dữ liệu phân tán
Sự tự trị (Site autonomy)
Sự tự trị có nghĩa là mỗi máy chủ tham gia trong một cơ sở dữ liệu phân tán
được quản lý một cách độc lập tách khỏi tất cả các cơ sở dữ liệu khác. Mặc dù vài
cơ sở dữ liệu có thể làm việc cùng nhau, nhưng mỗi cơ sở dữ liệu là một kho chứa
dữ liệu riêng biệt được quản lý riêng rẽ. Một số lợi ích của sự tự trị trong một cơ
sở dữ liệu Oracle mang lại:
- Các nút mạng trong hệ thống phản ánh các tổ chức logic của các công ty hoặc
tập đoàn mà cần phải duy trì độc lập.
- Các quản trị viên chỉ kiểm soát các dữ liệu cục bộ tương ứng của mình. Vì vậy,
mỗi quản trị viên chỉ phải chịu trách nhiệm trong một miền nhỏ hơn, dễ quản lý
hơn.
- Các sự cố là độc lập và ít có khả năng phá vỡ các nút mạng khác của cơ sở dữ
liệu phân tán. Không có một sự cố đơn lẻ nào có thể dừng tất cả các giao dịch
phân tán hoặc gây ra hiệu ứng thắt cổ chai.
- Các quản trị viên có thể khôi phục lại hệ thống từ các sự cố được cách ly độc lập
từ các nút mạng khác trong hệ thống.
- Một từ điển dữ liệu tồn tại trong trong mỗi cơ sở dữ liệu cục bộ. Vì vậy, một
danh mục toàn cục là không cần thiết.
- Các nút mạng có thể nâng cấp phần mềm độc lập.
Mặc dù cơ sở dữ liệu Oracle cho phép quản lý từng cơ sở dữ liệu trong một hệ
cơ sở dữ liệu phân tán một cách độc lập, ta cũng không nên bỏ qua các yêu cầu
toàn cục của hệ thống. Ví dụ, ta cần phải:
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 18
- Tạo các tài khoản người dùng bổ sung trong mỗi cơ sở dữ liệu để hỗ trợ các liên
kết mà ta tạo ra, tạo điều kiện cho việc kết nối server – server.
- Thiết lập các tham số khởi tạo bổ sung như COMMIT_POINT_STRENGTH và
OPEN_LINKS.
Bảo mật cơ sở dữ liệu phân tán
Cơ sở dữ liệu Oracle hỗ trợ tất cả các tính năng bảo mật có sẵn với một môi
trường cơ sở dữ liệu tập trung cho các hệ cơ sở dữ liệu phân tán, bao gồm:
- Mật khẩu xác thực người dùng và vai trò người dùng.
- Một số kiểu chứng thực ngoại cho người dùng và vai trò bao gồm:
+ Kerberos version 5 cho các connected user link.
+ DCE cho các connected user link.
- Mã hoá phiên đăng nhập cho các kết nối client-to-server và server-to-server.
Các chủ đề sau đây cần được xem xét khi cấu hình một hệ cơ sở dữ liệu phân
tán Oracle:
Xác thực thông qua database link: Các database link có thể riêng tư hoặc công
khai, được xác thực hoặc không được xác thực. Ta tạo các liên kết công khai bằng
cách khai báo từ khoá PUBLIC trong lệnh tạo liên kết.
Ví dụ, ta có thể gõ lệnh: CREATE PUBLIC DATABASE LINK foo
USING 'sales';
Ta có thể tạo các liên kết xác thực bằng cách khai báo CONNECT TO,
AUTHENTICATED BY hoặc cả hai trong lệnh tạo database link. Ví dụ:
CREATE DATABASE LINK sales CONNECT TO scott IDENTIFIED
BY tiger USING 'sales';
CREATE SHARED PUBLIC DATABASE LINK sales CONNECT TO
nick IDENTIFIED BY firesign AUTHENTICATED BY david
IDENTIFIED BY bowie USING 'sales';
Bảng sau mô tả cách người dùng truy cập cơ sở dữ liệu từ xa thông qua liên kết:
Kiểu liên kết
Xác thực
Bảo mật truy cập
Private
No
Khi kết nối đến cơ sở dữ liệu từ xa, cơ sở dữ liệu sử dụng
thông tin bảo mật (userid/password) lấy từ phiên làm việc
cục bộ. Do đó, liên kết này là connected user database
link. Mật khẩu phải được đồng bộ giữa hai cơ sở dữ liệu.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 19
Private
Yes
Userid/password được lấy từ định nghĩa liên kết chứ
không phải từ phiên làm việc cục bộ. Do đó, liên kết này
là fixed user database link.
Cấu hình này cho phép mật khẩu khác nhau trên hai cơ sở
dữ liệu, nhưng mật khẩu của liên kết cơ sở dữ liệu cục bộ
phải giống với mật khẩu của liên kết cơ sở dữ liệu từ xa.
Public
No
Hoạt động giống như một private nonauthenticated link,
ngoại trừ tất cả người dùng đều có thể tham chiếu con trỏ
này tới cơ sở dữ liệu từ xa.
Public
Yes
Tất cả người dùng trên cơ sở dữ liệu cục bộ đều có thể
truy cập cơ sở dữ liệu từ xa và tất cả đều dùng cùng
userid/password để kết nối.
Xác thực không cần mật khẩu: Khi sử dụng một connected user hay current
user database link, ta có thể sử dụng một nguồn xác thực ngoại như Kerberos để
có được chế độ bảo mật end-to-end. Trong chế độ xác thực end-to-end, các thông
tin quan trọng được truyền từ máy chủ đến máy chủ và có thể được xác thực bởi
một máy chủ cơ sở dữ liệu thuộc cùng một miền. Ví dụ, nếu jane được chứng
thực bên ngoài trên một cơ sở dữ liệu cục bộ và muốn sử dụng một connected user
link để kết nối như là mình đến cơ sở dữ liệu từ xa, máy chủ cục bộ sẽ chuyển các
thông tin bảo mật đến máy chủ từ xa.
Hỗ trợ tài khoản người dùng và vai trò người dùng: Trong một hệ cơ sở dữ liệu
phân tán, ta phải cẩn thận lên kế hoạch tài khoản và vai trò người dùng cần thiết
để hỗ trợ các ứng dụng sử dụng hệ thống. Lưu ý rằng:
- Các tài khoản người dùng cần thiết để thiết lập các kết nối server-to-server phải
có sẵn trong tất cả các cơ sở dữ liệu trong một hệ cơ sở dữ liệu phân tán.
- Các vai trò cần thiết để truy cập đến cơ sở dữ liệu phân tán phải tồn tại trong tất
cả các cơ sở dữ liệu của một hệ cơ sở dữ liệu phân tán.
Khi tạo ra các database link cho các nút mạng trong một hệ cơ sở dữ liệu phân
tán, cần phải xác định tài khoản người dùng và vai trò người dùng nào trong mỗi
vị trí (site) cần phải hỗ trợ kết nối server-to-server để sử dụng các liên kết này.
Trong môi trường phân tán, người dùng thường xuyên yêu cầu truy cập nhiều dịch
vụ mạng, khi đó ta phải cấu hình xác thực riêng biệt cho mỗi người dùng truy cập
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 20
vào từng dịch vụ mạng, quản trị bảo mật trở nên cồng kềnh, đặc biệt là trong các
hệ thống lớn.
Quản lý tập trung người dùng và đặc quyền: Cơ sở dữ liệu Oracle cung cấp
nhiều cách khác nhau để quản lý người dùng và đặc quyền khi tham gia vào một
hệ cơ sở dữ liệu phân tán. Ví dụ, ta có các tuỳ chọn sau:
- Enterprise user management: Ta có thể tạo ra các người dùng toàn cục – những
người dùng được chứng thực qua SSL hoặc mật khẩu – sau đó quản lý những
người dùng này và các đặc quyền của họ trong một thư mục thông qua một dịch
vụ thư mục độc lập.
- Network authentication service: Kỹ thuật phổ biến này đơn giản hoá việc quản
lý bảo mật trong môi trường phân tán. Ta có thể sử dụng tuỳ chọn Oracle
Advanced Security để tăng cường cho Oracle Net và bảo mật cho một hệ cơ sở dữ
liệu phân tán Oracle. Chứng thực của Windows NT là một ví dụ của một giải pháp
xác thực không thông qua Oracle.
Hình 1.7: Minh hoạ bảo mật người dùng toàn cục thông qua dịch vụ quản trị thư mục.
Ví dụ, giả sử rằng jane, bill và scott đều sử dụng ứng dụng quản lý nhân
sự. Các đối tượng ứng dụng HQ đều được chứa trong lược đồ guest trên cơ sở dữ
liệu HQ. Trong trường hợp này, ta có thể tạo một tài khoản người dùng toàn cục tại
máy chủ cục bộ để sử dụng như một lược đồ chia xẻ. Tên người dùng toàn cục này
chính là tên của lược đồ chia xẻ, là guest. Jane, bill và scott đều được tạo
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 21
như những người dùng trong dịch vụ thư mục. Họ cũng được ánh xạ lược đồ
guest trong thư mục này, và cũng có thể được gán các uỷ quyền khác nhau trong
trong ứng dụng HQ.
Giả sử rằng chứa những thông tin sau về người dùng trên HQ và SALES:
Cũng giả sử rằng các quản trị viên cục bộ của HQ và SALES cung cấp các
lệnh sau:
Giả sử rằng người dùng scott yêu cầu một kết nối đến cơ sở dữ liệu cục bộ
HQ để thực hiện một giao dịch phân tán liên quan đến SALES. Các bước sau đây
sẽ được thực hiện (không nhất thiết phải theo thứ tự này):
1. Người dùng scott được chứng thực thông qua SSL hoặc mật khẩu.
2. Người dùng scott thực hiện lệnh sau:
SELECT e.ename, d.loc FROM emp e, dept@sales_link d
WHERE e.deptno=d.deptno;
3. Cơ sở dữ liệu HQ và SALES xác thực lẫn nhau thông qua SSL.
4. Cơ sở dữ liệu HQ truy vấn dịch vụ thư mục để xác định xem người dùng
scott có quyền truy cập HQ hay không, và phát hiện ra scott có thể truy cập
lược đồ cục bộ guest bằng cách sử dụng vai trò clerk1.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 22
5. Cơ sở dữ liệu SALES truy vấn dịch vụ thư mục để xác định xem người dùng
scott có quyền truy cập SALES hay không, và phát hiện ra scott có thể truy
cập lược đồ cục bộ guest bằng cách sử dụng vai trò clerk2.
6. Người dùng scott đăng nhập vào SALES tới lược đồ guest với vai trò
clerk2 và thực hiện lệnh SELECT để lấy những thông tin cần thiết và chuyển nó
đến HQ.
7. Cơ sở dữ liệu HQ nhận được dữ liệu yêu cầu từ SALES và trả về cho scott.
Mã hoá dữ liệu: tuỳ chọn Oracle Advanced Security cũng cho phép Oracle Net
và các sản phẩm liên quan sử dụng mã hoá dữ liệu mạng và kiểm tra để bảo đảm
rằng dữ liệu không thể được đọc hoặc thay đổi bởi người khác. Nó bảo vệ dữ khỏi
những thay đổi trái phép bằng cách sử dụng RSA Data Security RC4 hoặc thuật
toán mã hoá Data Encryption Standard (DES).
Kiểm soát các database link
Ta phải luôn thực hiện các hoạt động kiểm soát cục bộ. Đó là, nếu một người
dùng hoạt động trong một cơ sở dữ liệu cục bộ và truy cập cơ sở dữ liệu từ xa
thông qua database link, các hoạt động cục bộ được kiểm soát ở cơ sở dữ liệu cục
bộ, các hoạt động từ xa được kiểm soát ở cơ sở dữ liệu từ xa, cung cấp các tuỳ
chọn kiểm soát thích hợp được đặt trong các cơ sở dữ liệu tương ứng.
Cơ sở dữ liệu từ xa không thể xác định một yêu cầu kết nối là thành công hay
không và các lệnh SQL tiếp theo đến từ một máy chủ khác hay đến từ một máy
trạm cục bộ. Xem ví dụ sau:
- Fixed user link hq.acme.com kết nối người dùng cục bộ jane đến cơ sở
dữ liệu từ xa HQ như người dùng từ xa scott.
- Người dùng scott được kiểm soát trên cơ sở dữ liệu từ xa.
Các hoạt động được thực hiện trong suốt phiên kết nối từ xa được kiểm soát
như là scott kết nối cục bộ đến HQ và thực hiện các hoạt động tương tự ở đó. Ta
phải thiết lập các tuỳ chọn kiểm soát trong cơ sở dữ liệu từ xa nắm bắt các hoạt
động của người dùng – trong trường hợp này là scott trên cơ sở dữ liệu HQ –
được nhúng trong liên kết nếu mong muốn của ta là kiểm soát những gì jane
thực hiện trên cơ sở dữ liệu từ xa.
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 23
Ta không thể thiết lập các tuỳ chọn kiểm soát cục bộ cho các đối tượng từ xa.
Vì vậy, ta không kiểm soát được việc sử dụng database link, cho dù việc truy cập
đến các đối tượng từ xa có thể được kiểm soát trên cơ sở dữ liệu từ xa.
Các công cụ quản trị
Enterprise Manager: là một công cụ quản trị của cơ sở dữ liệu Oracle cung cấp
một giao diện người dùng đồ hoạ (GUI). Nó cung cấp các chức năng quản lý cơ sở
dữ liệu phân tán thông qua một giao diện rất dễ sử dụng. Ta có thể sử dụng
Enterprise Manager để:
- Quản lý nhiều cơ sở dữ liệu. Ta có thể sử dụng Enterprise Manager để quản lý
một cơ sở dữ liệu hoặc đồng thời quản lý nhiều cơ sở dữ liệu.
- Các tác vụ quản lý cơ sở dữ liệu tập trung. Ta có thể quản lý cả hai cơ sở dữ
liệu cục bộ và từ xa chạy trên bất kỳ nền tảng hỗ trợ cơ sở dữ liệu Oracle nào ở bất
kỳ vị trí nào. Ngoài ra các nền tảng này có thể được kết nối bởi bất kỳ giao thức
mạng nào mà Oracle Net hỗ trợ.
- Thực hiện linh động các lệnh SQL, PL/SQL, Enterprise Manager. Ta có thể
dùng Enterprise Manager nhập, chỉnh sửa và thực hiện các lệnh. Nó cũng duy trì
một lịch sử của các lệnh đã được thực hiện. Vì vậy, ta có thể thực hiện lại các lệnh
mà không cần phải gõ lại chúng, tính năng này đặc biệt hữu ích khi ta cần thực
hiện các lệnh dài lặp đi lặp lại trong một hệ cơ sở dữ liệu phân tán.
- Quản lý các tính năng bảo mật như người dùng toàn cục, vai trò toàn cục và
dịch vụ thư mục.
Các công cụ quản trị của bên thứ ba: Hiện nay có hơn 60 công ty phát triển
hơn 150 sản phẩm để giúp cho việc quản lý mạng và cơ sở dữ liệu Oracle, cung
cấp một môi trường mở cho các công cụ quản trị cơ sở dữ liệu phân tán.
Hỗ trợ SNMP: Bên cạnh khả năng quản trị mạng của nó, Oracle Simple
Network Management Protocol (SNMP) hỗ trợ cho phép một máy chủ cơ sở dữ
liệu Oracle được định vị và truy vấn bởi bất kỳ hệ thống quản trị mạng nào dựa
trên SNMP. SNMP là tiêu chuẩn được chấp nhận trong nhiều hệ quản trị mạng
thông dụng như:
- HP OpenView
- Digital POLYCENTER Manager on NetView
- IBM NetView/6000
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 24
- Novell NetWare Management System
- SunSoft SunNet Manager
7. Xử lý phân tán trong hệ thống phân tán
Một giao dịch (còn gọi là giao tác) là một đơn vị logic của công việc được cấu
thành bởi một hoặc nhiều câu lệnh SQL được thực hiện bởi một người dùng. Một
giao dịch bắt đầu với việc thực hiện câu lệnh SQL đầu tiên của người dùng và kết
thúc khi nó được chấp thuận (commit) hoặc huỷ bỏ (rolled back) bởi người dùng
đó. Một giao dịch từ xa chỉ chứa các lệnh truy cập đến một nút mạng từ xa. Một
giao dịch phân tán chứa các lệnh truy cập nhiều hơn một nút mạng.
Lệnh SQL từ xa
Một truy vấn từ xa là một truy vấn mà nó chọn thông tin từ một hoặc nhiều
bảng từ xa, tất cả các bảng này đều nằm trên một nút mạng từ xa. Ví dụ, truy vấn
sau đây truy cập dữ liệu từ bảng dept trong lược đồ scott của cơ sở dữ liệu từ
xa SALES:
SELECT * FROM _auto.com;
Một cập nhật từ xa là một cập nhật sửa đổi dữ liệu trong một hoặc nhiều bảng,
tất cả các bảng này đều nằm trên một nút mạng từ xa. Ví dụ, truy vấn sau đây cập
nhật dữ liệu từ bảng dept trong lược đồ scott của cơ sở dữ liệu từ xa SALES:
UPDATE _auto.com
SET loc = 'NEW YORK' WHERE deptno = 10;
Lệnh SQL phân tán
Một truy vấn phân tán truy cập thông từ hai nút mạng trở lên. Ví dụ, truy vấn
sau truy cập dữ liệu từ cơ sở dữ liệu cục bộ và cơ sở dữ liệu từ xa SALES:
SELECT ename, dname FROM scott.emp e,
_auto.com d
WHERE e.deptno = d.deptno;
Một cập nhật phân tán sửa đổi thông tin trên hai nút mạng trở lên. Một cập
nhật phân tán có thể dùng một chương trình con PL/SQL như là procedure hay
trigger để bao gồm hai hoặc nhiều cập nhật từ xa truy xuất dữ liệu trên các nút
mạng khác nhau. Ví dụ, đoạn chương trình PL/SQL sau cập nhật các bảng trên cơ
sở dữ liệu cục bộ và cơ sở dữ liệu từ xa SALES:
Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle
Cơ sở dữ liệu nâng cao Trang 25
BEGIN
UPDATE _auto.com
SET loc = 'NEW YORK' WHERE deptno = 10;
UPDATE scott.emp SET deptno = 11 WHERE deptno = 10;
END;
COMMIT;
Chia xẻ các lệnh SQL cho truy vấn từ xa và truy vấn phân tán
Cơ chế của một truy vấn từ xa hoặc truy vấn phân tán sử dụng các lệnh SQL
chia xẻ về cơ bản cũng giống như những lệnh cục bộ. Các cú pháp lệnh và các đối
tượng được tham chiếu phải phù hợp. Nếu có sẵn, các khu vực chia xẻ SQL có thể
được dùng cho việc xử lý cục bộ và từ xa của bất kỳ truy vấn hoặc phân rã truy
vấn nào.
Giao dịch từ xa
Một giao dịch từ xa chứa một hoặc nhiều truy vấn từ xa, tất cả chúng đều tham
chiếu đến một nút mạng từ xa. Ví dụ, giao dịch sau đây chứa hai truy vấn, mỗi
truy vấn đều truy cập đến cơ sở dữ liệu SALES từ xa:
UPDATE _auto.com
SET loc = 'NEW YORK' WHERE deptno = 10;
UPDATE _auto.com
SET deptno = 11 WHERE deptno = 10;
COMMIT;
Giao dịch phân tán
Một giao dịch phân tán là một giao dịch bao gồm một hay nhiều truy vấn đơn
hay nhóm, cập nhật dữ liệu trên hai hoặc nhiều nút mạng riêng biệt của cơ sở dữ
liệu phân tán. Ví dụ, giao dịch sau đây cập nhật cơ sở dữ liệu cục bộ và cơ sở dữ
liệu từ xa SALES:
UPDATE _auto.com
SET loc = 'NEW YORK' WHERE deptno = 10;
UPDATE scott.emp SET deptno = 11 WHERE deptno = 10;
COMMIT;
Lưu ý: Nếu tất cả các lệnh của giao dịch chỉ tham chiếu đến một nút mạng từ xa
thì giao dịch đó là từ xa, chứ không phải phân tán.
Cơ chế chấp thuận hai pha
Một cơ sở dữ liệu phải bảo đảm rằng tất cả các câu lệnh trong một giao dịch,
phân tán hoặc không phân tán, phải được chấp thuận hoặc huỷ bỏ. Các ảnh hưởng