CSDL phân tán ra đời dựa trên nền tảng chính của CSDL tập trung nhưng với đặc điểm riêng nổi bật là thiết kế theo phương pháp phân mảnh dữ liệu và sử dụng các bản sao replication, dữ liệ
Trang 1MỤC LỤC
Phần I Đặt vấn đề 3
Phần II Thực hiện đề tài 4
1 Tổng quan về cơ sở dữ liệu phân tán 4
1.1 Cơ sở dữ liệu phân tán 4
1.2 Hệ quản trị cơ sở dữ liệu phân tán 4
1.3 Một số đặc trưng của hệ phân tán 4
1.3.1 Chia xẻ tài nguyên 4
1.3.2 Tính mở 5
1.3.3 Khả năng song song 6
1.3.4 Khả năng chịu lỗi 6
1.3.5 Tính trong suốt 6
1.4 Sử dụng CSDL PT, những thuận lợi và khó khăn 7
1.4.1 Mục đích sử dụng 7
1.4.2 Thuận lợi 8
1.4.3 Hạn chế 8
1.5 Một số khái niệm và kỹ thuật trong CSDLPT 8
1.5.1 Quan điểm của người thiết kế về ứng dựng CSDL 8
1.5.2 Lược đồ đa cục bộ (Multiple local schema) 8
1.5.3 Lược đồ toàn thể (Global schema) 9
1.5.4 Lược đồ giới hạn toàn cục (Restricted global schema) 10
1.6 Vấn đề phân tán dữ liệu giữa các CSDL khác nhau 10
1.6.1 Sự phân mảnh dữ liệu(Fragmentation) 11
1.6.1.1 Phân mảnh theo chiều ngang (Horizontal Fragmentation) 11
1.6.1.2 Phân mảnh theo chiều dọc (Vertical Fragmentation) 12
1.6.1.3 Phân mảnh kết hợp (Mixed Fragmentation) 13
1.6.2 Sự phân mảnh và vấn đề cập nhật dữ liệu 15
1.6.3 Sự nhân bản (Replication) 15
2 Cơ sở dữ liệu phân tán trong Oracle XE (eXpress Edition) 18
2.1 Các khái niệm cơ bản 18
2.1.1 Snapshot 18
2.1.2 Sao bản cơ sở 19
2.1.3 Các nhóm sao bản 19
2.1.4 Các vị trí sao bản 19
2.1.5 Danh mục các bản sao 19
2.1.6 Database link 20
2.2 Mô hình phân tán dữ liệu trong Oracle 24
2.2.1 Phân tán dữ liệu hoàn toàn 24
2.2.2 Phương pháp phân tán patition 26
2.2.3 Phương pháp sử dụng các Replicate 28
3 Tìm hiểu công cụ JDeveloper 30
Trang 23.1 Giới thiệu 30
3.2 Kiến trúc 30
3.3 Vòng đời JDeveloper 35
3.4 JavaServer Faces (JSF) 37
Phần III Kết luận 39
Phần IV Tài liệu tham khảo 40
Trang 3Phần I ĐẶT VẤN ĐỀ
Vào những năm 1970, các máy tính đã có đủ khả năng xây dựng hệ thống thông tin và hệ cơ sở dữ liệu Các hệ thống cơ sở dữ liệu (Database systems) đã không ngừng phát triển và đã có những thành công lớn trong suốt hơn ba thập kỷ qua Ngày càng có nhiều dữ liệu được thu thập và lưu trữ dưới dạng cơ sở dữ liệu lớn Một mặt đã hình thành và phát triển các mô hình lý thuyết hệ cơ sở dữ liệu, mặt khác những nguồn phát triển hệ thống ứng dụng cũng ngày càng lớn mạnh Hệ thống thông tin hình thành trên cơ
sở kết nối các máy tính lại với nhau
Những năm gần đây, hệ cơ sở dữ liệu phân tán được phát triển mạnh trong thực tế dựa trên sự phát triển của cơ sở dữ liệu (CSDL) và mạng máy tính Vì yêu cầu chung của các tổ chức kinh tế xã hội là vấn đề làm sao nắm bắt thông tin nhanh nhất để tổ chức công việc hiệu quả nhất trong khi các trụ
sở của những tổ chức này lại ở những vị trí địa lý khác nhau cho nên xây dựng một hệ thống thông tin làm việc trên cơ sở dữ liệu phân tán là phù hợp với xu hướng hiện nay CSDL phân tán ra đời dựa trên nền tảng chính của CSDL tập trung nhưng với đặc điểm riêng nổi bật là thiết kế theo phương pháp phân mảnh dữ liệu và sử dụng các bản sao (replication), dữ liệu phân tán sẽ được cập nhật và lưu tại các nút (site), mỗi nút tương ứng với một database server và chỉ thực hiện một số chức năng nhất định Việc ứng dụng CSDL phân tán có thể khắc phục được các nhược điểm vốn có của CSDL tập trung Ngoài ra, việc kết nối giữa các CSDL từ xa được thực hiện qua kết nối database link sẽ đáp ứng được một số tiêu chuẩn cơ bản như cải thiện năng suất thực hiện công việc, đảm bảo an toàn dữ liệu, giảm giá thành truyền thông, bảo mật cao, dễ dàng thay đổi, phát triển, …
Trong đề tài này tác giả đi sâu tìm hiểu về cách tổ chức cơ sở dữ liệu phân tán trong hệ quản trị cơ sở dữ liệu Oracle và Oracle JDeveloper là môi trường phát triển (IDE) để xây dựng các ứng dụng dùng chuẩn Java, XML, Web và SQL
Trang 4Phần II THỰC HIỆN ĐỀ TÀI
1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN
1.1 Cơ sở dữ liệu phân tán (CSDLPT)
CSDLPT là tập hợp các dữ liệu được phân phối trên các máy tính khác
nhau trên một mạng máy tính (được gọi là các nút hay là site) nhưng vẫn
đảm bảo tính nhất quán trên toàn bộ CSDL và khai thác giống như trên CSDL tập trung
1.2 Hệ quản trị cơ sở dữ liệu phân tán
Để quản lý CSDLPT, người ta dùng hệ quản trị CSDLPT (DDBMS – Distribute Database Management System) Hệ quản trị CSDLPT là một phần
mềm hệ thống cho phép quản lý một CSDLPT và tạo nên sự phân tán rõ ràng cho người dùng
DDBMS cũng chính là hệ quản trị CSDL tập trung nhưng được bổ sung một số thành phần để hỗ trợ cho việc liên lạc và phối hợp hoạt động giữa các DDBMS được cài đặt tại những nơi khác nhau trên mạng máy tính
1.3 Một số đặc trưng của hệ phân tán
1.3.1 Chia xẻ tài nguyên
Thuật ngữ tài nguyên dùng để chỉ tất cả mọi thứ có thể chia xẻ bởi hệ phân tán bao gồm máy in, phần cứng, máy in… tới các đối tượng như file, các cửa sổ cơ sở dữ liệu và các đối tượng khác
Việc chia xẻ tài nguyên trên hệ thống phân tán (HTPT) – nơi mà các tài nguyên bị lệ thuộc về mặt vật lý với một máy tính nào đó, Được thực hiện thông qua truyền thông Để chia xẻ tài nguyên một cách hiệu quả mỗi tài nguyên cần phải được quản lý bởi một chương trình có giao diện truyền thông, các tài nguyên có thể được truy nhập, cập nhật một cách tin cậy và nhất quán Quản lý tài nguyên ở đây là lập kế hoạch dự phòng , đặt tên cho các lớp tài nguyên, cho phép tài nguyên được truy nhập từ nơi khác, ánh xạ tên tài nguyên vào địa chỉ truyền thông
Mô hình mạng thường hay được sử lý là mô hình Client-Server
Trang 5dụ tiêu biểu Theo thuật ngữ LAN các thiết bị dùng chung như vậy được gọi là các server Trong xử lý thiết bị dùng chung trên LAN các yêu cầu của máy PC thường bị giới hạn về các dịch vụ liên quan tới file dùng chung hay file xử lý
in Nhược điểm hiển nhiên của cách tiếp cận như vậy ở chỗ mọi xử lý điều nằm trên những PC riêng lẻ và chỉ một chức năng nào đó mới là phân tán Do
đó toàn bộ file phải được gởi cho một PC đã ban ra những yêu cầu đọc file
đó Nếu file được cập nhật thì toàn bộ file đó bị khoá bởi PC đã yêu cầu cập nhật file đó
1.3.2 Tính mở
Tính mở của hệ thống máy tính là tính dễ dàng mở rộng phần cứng (thêm những thiết bị ngoại vi, bộ nhớ, các giao diện truyền thông…) và phần mềm (các mô hình hệ điều hành, các giao thức truyền thông…) của nó
Một hệ thống phân tán có tính mở là hệ thống được tạo ra bởi nhiều
hệ thống phần cứng và phần mềm của nhiều nhà sản xuất khác nhau với điều kiện là những thành phần đó phải chung một chuẩn nhất định
Tính mở của HTPT được xem theo mức độ bổ sung vào các dịch vụ dùng chung tài nguyên mà không phá hỏng hay nhân đôi những dịch vụ đang tồn tại Tính mở được hoàn thiện bằng cách xác định hay phân rõ những giao diện chính của một hệ và làm cho nó tương thích với những nhà phát triển phần mềm
Trang 6Tính mở của HTPT dựa trên việc cung cấp cơ chế truyền thông giữa các tiến trình và công khai các giao diện để truy nhập các tài nguyên dùng chung.
1.3.3 Khả năng song song
Hệ thống hoạt động trên một mạng truyền thông có nhiều máy tính , mỗi máy tính có một hay nhiều CPU Trong một thời điểm nếu có nhiều tiến trình cùng tồn tại, ta nói chúng được thực hiện đồng thời Việc thực hiện các tiến trình theo cơ chế phân chia thời gian hay song song
Khả năng thực hiện theo cơ chế song song trong hệ thống phân tán được phân chia theo hai tình huống sau:
Nhiều người sử dụng đồng thời đưa ra những câu lệnh hay tương tác với các chương trình ứng dụng
Nhiều tiến trình Server chạy đồng thời, mỗi tiến trình đáp ứng các yêu cầu từ client
Khả năng mở rộng là HTPT có khả năng hoạt động tốt và hiệu quả ở nhiều mức khác nhau Một HTPT nhỏ nhất có thể hoạt động chỉ cần 2 trạm làm việc và một file Server Hệ thống lớn thì có thể lên đến hàng nghìn máy
và có nhiều file server và printer server
Khả năng mở rộng của HTPT đặc trưng bởi tính không thay đổi phần mềm hệ thống và phần mềm ứng dụng khi hệ được mở rộng
1.3.4 Khả năng chịu lỗi
Việc thiết kế khả năng chịu lỗi của các hệ thống máy tính dựa trên hai giải pháp sau:
Dùng khả năng thay thế để đảm bảo sự hoạt động liên tục
và hiệu quả
Dùng những chương trình phục hồi dữ liệu, thông tin khi xảy ra sự cố
1.3.5 Tính trong suốt
Trang 7Tính trong suốt của hệ thống phân tán được hiểu như một sự che khuất đi những thành phần riêng biệt của thống đối với người sử dụng và những người lập trình ứng dụng Người sử dụng có quyền truy nhập đến dữ liệu nằm tại bất kì vị trí nào Các thao tác để lấy hoặc cập nhật dữ liệu tại bất
kì vị trí nào.Các thao tác để lấy hoặc cập nhật dữ liệu tại một điểm dữ liệu ở
xa được tự động thực hiện bởi hệ thống tại điểm đưa ra yêu cầu Người sử dụng không cần biết đến sự phân tán của tất cả dữ liệu trên mạng dường như máy tính cục bộ của người sử dụng
1.4 Sử dụng CSDL PT, những thuận lợi và khó khăn
Khi một tổ chức nào đó có nhu cầu phát triển thêm chi nhánh của mình thì việc áp dụng CSDLPT là thuận lợi nhất vì nó tác động không nhiều lên các đơn vị đã có trước, dễ mở rộng và ít tốn kém chi phí
Làm giảm bớt chi phí truyền thông
Làm tăng mức độ thi hành các dịch vụ vì có thể thực hiện các tác vụ đồng thời
Tín tin cậy và khả năng sẵn dùng
Tuy nhiên, sự phát triển của CSDLPT gần đây là do hai yếu tố cơ bản sau:
Sự phát triển của các máy tính nhỏ, cung cấp giá thành ít hơn trước đây đã tạo được sự thuận lợi về phần cứng đáp ứng đáp ứng cho sự phát triển hệ thống phân tán
Trang 8Kỹ thuật phân tán dựa trên hai kỹ thuật khác là: kỹ thuật mạng và kỹ thuật CSDL Đây là kỹ thuật phức tạp vì nó dựa trên đường truyền mạng và các CSDL cục bộ đặt ở từng vị trí khác nhau.
1.4.2 Thuận lợi
Dữ liệu được đặt nơi có nhu cầu nhiều nhất
Truy xuất dữ liệu nhanh
Xử lý dữ liệu nhanh
Dễ dàng mở rộng
Cải tiến sự truyền thông
Giảm chi phí hoạt động
Độ an toàn dữ liệu cao
Độc lập về mặt xử lý
1.4.3 Hạn chế
Phức tạp trong việc quản lý và điều khiển Nếu mức trong suốt của database thấp thì yêu cầu người sử dụng phải biết vị trí của dữ liệu được phân mảnh
Thiếu sự chuẩn hóa, CSDLPT phụ thuộc vào hiệu quả của sự truyền thông
1.5 Một số khái niệm và kỹ thuật trong CSDLPT
1.5.1 Quan điểm của người thiết kế về ứng dựng CSDL
Một ứng dụng truy xuất trực tiếp CSDL bằng các câu lệnh SQL được xây dựng bởi một vài lược đồ Lược đồ đó mô tả cấu trúc của CSDL được ứng dụng nhìn thấy Chúng ta có ba loại lược đồ:
1.5.2 Lược đồ đa cục bộ (Multiple local schema)
CSDLPT xem chương trình ứng dụng như một tập hợp các CSDL riêng
lẻ Chương trình ứng dụng phải đặt một thiết kế nối đến các site mà chứa dữ
liệu được truy xuất Sau khi kết nối được thiết lập, chương trình có thể truy
xuất CSDL bằng câu lệnh SQL được tạo nên từ lược đồ của site Nếu các dữ liệu bị chuyển từ site này đến site khác thì chương trình phải thay đổi theo.
Trang 9Một câu lệnh SQL đơn tham khảo đến các bảng đặt tại các site khác
nhau Nếu ứng dụng muốn kết các bảng đó lại với nhau, nó phải đọc các
dòng từ mỗi bảng vào bộ đệm ở tại site ứng dụng (với các câu lệnh SELECT
riêng lẻ) và kiểm tra rõ điều kiện kết trên mỗi cặp của các dòng
Dữ liệu đặt tại các site khác nhau thì được lưu trữ dưới những dạng
khác nhau Các kiểu trong từng lược đồ riêng lẻ có thể khác nhau Trong trường hợp này, ứng dụng phải cung cấp thủ tục chuyển đổi có thể dùng tại thời điểm thực thi để hợp nhất dữ liệu với nhau
Ứng dụng phải quản lý sự nhân bản Nếu một mục dữ liệu nhân bản được truy vấn, ứng dụng phải quyết định nhân bản phải được truy xuất và nếu mục đó được cập nhật, nó phải đảm bảo rằng việc cập nhật xảy ra cho tất cả các nhân bản
1.5.3 Lược đồ toàn thể (Global schema)
Trong cách tiếp cận này, người thiết kế ứng dụng xem một lược đồ đơn
là hợp nhất của tất cả các lược đồ cục bộ Vì thế, chúng ta xem nó như lược
đồ toàn thể và xem hệ thống như một hệ thống tích hợp CSDLPT
Sự tích hợp được thực hiện ở tầng giữa (middleware), tầng mà hợp
nhất các lược đồ riêng lẻ vào một lược đồ toàn thể bao gồm dữ liệu từ những nơi khác nhau Lược đồ toàn thể có thể bao gồm các bảng mà không xuất hiện trong bất cứ lược đồ cục bộ nào, nhưng có thể tính toán từ các bảng trong lược đồ cục bộ dùng câu lệnh SQL tương ứng Lược đồ toàn thể là tổng quát của các lược đồ cục bộ
Sự kết nối các site riêng lẻ được thực hiện tự động bởi tầng
middleware khi các thành phần trong lược đồ toàn thể được truy xuất Do đó,
vị trí của các bảng được ẩn đi bởi chương trình ứng dụng (được gọi là
location transparency) Nếu dữ liệu được chuyển từ nơi này đến nơi khác,
lược đồ toàn thể vẫn giống như trước và chương trình ứng dụng không cần phải thay đổi Sự ánh xạ từ lược đồ toàn thể sang lược đồ cục bộ không cần
Trang 10phải thay đổi trong tầng middleware, nhưng việc làm này sẽ dễ dàng hơn việc
thay đổi một số lượng lớn các chương trình ứng dụng
Đối với lược đồ cục bộ, dữ liệu liên quan đến những nơi khác nhau có thể lưu trữ dưới các dạng và các kiểu khác nhau, nhưng điều này không phù
hợp đối với lược đồ toàn thể Tầng middleware cung cấp một thủ tục chuyển
đổi để hợp nhất hệ thống dưới những trường hợp này
Một vấn đề liên quan là thống nhất ngữ nghĩa (semantic integration) nó
bao gồm ít nhất sự chuyển đổi giá trị và sự chuyển đổi trên
Chương trình ứng dụng thi hành các câu lệnh SQL ngược lại đối với lược đồ toàn thể
Người thiết kế ứng dựng phải chọn nhân bản mục dữ liệu nào đó và chỉ định nơi mà nhân bản được đặt Tuy nhiên, sự nhân bản được che dấu bởi chương trình ứng dụng Chương trình truy xuất một mục dữ liệu vật lý và tầng middleware tự động quản lý sự nhân bản, cung cấp một nhân bản thích hợp nhằm thỏa mãn việc truy vấn và cập nhật tất cả các nhân bản khi thích hợp
Điều này gọi là replication transparency
1.5.4 Lược đồ giới hạn toàn cục (Restricted global schema)
Người thiết kế ứng dụng nhìn thấy một lược đồ toàn thể đơn giản, nhưng một lược đồ là hợp nhất của nhiều lược đồ của CSDL riêng lẻ Vì vậy,
restricted global schema bao gồm tất cả các bảng của CSDL riêng lẻ.
Restricted global schema được hỗ trợ bởi nhà cung cấp của một vài hệ
thống đồng nhất
Ứng dụng sử dụng một quy ước đặt tên để tham khảo tới bảng trong
mỗi CSDL Vì vậy, vị trí của bảng có thể dấu đi trong ứng dụng Một kết nối tới một nơi được làm một cách tự động khi một bảng tại nơi đó được truy xuất
1.6 Vấn đề phân tán dữ liệu giữa các CSDL khác nhau
Trong nhiều trường hợp các nhà thiết kế ứng dụng không biết dữ liệu
phải phân tán ở đâu Ví dụ, vì lý do bảo mật dữ liệu phải được lưu trữ tại
Trang 11một nơi đặt biệt nào đó, cũng có trường hợp người thiết kế có thể tham gia vào việc quyết định nơi dữ liệu được lưu trữ hoặc sao lưu Trong phần này chúng ta sẽ phát họa một vài vấn đề liên quan đến việc phân tán dữ liệu.
1.6.1 Sự phân mảnh dữ liệu(Fragmentation)
Cách đơn giản nhất để phân mảnh dữ liệu là lưu trữ các bảng độc lập tại những nơi khác nhau Tuy nhiên, một bảng không được xem là một đơn vị phân tán tốt nhất vì hiếm khi nào một giao tác chỉ truy xuất đến một tập các dòng của bảng, một view của bảng hay duy nhất một bảng Nếu các giao tác khác nhau truy xuất đến các phần khác nhau của bảng và cả ở những nơi khác nhau, việc thực thi này có thể được cải thiện bằng cách lưu các phần của bảng tại nơi nào giao tác tương ứng sẽ truy xuất Theo hướng tiếp cận này các phần của bảng trên được gọi là mảnh phân tán
Việc phân tán các mảnh dữ liệu của bảng mang lại nhiều thuận lợi Ví
dụ, thời gian để xử lý một truy vấn trên toàn bộ bảng có thể giảm bớt khi dùng
kỹ thuật phân tán, lúc này câu truy vấn sẽ được thực thi trên từng mảng dữ liệu đặt những nơi khác nhau
Xem một ví dụ cụ thể sau: dùng một câu truy vấn để lấy tên và điểm
trung bình của sinh viên tại một trường đại học Nếu bảng Student và Transcript đều lưu trữ tại trung tâm, tất cả quá trình xử lý sẽ diễn ra tại đây,
thay vào đó nếu các bảng trên được phân mảnh ra và lưu trữ tại mỗi khoa riêng, thì DBMS tại mỗi khoa có thể cùng xử lý và cho kết quả nhưng trong thời gian ít hơn
Hơn nữa kỹ thuật phân tán phải có khả năng cải thiện được thời gian
và thực hiện được việc truy xuất dữ liệu từ xa Có hai cách phân tán dữ liệu chính sau: phân mảnh dữ liệu theo chiều ngang và phân mảnh dữ liệu theo chiều dọc
1.6.1.1 Phân mảnh theo chiều ngang (Horizontal Fragmentation)
Trang 12Lúc này một bảng T được phân ra thành các mảnh T1, T2, .,Tr Trong đó, mỗi mảnh phải chứa một tập các dòng của T và mỗi dòng phải thuộc một mảnh nào đó Ví dụ: một cửa hàng thực phẩm mua bán qua Internet có bảng quan hệ sau:
INVENTORY (Stocknum, Amount, Price, Location)
đế mô tả kho hàng và vị trí kho hàng Bảng quan hệ này khi được phân chia theo chiều ngang dựa trên vị trí kho hàng, mảnh dữ liệu chứa các mục hàng hoá thỏa mãn điều kiện
Location=’Chicago’
Tên là CH_INVENTORY tại nhà kho ở Chicago với quan hệ
INVENTORY_CH (Stocknum, Amount, Price, Location)
(Lúc này thuộc tính Location trở thành thừa và nên bỏ đi) Vì mỗi mục
hàng trong mỗi mảnh đã được phân tán trên nhiều nơi, việc phân mảnh này phải đảm bảo khi cần thì bảng có thể được tái dựng lại bằng cách hợp các mảnh lại với nhau
Một cách tổng quát mỗi mảnh phải thoả mãn điều kiện
Ti = δCi (T)Trong đó Ci là điều kiện chọn và mỗi mục hàng hoá trong T phải thoả mãn điều kiện Ci với từng giá trị cụ thể của i
1.6.1.2 Phân mảnh theo chiều dọc (Vertical Fragmentation)
Bảng T được chia thành các mảnh T1,T2, ,Tr Trong đó mỗi mảnh chứa một tập các cột của T Mỗi cột phải thuộc một mảnh nào đó và mỗi
mảnh phải chứa các cột của khoá candidate.
Giả sử cửa hàng mua bán thực phẩm qua Internet có quan hệ sau
EMPLOREE (Ssnum, Name, Salary, Title, Location)
để mô tả nhân viên tại tất cả nhà kho Quan hệ được phân mảnh như sau
EMP1 (Ssnum, Name, Salary)
Trang 13EMP2 (Ssnum, Name,Title, Location)trong đó EMP1 được lưu tại trung tâm (nơi lưu danh sách nhân viên) và EMP2 lưu ở nơi khác.Vì mỗi cột phải thuộc ít nhất một mảnh và mỗi mảnh
phải chứa cùng khoá candidate.Việc phân mảnh theo cách này phải thoả khi
ta thực hiện phép kết các mảnh lại với nhau, cấu trúc bảng ban đầu được tái
dựng.Vì khoá canditate được chứa trong mỗi mảnh, việc phân chia mảnh
theo chiều ngang bao gồm cả kỹ thuật sao chép Các cột phải được sao chép
tốt Trong trường hợp của ta, cột Name được chứa trong cả hai mảnh vì nó
được các ứng dụng cục bộ dùng đến
1.6.1.3 Phân mảnh kết hợp (Mixed Fragmentation)
Việc kết hợp giữa phân mảnh theo chiều ngang và chiều dọc cũng là một cách, nhưng phải đảm bảo rằng bảng có thể được tái dựng từ các mảnh
cuả nó Cửa hàng mua bán thực phẩm qua Internet sau khi đã phân mảnh quan hệ EMPLOYEE thành EMP1 và EMP2, bảng EMP2 lại được phân mảnh theo chiều ngang dựa trên trường Location.Các mảng dữ liệu có trường Location thoả điều kiện thuộc nhà kho Chicago, Buffalo được phân vào hai
mảnh
EMP2_CH (SSnum,Name, Title, Location)
EMP2_BU (Ssnum, Name, Title, Location)
(một lần nữa ta thấy, thuộc tính Location thừa , nên bỏ đi) EMP1 được lưu tại trung tâm, còn EMP2_CH và EMP2_BU lưu ở nơi thích hợp.
Bắt nguồn từ phân mảnh theo chiều ngang (Derived Horizontal Fragmentation)
Trong nhiều trường hợp buộc phải phân tán một quan hệ theo chiều ngang, nhưng thông tin dùng để quyết định các dòng phải chứa trong mảnh nào lại không nằm trong bảng quan hệ đó Giả sử cửa hàng mua bán thực phẩm qua mạng trên có hơn một nhà kho trong mỗi thành phố và mỗi nhà kho có một mã số riêng CSDL cho cửa hàng có hai bảng sau:
INVENTORY (Stocknum, Amount, Price, WarehouseNum)
Trang 14WAREHOUSE (WarehouseNum, Capacity, Street-Address, Location)
Cửa hàng có một CSDL trong mỗi thành phố và muốn phân mảnh quan
hệ INVENTORY theo chiều ngang để một mảnh dữ liệu trong thành phố chỉ
chứa các thông tin về tất cả các mục hàng hoá trong các nhà kho của thành
phố mình Ở đây ta gặp rắc rối với thuộc tính Location, thuộc tính mô tả vị trí của nhà kho trong thành phố, nó không phải là trường của INVENTORY, và
vì thế không thể biết rõ các danh mục hàng hoá thuộc thành phố nào
Để giải quyết vấn đề trên, ta cần biết vị trí của nhà kho thông qua mã
số của nó.Thông tin này được lưu trong bảng WAREHOUSE Do đó trước khi
tiến hành phân tán dữ liệu ta cần kết hợp thông tin trong cả hai bảng Ta dùng phép kết bằng, từ mã nhà kho được lưu trong cả hai bảng có giá trị
giống nhau Các dòng trong quan hệ INVENTORY được mô tả ở Chicago
sẽ thuộc mảng dữ liệu INVENTORY_CH, các dòng này kết với các dòng của quan hệ WAREHOUSE sao cho thoả điều kiện Location =’Chicago’ Do đó ta
có quan hệ mới sau :
INVENTORY_CH = лA (INVENTORY ∞ (δLocation = ‘Chicago’ (WAREHOUSE)))
trong đó A là tập các thuộc tính của INVENTORY Phép kết chỉ được sử
dụng để xác định vị trí của nhà kho cho các dòng sẽ được chứa trong
INVENTORY_CH Vì ta không muốn sử dụng bất kỳ thuộc tính nào trong WAREHOUSE, nên kết quả của phép kết trên chỉ trả về kết quả là A Từ phép
toán :
δLocation = ‘Chicago’ WAREHOUSE
cho kết quả là một mảnh dữ liệu của WAREHOUSE, mảng dữ liệu của INVENTORY được lấy từ mảng dữ liệu của WAREHOUSE trên.Ta gọi kiểu phân tán dữ liệu này là derived fragmention Quan hệ INVENTORY_CH là kết quả của phép kết một nửa của INVENTORY với một mảnh dữ liệu của WAREHOUSE.
Trang 15Phân mảnh theo chiều ngang được ứng dụng khi chỉ truy xuất đến một tập các dòng của quan hệ tại một nơi nào đó và phân mảnh theo chiều dọc được ứng dụng khi chỉ truy xuất đến một tập các thuộc tính của quan hệ tại một nơi nào đó.
Kiến trúc trên cơ sở lược đồ toàn cục có thể che giấu được sự phân mảnh Điều này có nghĩa là quan hệ được nhìn thấy như dạng nguyên thuỷ của nó trong lược đồ toàn cục và tầng trung gian có nhiệm vụ chuyển tất cả các truy xuất đến các mảnh dữ liệu được lưu trữ ở các CSDL khác nhau một cách thích hợp.(Quan hệ nhìn thấy với bản chất không phân mảnh) Trái lại
trong hệ thống multidatabase không cung cấp chức năng che dấu sự phân
mảnh, mỗi chương trình ứng dụng phải biết các mảnh dữ liệu và dùng câu truy vấn thích hợp cho mảnh dữ liệu đó
1.6.2 Sự phân mảnh và vấn đề cập nhật dữ liệu
Khi một quan hệ được phân mảnh, thao tác cập nhật đôi khi yêu cầu chuyển các dòng từ một mảnh này đến một mảnh khác hay nói cách khác đó
là từ một CSDL này đến CSDL khác Giả sử một nhân viên chuyển nơi làm
việc từ Chicago đến Buffalo Trong quan hệ chưa phân mảnh
EMPLOYEE (Ssnum, Name, Salary, Title, Location)
giá trị của thuộc tính Location sẽ được thay đổi Nếu EMPLOYEE được phân thành hai EMP2_CH và EMP2_BU, nói đơn giản việc cập nhật thuộc tính Location cho nhân viên đòi hỏi chuyển dòng thích hợp từ CSDL Chicago sang CSDL Buffalo.
Vấn đề được giải quyết tốt bằng kỹ thuật sao chép
1.6.3 Sự nhân bản (Replication)
Replication là một trong những kỹ thuật thường dùng nhất trong
CSDLPT Việc sao chép dữ liệu ở nhiều nơi cung cấp thêm nhiều chức năng bởi vì dữ liệu còn có thể được truy xuất nếu một nơi nào đó bị hư hỏng Nó
có khả năng cải tiến được việc thực thi: Việc truy xuất dữ liệu được thực hiện
có hiệu quả hơn vì dữ liệu được lấy tại nơi cục bộ hoặc từ một bản sao ở gần
Trang 16đó Tuy nhiên, việc cập nhật dữ liệu thường bị chậm bởi vì ta phải cập nhật
dữ liệu ở tất cả các bản sao Do đó việc thực thi replication này thường được
áp dụng cho những ứng dụng mà việc update xảy ra ít hơn querry Trong
phần này, chúng ta thảo luận về việc đưa ra sự thực thi này nó có liên quan đến việc thi hành câu lệnh SQL riêng lẻ
Ví dụ:
Để theo dõi các khách hàng, các nhà doanh nghiệp đưa ra một bảng sau:
Customer (CustNum, Address, Location)
Trong đó Location chỉ định kho hàng nào cung cấp Bảng này được truy vấn tại nơi trung tâm (headquarter) bởi một ứng dụng được gởi tới hàng
tháng đến tất cả khách hàng và đến từng kho hàng để truy vấn bảng bao gồm những thông tin được cấp phát theo Bảng này được cập nhật tại trung tâm khi một khách hàng mới đăng ký vào công ty hoặc thông tin cá nhân của từng khách hàng bị thay đổi (điều này xảy ra không thường xuyên)
Về khía cạnh trực quan, nó dường như thích hợp với dạng phân mảnh
ngang vì location là một phân mảnh riêng được lưu trữ tại tất cả các kho hàng tương ứng và tại trung tâm Do đó bảng này đã được nhân bản (replicate) và
được đặt ở nơi trung tâm Chúng ta tiến hành phân tích để ước tính việc lựa chọn thiết kế, so sánh với hai phương án mà dữ liệu sẽ không được nhân bản Có 3 cách lựa chọn sau đây:
Lưu trữ toàn bộ các bảng tại trung tâm, không lưu tại các kho hàng
Lưu toàn bộ các phân mảnh ở kho hàng mà không lưu ở trung tâm
Nhân bản các phân mảnh ở cả hai nơi
Một cách để so sánh các sự lựa chọn này là đánh giá lượng thông tin được chuyển giao giữa các nơi trong mỗi trường hợp khi một ứng dụng cụ thể được thi hành Để làm điều này, chúng ta giả sử kích thước bảng và số lần thi hành của mỗi ứng dụng như sau:
Bảng Customer có khoảng 100.000 dòng
Trang 17 Ứng dụng mail tại trung tâm gởi một mail mỗi tháng cho từng khách hàng
Có khoảng 500 lượt phân phát mỗi ngày (ở tất cả các kho hàng) được thi hành và mỗi lần đọc một dòng
Công ty có khoảng 100 khách hàng mới mỗi ngày (và sự thay đổi thông tin cá nhân của từng khách hàng là không đáng kể)
Bây giờ chúng ta tiến hành ước tính 3 sự lựa chọn này
Nếu chúng ta lưu bảng tại nơi trung tâm, thông tin sẽ được chuyển từ đây đến từng kho hàng tương ứng bất cứ lúc nào - khoảng 500 dòng mỗi ngày
Nếu chúng ta lưu những phân mảnh tại các kho hàng, thông tin phải được chuyển như sau:
• Từ kho hàng đến trung tâm khi ứng dụng mail được thi hành (khoảng 100.000 dòng /tháng hoặc 3.300 dòng /ngày)
• Từ trung tâm đến kho hàng khi 1 khách hàng mới đăng ký vào (khoảng 100 dòng/ngày)
Tóm lại, khoảng 3.400 dòng/ngày được chuyển đi
Nếu chúng ta nhân bản các phân mảnh ở cả hai nơi trung tâm tới kho hàng tương ứng khi 1 khách hàng mới đăng ký vào khoảng 100 dòng / ngày
Theo cách này, replication là sự lựa chọn tốt nhất Tuy nhiên, những
cách khác có thể là quan trọng như là cho biết thời gian thực hiện giao dịch
Nếu chúng ta lưu bảng đặt tại nơi trung tâm, cần tốn thời gian cho việc điều khiển sự phân phối bởi vì dữ liệu đòi hỏi truy xuất từ xa Điều này không được xem là quan trọng
Nếu chúng ta lưu các phân mảnh ở các kho hàng và những mail tháng đươc tạo bởi một ứng dụng, 100.000 dòng phải được gửi từ kho hàng tới
trung tâm có thể clog đường truyền của hệ thống và làm chậm những ứng
dụng khác Điều này nên tránh bằng cách cho chạy những ứng dụng mail vào cuối tuần khi mà các ứng dụng khác được thi hành
Trang 18 Nếu chúng ta nhân bản các phân mảnh, cần tốn thời gian cho một khách hàng mới đăng ký bởi vì nó đòi hỏi 1 khoảng thời gian để cập nhật các bảng ở cả hai nơi trung tâm và kho hàng tương ứng Điều này được xem là
quan trọng vì khách hàng là online khi update xảy ra và phải tốn thời gian để
cập nhật những bản ở xa làm cho thời gian đăng ký kéo dài không thể chấp nhận điều này Tuy nhiên, đối với ứng dụng này, việc tương tác với khách hàng được xem là hoàn tất khi CSDL ở các trung tâm đều được cập nhật Việc cập nhật ở kho hàng có thể được tiến hành sau bởi vì thông tin tại đây không cần lắm cho tới khi một vài sự phân phối giao dịch được thực hiện
Từ đây, chúng ta xem việc nhân bản các phân mảnh dường như vẫn là
sự lựa chọn tốt nhất
2 CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG ORACLE XE (EXPRESS EDITION)
Hệ quản trị cơ sở dữ liệu Oracle XE là phiên bản miễn phí, dễ cài, dễ
sử dụng và sử dụng giao diện bằng trình duyệt web dùng để:
Quản lý cơ sở dữ liệu
Tạo bảng, view và các đối tượng khác
Import, export và view dữ liệu dạng bảng
Chạy các câu truy vấn và các SQL script
Tạo các báo cáo
Oracle XE có những tiện ích trong command-line
SQL Command Line (SQL * Plus): nhập lệnh SQL hay PL/SQL để chạy
SQL*Load: nạp dữ liệu vào trong CSDL
2.1 Các khái niệm cơ bản
2.1.1 Snapshot
Định nghĩa: Snapshot là một yêu cầu phân tán tham chiếu tới một hay nhiều bảng chính, các view hoặc các snapshot khác mỗi sao bảng của các
Trang 19bảng chính được gọi là các Snapshot vì thông có được tại bất kỳ thời điểm nào có thể định kỳ được “Refresh” , nghĩa là làm cho các snapshot có trạng thái tương ứng với trạng thái mới nhất của bảng chính.
Read-only Snapshot: Là một bản sao đầy đủ của một bảng hay một tập các bảng Nó là sự phản ánh đầy đủ trạng thái mới nhất của bảng
Snapshot updatable: Có thể sửa đổi bản sao của bản chính và được định nghĩa bao hàm bảng sao đầy đủ của bảng chính hoặc tập các hàng trong bản chính
Như vậy sự khác nhau giữa hai Snapshot trên là: Snapshot updatable cho phép các yêu cầu và chỉnh sửa, còn Read-only Snapshot chỉ cho phép các yêu cầu
2.1.2 Sao bản cơ sở
Sao bản cơ sở là sao bản sử dụng các Read-only Snapshot và tuân theo một dạng của vị trí sao bản đầu tiên Dữ liệu của Read-only Snapshot sẽ được “Refresh” định kỳ
Các vị trí chủ: phải chứa một bảng sao đầy đủ của tất cả các đối tượng
có trong sao bảng nhóm Mỗi vị trí chủ sẽ chuyển các thay đổi của nó tới vị trí chủ khách cho các nhóm sao bản
Các vị trí Snapshot (Snapshot site): Là vị trí chứa một hay một các đối tượng trong sao bản
2.1.5 Danh mục các bản sao
Trang 20Sao bảng sử dụng một danh mục các sao bản thông tin, cũng như các đối tượng được sao bản, nơi chúng được sao bản và cập nhật như thế nào cần được truyền tới danh mục sao bảng, từ đó các bảng dữ liệu có thể quay lại và tìm được.
2.1.6 Database link
Là một con trỏ xác định đường liên lạc một chiều từ một Oracle DB server đến một DB server khác Link pointer thực sự được định nghĩa như là một cổng trong bảng từ điển dữ liệu Để truy cập vào link này thì bạn phải connect vào local DB mà link có chứa trong từ điển dữ liệu
Mỗi DB trong hệ thống phân tán phải có một tên duy nhất “global DB name” trong network domain
Ví dụ user scott truy xuất vào bảng emp trên remote DB với global name là hq.acme.com
Hình 3.1.6 Mô hình Database Link