1. Trang chủ
  2. » Luận Văn - Báo Cáo

Cơ chế đồng bộ hoá dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle

44 2,5K 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 0,92 MB

Nội dung

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.. Thông thường, các ứng dụng c

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

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

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

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

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

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

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

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

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

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:

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

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

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

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

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

Connected user Private

connected user

CREATE DATABASE LINK

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

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 đó:

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 scott.emp@sales.division3.acme.com; # emp table in scott's schema

SELECT loc FROM scott.dept@sales.division3.acme.com;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

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 emp@hq.acme.com; thì ta có thể tạo ra synonym emp thay cho emp@hq.acme.com 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 scott.emp@hq.acme.com;

INSERT INTO jane.accounts@hq.acme.com (acc_no,

acc_name, balance) VALUES (5001, 'BOWER', 2000);

UPDATE jane.accounts@hq.acme.com

SET balance = balance + 500;

DELETE FROM jane.accounts@hq.acme.com

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

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:

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

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

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

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ộ guestbằng cách sử dụng vai trò clerk1

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

Ngày đăng: 10/04/2015, 13:20

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w