1. Trang chủ
  2. » Thể loại khác

Tối ưu hóa truy vấn cơ sở dữ liệu hướng tới đối tượng : Luận văn ThS. Công nghệ thông tin: 60 48 01 04

80 14 0

Đ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 80
Dung lượng 1,28 MB

Nội dung

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT CÁC KÝ HIỆU 9 Mid Method Identify Định danh phương thức 10 Odb Object database Cơ sở dữ liệu đối tượng CÁC CHỮ VIẾT TẮT 2 OID Object Identifier Đ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

HÀ NỘI – 2014

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

PHẠM THỊ CHANH

TỐI ƯU HÓA TRUY VẤN CƠ SỞ DỮ

LIỆU HƯỚNG ĐỐI TƯỢNG

Ngành: CÔNG NGHỆ THÔNG TIN

Chuyên ngành : HỆ THỐNG THÔNG TIN

Mã số: 60480104

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS TS ĐOÀN VĂN BAN

HÀ NỘI – 2014

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan, kết quả của luận văn hoàn toàn là kết quả của tự bản thân tôi tìm hiểu, nghiên cứu Các tài liệu tham khảo đƣợc trích dẫn và chú thích đầy

đủ

Tác giả

Phạm Thị Chanh

Trang 4

LỜI CẢM ƠN

Lời đầu tiên của luận văn em xin gửi lời cảm ơn chân thành nhất đến PGS.TS Đoàn Văn Ban, người đã trực tiếp hướng dẫn, giúp đỡ và tạo mọi điều kiện thuận lợi cho em từ lúc tìm hiểu, định hướng cũng như tìm kiếm tài liệu trong lĩnh vực cơ sở

dữ liệu hướng đối tượng cho đến lúc hoàn thành luận văn

Em xin gửi lời cám ơn sâu sắc đến tất cả các thầy cô giáo đã dạy dỗ và truyền đạt những kinh nghiệm quý báu cho chúng em trong suốt hai năm cao học ở trường Đại học Công nghệ - Đại học Quốc gia Hà nội

Cuối cùng, em xin biểu thị sự biết ơn tới những người thân trong gia đình và bạn bè đã ưu ái, giúp đỡ, động viên, khích lệ để em hoàn thành luận văn này

Hà nội, ngày … , tháng … , năm 2014

Trang 5

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

CÁC KÝ HIỆU

9 Mid (Method Identify) Định danh phương thức

10 Odb (Object database) Cơ sở dữ liệu đối tượng

CÁC CHỮ VIẾT TẮT

2 OID (Object Identifier) Định danh đối tượng

3 UML (Unified Modeling Language) Ngôn ngữ mô hình hợp nhất

(Object Database Management Group)

Nhóm quản trị CSDL đối tượng

5 ODL(Object Definition Language) Ngôn ngữ định nghĩa đối tượng

6 OQL (Object Query Language) Ngôn ngữ truy vấn đối tượng

7 OODB(Object-Oriented Database) CSDL Hướng đối tượng

8 OODBMS (Object-Oriented Database

Management System)

Hệ quản trị CSDL Hướng đối tượng

9 ADTs (Abtract Data Types) Tập kiểu dữ liệu trừu tượng

10 SFW (Select From Where) Khối lệnh trọng tâm của ngôn ngữ

truy vấn OQL

Trang 6

DANH MỤC CÁC THUẬT NGỮ

Biến thể hiện dựa trên giá trị Value based instance variable

Kiểu dữ liệu “túi”, đa tập là kiểu sưu tập Bag

Mối quan hệ kế thừa Inheritance relationship Mối quan hệ kết nhập Aggregation relationship

Phân cấp lớp hợp thành Class composition hierarchy

Phương thức thuộc tính - suy dẫn Derived-attribute method

Mô hình dữ liệu hướng đối tượng Object-Oriented Model

Tính đóng gói thông tin Encapsulation

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Sự phát triển của các mô hình dữ liệu 4

Hình 1.2 Mô hình dữ liệu hướng đối tượng nguyên mẫu 6

Hình 1.3 Kế thừa đơn 14

Hình 1.4 Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung 14

Hình 1.5 Kế thừa bội không có lớp cơ sở chung 15

Hình 1.6 Sự phân cấp các kiểu trong OQL 20

Hình 1.7 Lược đồ CSDL Quản lý Nhân viên 21

Hình 2.1 Siêu đồ thị H 28

Hình 2.2 Siêu đồ thị kết nối đối tượng của ví dụ 2.1 30

Hình 2.3 Siêu đồ thị kết nối của ví dụ 2.2 34

Hình 2.4 Siêu đồ thị kết nối của ví dụ 2.3 35

Hình 2.5 Siêu đồ thị kết nối của ví dụ 2.4 36

Hình 3.1 Lược đồ CSDL Quản lý Nhân sự 52

Hình 3.2 Form luận văn 61

Hình 3.3 Kết quả truy vấn 1 62

Hình 3.4 Kết quả truy vấn 2 63

Hình 3.5 Kết quả truy vấn 3 65

Trang 8

DANH MỤC CÁC BẢNG, BIỂU ĐỒ

Bảng 2.1 Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.3 44

Bảng 2.2 Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.3 46

Bảng 2.3 Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.4 46

Bảng 2.4 Kết quả ƣớc lƣợng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.4 47

Biều đồ 3.1 So sánh thời gian thực hiện truy vấn 1 62

Biều đồ 3.2 So sánh thời gian thực hiện truy vấn 2 64

Biều đồ 3.3 So sánh thời gian thực hiện truy vấn 3 65

Trang 9

LỜI MỞ ĐẦU

Chúng ta đang sống trong một thời đại mới, thời đại của Công nghệ thông tin (CNTT) Công nghệ thông tin ngày một phát triển và trở thành một nhu cầu không thể thiếu trong mọi lĩnh vực của đời sống xã hội CNTT là ngành quản lý công nghệ

và mở ra nhiều lĩnh vực khác nhau như phần mềm máy tính, phần cứng máy tính, ngôn ngữ lập trình, ….Và cơ sở dữ liệu cũng là một lĩnh vực quan trọng của Công nghệ thông tin Từ khi ra đời cho đến nay, những nghiên cứu về Cơ sở dữ liệu (CSDL) đã không ngừng phát triển và ngày càng trở nên cần thiết trong các ứng dụng

về CNTT

CSDL đã trở thành một bộ phận chủ yếu không thể thiếu trong hầu hết các hệ thống thông tin Hiện nay, các hệ thống thông tin hay các CSDL đều chủ yếu sử dụng một kiểu CSDL truyền thống đó là CSDL quan hệ, một trong những CSDL đã được phát triển và ứng dụng rộng rãi Tuy nhiên với sự phát triển nhanh chóng của CNTT, CSDL quan hệ đã dần bộc lộ những yếu điểm và nhiều hạn chế, đặc biệt là trong việc xây dựng các ứng dụng cơ dữ liệu phức tạp, dữ liệu đa chiều, dữ liệu có nhiều mối quan hệ, hay các dữ liệu đa phương tiện như: hình ảnh, âm thanh, video,…

Ngày nay, phương pháp hướng đối tượng được sử dụng rất phổ biến trong lĩnh vực phát triển phần mềm, vì cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong cuộc sống Trong thế giới thực, đối tượng

là thực thể tồn tại như con người, xe, máy tính,…Trong ngôn ngữ lập trình, đối tượng

có thể là màn hình, điều khiển,…Kỹ thuật hướng đối tượng là kỹ thuật nhằm vào sự tương tác giữa các đối tượng Mỗi đối tượng có những thuộc tính (thông tin lưu trữ), những phương thức xác định các chức năng của đối tượng và các đối tượng chỉ được tạo ra và tồn tại trên bộ nhớ chính, còn việc lưu trữ và tương tác dữ liệu dưới dạng các đối tượng trên bộ nhớ thứ cấp vẫn chủ yếu kế thừa từ mô hình quan hệ truyền thống Hiện đã có rất nhiều kết quả nghiên cứu, cho phép chuyển đổi qua lại giữa các bảng trong mô hình quan hệ sang tập các đối tượng tương ứng Mặc dù kế thừa được tính năng mạnh của hướng đối tượng, nhưng việc chuyển đổi qua lại này càng làm cho mã lệnh của chương trình phức tạp thêm, đồng thời hiệu suất chương trình cũng giảm đi rõ rệt

CSDL hướng đối tượng là giải pháp cho những hạn chế của CSDL quan hệ Trong CSDL hướng đối tượng, dữ liệu được lưu trữ dưới dạng các đối tượng của ngôn ngữ lập trình nên cho phép lưu trữ được các dạng dữ liệu phức tạp, lượng thông tin lớn, đa chiều, đa quan hệ, hay có thể mở rộng lưu trữ các dữ liệu đa phương tiện như hình ảnh, âm thanh, video Trên thế giới, một số hệ quản trị cơ sở dữ liệu hướng đối tượng được phát triển bởi các nhà phân phối sản phẩm thương mại, tại các phòng

Trang 10

nghiên cứu công nghệ và các Viện Đại học như: Gemstone, ObjectStores, IRIS,

Orion, Extra, Oracle, Db4o,… Một mô hình dữ liệu đối tượng chuẩn ODMG đã được

phát triển và dựa vào đó để thiết lập một số khái niệm cơ sở được gọi là mô hình hạt nhân cho mô hình CSDL hướng đối tượng Mô hình hạt nhân đủ mạnh để thỏa mãn nhiều đòi hỏi của các ứng dụng mới, hơn nữa còn được dùng làm cơ sở để xác định những khác biệt chính giữa mô hình dữ liệu hướng đối tượng và các mô hình dữ liệu truyền thống khác Hệ thống hướng đối tượng là tập các lớp đối tượng có mối quan hệ với nhau, trao đổi thông tin với nhau để thực hiện những nhiệm vụ đặt ra của bài toán ứng dụng trong thực tế

Một trong những hướng nghiên cứu quan trọng được đề cập trong các hệ thống CSDL hướng đối tượng là tối ưu hoá truy vấn hướng đối tượng Với một câu truy vấn, sẽ tồn tại nhiều phương án mà hệ thống CSDL cho phép xử lý và đưa ra kết quả cuối cùng tương đương nhau, việc tối ưu hóa câu truy vấn sẽ cho chúng ta lựa chọn phương án nào có tổng thời gian thực hiện truy vấn hiệu quả hơn, tức là chọn phương

án có chi phí ước lượng nhỏ nhất Hiện nay, các nhà nghiên cứu đã đề xuất rất nhiều

kỹ thuật tối ưu hoá truy vấn hướng đối tượng khả thi và đáp ứng được các yêu cầu này như: Scott Lee Vanderberg (1993), J Fong (1997), C Ramanathan and J Hodges (1997), Clement Yu, Yi Zhang, Weiyi Meng, Wom Kim, Gaoming Wang, Tracy

Pham and Son Daop (1997): Giới thiệu giải thuật chuyển đổi các truy vấn hướng đối

tượng sang truy vấn quan hệ để tận dụng các kỹ thuật tối ưu hoá truy vấn đã có trên

mô hình quan hệ; Jia Liang Han (1998): “Optimizing Relational Queries in Connection Hypergraph: Nested Queries, Views, and Binding Propagations”; Ullman

and Jeffrey D (1999), Lê Mạnh Thạnh và Hoàng Bảo Hùng (2009): Phương pháp tối

ưu hóa truy vấn đối tượng bằng các phép biến đổi biểu thức đại số đối tượng OQL;

Lê Mạnh Thạnh, Đoàn Văn Ban và Hoàng Bảo Hùng (2005): Phương pháp dùng ký

pháp siêu đồ thị để biểu diễn và tối ưu hoá các truy vấn trong CSDL hướng đối tượng Tuy nhiên đối với các truy vấn lồng, khi phân tích ước lượng chi phí của biểu

thức đại số lồng thì việc định giá sẽ cho chi phí chưa đạt hiệu quả như mong muốn

Vì vậy, luận văn tập trung nghiên cứu việc làm phẳng các truy vấn con trong truy vấn

lồng nhờ phương pháp dùng ký pháp siêu đồ thị để biểu diễn và tối ưu hoá các truy

vấn trong CSDL hướng đối tượng Từ đó, xây dựng thuật toán ước lượng chi phí xử

lý truy vấn đối tượng trên cơ sở ước lượng các siêu cạnh trong siêu đồ thị để đạt được

mức chi phí nhỏ hơn cho mỗi truy vấn Chính vì lý do trên mà tôi chọn đề tài “TỐI

ƯU HOÁ TRUY VẤN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG” làm luận văn

tốt nghiệp

Mục tiêu của luận văn là nghiên cứu các mô hình CSDL hướng đối tượng để

giải bài toán tối ưu hóa truy vấn đối tượng Đây là vấn đề luôn được các nhà khoa

Trang 11

học quan tâm nghiên cứu Trong khuôn khổ của luận văn, tôi tập trung nghiên cứu vào phương pháp tối ưu hóa truy vấn mà hay được sử dụng nhất đặc biệt là đối với các truy vấn lồng đó là sử dụng phương pháp siêu đồ thị Nghiên cứu các đặc trưng trong mô hình dữ liệu hướng đối tượng; Tìm hiểu các kỹ thuật xử lý truy vấn, sự biểu diễn câu truy vấn bằng ngôn ngữ truy vấn đối tượng OQL; Giới thiệu ký pháp siêu đồ thị [10] trong biểu diễn truy vấn Từ đó, sử dụng phương pháp này để tối ưu hóa truy vấn cho lớp các truy vấn lồng trong CSDL hướng đối tượng [3]

Với mục tiêu của luận văn như vậy, bố cục của luận văn gồm: phần mở đầu, ba chương nội dung và phần kết luận

Chương 1: Giới thiệu các khái niệm, định nghĩa cơ bản như: lớp, đối tượng,

định danh đối tượng trong mô hình CSDL hướng đối tượng; kế đến, trình bày sự mở rộng ngữ nghĩa của mô hình như hệ thống phân cấp và quan hệ kế thừa Tìm hiểu kỹ thuật xử lý truy vấn và các thay đổi so với kỹ thuật xử lý truy vấn quan hệ Để thực hiện được các câu truy vấn đối tượng một cách hiệu quả và tiếp tục nghiên cứu các vấn đề về tối ưu hoá truy vấn trong các CSDL hướng đối tượng, ngôn ngữ truy vấn OQL là ngôn ngữ truy vấn được chọn giới thiệu trong chương này

Chương 2: Trình bày khái niệm siêu đồ thị kết nối đối tượng Sau đó sử dụng ký

pháp siêu đồ thị để biểu diễn truy vấn OQL Xây dựng giải thuật khởi tạo siêu đồ thị trong các trường hợp truy vấn đối tượng đơn và lồng Đưa ra giải thuật ước lượng siêu cạnh cho các trường hợp tách biệt hay liên thông của các siêu đồ thị con hợp thành siêu đồ thị mà biểu diễn cho một truy vấn đối tượng lồng Cuối chương, là mở rộng thuật toán tối ưu hóa truy vấn trên cơ sở xây dựng danh sách các bước thực thi câu truy vấn theo quy tắc có thứ tự loại bỏ siêu cạnh

Chương 3: Giới thiệu về hệ quản trị CSDL đối tượng DB4O Phát biểu bài toán

quản lý nhân sự trong công ty, đó là bài toán được áp dụng trong các ví dụ cho thuật toán tối ưu hóa truy vấn Đưa ra kết quả thực nghiệm cho bài toán tối ưu hóa truy vấn CSDL hướng đối tượng dựa trên siêu đồ thị Cuối cùng là kết luận và hướng phát triển của đề tài

Nội dung cơ bản của luận văn đã được trình bày, thảo luận tại xêmina khoa học

ở Bộ môn Hệ thống thông tin, khoa Công nghệ Thông tin, trường Đại học Công nghệ

- Đại học Quốc gia Hà nội

Trang 12

Chương 1

MÔ HÌNH CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG

1.1 Tổng quan về hệ thống dữ liệu hướng đối tượng

1.1.1 Mô hình dữ liệu

Các hệ thống quản trị cơ sở dữ liệu (CSDL) đầu tiên xuất hiện trước những năm

1970 Những hệ thống này được phát triển từ hệ thống các tệp tin (File Systems) để

hỗ trợ cho việc lưu trữ và xử lý số lượng lớn các dữ liệu Tuy nhiên, các nhà nghiên cứu trong lĩnh vực CSDL nhận thấy giá trị của dữ liệu cần được lưu trữ để xử lý, và các mô hình dựa trên dữ liệu cần được nghiên cứu để cải thiện độ tin cậy, đảm bảo an ninh, an toàn dữ liệu và nâng cao hiệu quả của việc truy cập vào hệ thống

Mô hình dữ liệu cung cấp cách thức tổ chức các dữ liệu được lưu trữ theo cấu trúc đặc biệt hoặc theo các mối quan hệ sao cho việc truy cập và quản lý nhanh chóng, hiệu quả Nhiều mô hình CSDL như mô hình phân cấp (Hierarchical model),

mô hình mạng (Network model), mô hình quan hệ (Relational model), mô hình hướng đối tượng (Object-Oriented model) như Hình 1.1 đã xuất hiện và đóng vai trò quan trọng trong việc nghiên cứu phát triển các hệ thống quản trị CSDL (DataBase Management System)

Hình 1.1 Sự phát triển của các mô hình dữ liệu [1]

1.1.2 Những hạn chế của cơ sở dữ liệu quan hệ

Mô hình CSDL quan hệ truyền thống được sử dụng nhiều nhưng chưa đáp ứng được hết các yêu cầu của thực tế Mô hình quan hệ chỉ phù hợp cho những bài toán có

bộ dữ liệu nhỏ và không đáp ứng được cho những bài toán ở lĩnh vực ứng dụng mới, nhiều kiểu dữ liệu phức tạp Ví dụ, khi cần lưu trữ và xử lý một số lượng lớn dữ liệu,

dữ liệu hình ảnh, âm thanh hay video, … thì việc sử dụng mô hình quan hệ sẽ không đạt hiệu quả Nhưng đa phần những ứng dụng mới hiện nay đòi hỏi hệ thống cơ sở dữ

Complex Object Model

Object-Oriented Databases

Trang 13

liệu phải xử lý được các tính năng như: các kiểu dữ liệu phức tạp, đóng gói dữ liệu (Data Encapsulation) và cấu trúc dữ liệu trừu tượng, cùng với những phương pháp mới để lập chỉ mục và truy vấn thông tin Phần lớn các hệ quản trị CSDL phổ biến hiện nay trên thị trường là các hệ quản trị dữ liệu theo mô hình quan hệ Tuy nhiên, các hệ quản trị CSDL quan hệ có những hạn chế như sau [13,19]:

Hạn chế trong vấn đề biểu diễn thế giới thực (Real world): Các quan hệ

(relations) không đủ mạnh để thể hiện các thực thể (entities) trong thế giới thực Rất khó để mà biểu diễn được mối quan hệ kế thừa, mối quan hệ thành viên (IS-A relationships) Ví dụ nhân viên là một người, trong ví dụ này, hệ quản trị CSDL quan

hệ phải định nghĩa 2 bảng là bảng Nguoi và bảng NhanVien, trong đó bảng NhanVien nhận được những thông tin từ lớp cha (superclass) Nguoi để kết nối lại

Hạn chế về nạp chồng ngữ nghĩa (Semantic overloading): Thành phần chuẩn

trong mô hình quan hệ là quan hệ (relation) không đủ mạnh để biểu diễn cho dữ liệu

và các mối quan hệ phức tạp của dữ liệu Nó thường phải chia một đối tượng thành một số các quan hệ (bảng) và truy vấn tin thì phải thực hiện các phép: chiếu, chọn và kết nối để tái cấu trúc các đối tượng đó

Chỉ biểu diễn những dữ liệu thuần nhất: Những hạn chế về kiểu dữ liệu trong

mô hình quan hệ làm nó không thể biểu diễn được các đối tượng trong thế giới thực

Một mục (item) bất kỳ trong một bộ dữ liệu (tuple) thực chất là phần giao nhau của

hàng với cột, nó phải là dữ liệu của một kiểu dữ liệu nguyên tố, bởi vì theo giả thuyết,

cả chiều ngang và chiều dọc đều phải có kiểu thuần nhất

Hệ thống khép kín: Những lĩnh vực ứng dụng còn tồn tại không thể bổ sung

được vào hệ thống sau khi phát triển hệ quản trị CSDL, như không thể bổ sung các kiểu dữ liệu mới vào hệ thống Nhưng thực tế đòi hỏi các hệ quản trị CSDL phải hỗ trợ để xử lý những kiểu dữ liệu mới như kiểu hình ảnh (images), video, audio, …

Giới hạn các phép toán: Mô hình quan hệ có một tập cố định các phép toán

trong SQL Ngoài ra, không cho phép mở rộng hay bổ sung thêm những phép toán mới

Khó thực hiện truy vấn đệ qui: Các câu truy vấn đệ qui cực kỳ khó đặc tả và cài

đặt trong mô hình quan hệ Đây cũng chính là điểm yếu làm cho SQL không thực hiện được đầy đủ trong tính toán

Những trở ngại trong đối sánh: Mô hình quan hệ sử dụng những mô thức lập

trình hỗn hợp khác nhau, trong đó cho phép các dữ liệu với kiểu khác nhau và nhiều

vị trí khác nhau có thể được xử lý trong cùng một thời điểm

1.1.3 Mô hình dữ liệu hướng đối tượng

Trong số các mô hình dữ liệu hiện nay, mô hình dữ liệu đối tượng là mô hình đảm bảo tính mềm dẻo, tính linh hoạt, và tính “mở” của hệ thống Mô hình dữ liệu

Trang 14

hướng đối tượng đang được phát triển một cách phổ dụng trong lĩnh vực phát triển CSDL Được xây dựng theo cách tiếp cận hướng đối tượng nhằm khắc phục những hạn chế của những mô hình dữ liệu truyền thống Mô hình dữ liệu hướng đối tượng

có các đặc trưng cơ bản sau [6, 13]:

- Thông tin được biểu diễn thành các đối tượng giống như các đối tượng trong lập trình hướng đối tượng Lớp bao gồm các thông tin:

+ Dữ liệu thuộc tính mô tả các đặc trưng của các thực thể (đối tượng)

+ Các phương thức mô tả hành vi ứng xử của đối tượng

+ Mối quan hệ giữa các lớp với nhau

- Mỗi đối tượng (thực thể) có một định danh ID để xác định duy nhất trong hệ CSDL

- Các CSDL hướng đối tượng được thiết kế để làm việc tốt đối với những ngôn ngữ lập trình hướng đối tượng như: Java, C++, C#, Smalltalk,…

Mục đích của CSDL hướng đối tượng là để quản trị hiệu quả những kiểu dữ liệu phức hợp, dữ liệu đa phương tiện như âm thanh, hình ảnh, , nhằm khắc phục những hạn chế của CSDL quan hệ Hình vẽ sau đây giới thiệu về mô hình dữ liệu hướng đối tượng nguyên mẫu

Hình 1.2 Mô hình dữ liệu hướng đối tượng nguyên mẫu [13]

Trên cơ sở kế thừa và phát triển các điểm mạnh của CSDL quan hệ thì CSDL đối tượng đã bổ sung các tính chất mà CSDL quan hệ vẫn còn thiếu sót Cũng như hệ thống CSDL truyền thống, hệ thống CSDL hướng đối tượng có tính bền vững, tính chia sẻ dữ liệu, tính bảo mật, tính toàn vẹn và truy vấn dữ liệu Ngoài ra, CSDL hướng đối tượng còn có những ưu điểm khác như [13]:

- Sự tổng quát hoá

- Sự kết nhập

Lập trình hướng đối tượng

- Phiên bản

- Sự tiến hoá lược đồ

MÔ HÌNH DỮ LIỆU HƯỚNG ĐỐI TƯỢNG

Trang 15

Hỗ trợ những kiểu dữ liệu được định nghĩa bởi người sử dụng: CSDL hướng

đối tượng có khả năng lưu trữ các kiểu phức hợp, kiểu được định nghĩa bởi người sử dụng, cho phép thao tác trong kiểu dữ liệu một cách dễ dàng

Cải tiến đáng kể về chất lượng dữ liệu: Ta có thể đưa ra nhiều ràng buộc vào

cấu trúc dữ liệu Mô hình còn cho phép thể hiện được cả những ràng buộc không có cấu trúc mà chương trình phải thoả mãn khi nó thực hiện trong hệ CSDL Một CSDL quan hệ được chuẩn hóa có thể xem như một trường hợp đặc biệt của CSDL hướng đối tượng

Tốc độ phát triển phần mềm nhanh hơn: Cấu trúc CSDL nhất quán và rõ ràng

giúp cho lập trình ứng dụng trở nên đơn giản và nhanh hơn Những người phát triển ứng dụng có kinh nghiệm thường sử dụng những câu lệnh rất mạnh của các hệ quản trị CSDL thay cho những đoạn chương trình của người sử dụng

Tích hợp dữ liệu dễ dàng và tiện lợi: Việc tích hợp nhiều hệ thống độc lập có

thể làm giảm bớt sự sao chép dữ liệu của con người và mở rộng những câu truy vấn

có thể trả lời được Mô hình hướng đối tượng cung cấp cách biểu diễn thống nhất làm thuận tiện hơn cho việc tìm hiểu và tích hợp thông tin

Không cần các khóa chính (Primary Keys): người sử dụng hệ quản trị CSDL

quan hệ thường phải lo lắng về tính duy nhất để phân biệt các bộ dữ liệu và đảm bảo rằng không có hai bộ dữ liệu có cùng giá trị của khóa chính để tránh xảy ra xung đột Nhưng trong một hệ quản trị CSDL hướng đối tượng, việc xác định duy nhất của các đối tượng được thực hiện bởi định danh đối tượng (OID) và người sử dụng không cần phải quan tâm về chúng

Một mô hình dữ liệu thống nhất: Một mô hình dữ liệu thông thường phải mô

hình hóa các thực thể, các mối quan hệ, các ràng buộc và các hoạt động thay đổi trạng thái của dữ liệu trong hệ thống Với hệ quản trị CSDL quan hệ ta không thể mô hình được các hoạt động và không đưa ra được những quy tắc để làm thay đổi trạng thái của dữ liệu trong hệ thống, bởi vì điều này vượt quá phạm vi của cơ sở dữ liệu Vì vậy, các ứng dụng sử dụng hệ thống CSDL quan hệ thường sử dụng một sơ đồ quan

hệ - thực thể để mô hình các bộ phận tĩnh của hệ thống và một mô hình riêng biệt cho các hoạt động và hành vi của các thực thể trong ứng dụng Với hệ quản trị CSDL hướng đối tượng, không có sự tách biệt giữa các mô hình dữ liệu và mô hình ứng dụng để mô tả đầy đủ các đặc trưng, tính chất tĩnh cũng như hành vi ứng xử động của các đối tượng Toàn bộ ứng dụng như vậy có thể được mô hình đầy đủ trong các biểu

đồ UML

1.2 Các khái niệm cơ sở

1.2.1 Đối tượng, Định danh đối tượng và Lớp đối tượng

Đối tượng (Object)

Trang 16

Đối tượng là một khái niệm cơ sở quan trọng nhất của cách tiếp cận hướng đối tượng Đối tượng là thực thể của hệ thống, của CSDL chỉ một người, một địa điểm hay một vật nào đó tồn tại trong thế giới thực Một thực thể bất kỳ trong thế giới thực

là một đối tượng Đối tượng trong thế giới thực được xác định duy nhất, chứa một tập nhất định các thông tin về đối tượng và các hành vi dựa trên các thông tin đó Một đối tượng cũng có thể có các mối quan hệ hay có khả năng trao đổi thông tin với các đối tượng khác

Ví dụ: Một đối tượng Nhân viên là một người đang làm việc cho một công ty hay doanh nghiệp nào đó, được xác định duy nhất trong thế giới thực, chứa một tập nhất định các thông tin về Nhân viên đó như: mã nhân viên, họ tên, ngày sinh, nơi sinh, lương, dự án mà nhân viên đang tham gia,…Một đối tượng Nhân viên có thể có các quan hệ với các đối tượng khác, như quan hệ với đối tượng Phòng ban hay đối tượng Dự án mà nhân viên đó đang tham gia làm việc

Trong CSDL hướng đối tượng, các đối tượng trong thế giới thực được mô hình hóa, biểu diễn vào CSDL theo các đặc trưng của đối tượng và luôn duy trì sự tương ứng trực tiếp giữa các đối tượng trong CSDL với các đối tượng trong thế giới thực

Định danh đối tượng (OID: Object Identity)

Một đối tượng được xác định duy nhất trong thế giới thực, và do đó cũng phải được biểu diễn duy nhất trong CSDL Việc xác định duy nhất đối tượng trong CSDL được thực hiện bằng cách sử dụng các Định danh đối tượng (Object Identity) hay OID Hệ thống CSDL hướng đối tượng cung cấp một định danh duy nhất cho mỗi đối tượng và được lưu trữ trong CSDL Định danh duy nhất này do hệ thống tự động tạo ra và được gọi là định danh đối tượng Giá trị OID người dùng không nhìn thấy được, nó được sử dụng bên trong hệ thống để xác định duy nhất một đối tượng và dùng để tạo ra các tham chiếu bên trong đối tượng OID của mỗi đối tượng phải thỏa mãn hai tính chất sau:

1 Giá trị OID của một đối tượng không được thay đổi trong CSDL hướng đối tượng Điều này đảm bảo tính duy nhất của mỗi đối tượng Do đó, một hệ thống CSDL hướng đối tượng phải có cơ chế tạo ra các OID và đảm bảo tính bất biến

2 Mỗi giá trị OID chỉ được sử dụng duy nhất một lần; nghĩa là khi một đối tượng bị xóa đi từ CSDL thì OID của nó cũng không được gán cho đối tượng bất kỳ nào khác

Định danh đối tượng OID khác với khóa chính của đối tượng Khóa chính của đối tượng là một thuộc tính của đối tượng, được người dùng gán giá trị và có thể nhìn thấy, thay đổi được và có thể được cấp lại, còn OID thì không

Ví dụ: Một Nhân viên được biểu diễn trong CSDL có một OID duy nhất, xác định sự tương ứng Nhân viên đó trong thế giới thực Một Nhân viên khác trong thế

Trang 17

giới thực nếu được biểu diễn trong CSDL thì phải có một OID khác với OID của Nhân viên trên, thậm trí cả khi Nhân viên trên bị xóa khỏi hệ thống Điều này đảm bảo sự tương ứng của CSDL với thế giới thực, tránh sự nhầm lẫn về các đối tượng được biểu diễn trong CSDL

thường được mô tả bằng từ khóa Class Ví dụ trong lược đồ quản lý nhân viên ta có

các lớp: NhanVien, PhongBan, DuAn …Trong đó, lớp Nhân viên mô tả cấu trúc

chung của các đối tượng Nhân viên, được khai báo như sau:

Thuộc tính có thể là thuộc tính đơn trị hoặc thuộc tính đa trị, thuộc tính đa trị

được khai báo bởi từ khóa set Ngoài ra một thuộc tính có thể là thuộc tính phức hợp, được xác định từ tập các thuộc tính khác (sử dụng từ khóa tuple để khai báo)

Ví dụ 1.1 Khai báo về các thuộc tính có trong lớp QuanLy

Trang 18

luongcoban: double)

Class QuanLy inherits NhanSu

Type tuple ( chucvu: string;

phong: PhongBan;

duan: set( DuAn))

Trong ví dụ trên các thuộc tính hoten, giới tính, diachi… là các thuộc tính đơn trị, thuộc tính ngaysinh là thuộc tính phức hợp Còn thuộc tính duan là thuộc tính đa

trị, với ngữ nghĩa rằng mỗi đối tượng thuộc lớp QuanLy có thể tham gia vào nhiều

dự án khác nhau; nghĩa là mỗi đối tượng thuộc lớp QuanLy cho tương ứng một tập các giá trị OID của các đối tượng thuộc lớp DuAn

Phương thức (Method)

Phương thức của một lớp thường được dùng để mô tả các hành vi của đối tượng (hoặc của lớp) Ví dụ như đối tượng thuộc lớp điện thoại có các hành vi sau: Đổ chuông, chuyển tín hiệu từ sóng sang dạng nghe được, chuyển tín hiệu giọng nói sang dạng chuẩn, chuyển tín hiệu lên tổng đài.v.v Khi thiết kế, người ta có thể dùng các phương thức để mô tả và thực hiện các hành vi của đối tượng Mỗi phương thức thường được định nghĩa là một hàm, các thao tác để thực hiện hành vi đó được viết tại nội dung của hàm Khi thực hiện hành vi này, đối tượng có thể phải thực hiện các hành vi khác Ví dụ như điện thoại phải chuyển tín hiệu giọng nói sang dạng chuẩn trước khi chuyển lên tổng đài Cho nên một phương thức trong một lớp có thể sử dụng phương thức khác trong quá trình thực hiện hành vi của mình

1.2.3 Các kiểu dữ liệu

Các khái niệm sau đây được sử dụng trong hầu hết các hệ CSDL hướng đối tượng, chẳng hạn như Gemstone, Orion, Ontos, O2, ObjectStore, ODMG Để thuận tiện trong trình bày, chúng ta sử dụng một số ký hiệu sau [4, 6, 21]:

T – tập hữu hạn các kiểu

L – tập các kiểu nguyên thuỷ như: byte, int, long, float, double, char, string và

boolean

Trang 19

Att – tập tất cả thuộc tính của các đối tượng trong hệ thống

O – tập tất cả đối tượng và các đại lượng trong một CSDL

Class – tập các tên lớp

Tập Dom các giá trị nguyên thuỷ là hợp của tất cả các miền giá trị cơ sở của ngôn ngữ lập trình Các phần tử của Dom được gọi là hằng, trong đó nil là một hằng

đặc biệt biểu diễn giá trị không xác định

Tập Obj = {o1, o 2 , …} là tập vô hạn các định danh đối tượng (OID) và tập O id là

tập con các định danh đối tượng, O id Obj Họ giá trị trên O id , ký hiệu Val(O id), được xác định như sau:

(i) Hằng nil Val(O id)

(ii) Nếu v  Dom thì v Val(O id)

(iii) Nếu o  O id thì o  Val(O id)

(iv) Tập {vi | vi Val(O id), (i = 1, , n)}  Val(O id)

(v) Cho tập các giá trị {vi | vi Val(O id), (i = 1, , n)} và tập các tên thuộc tính rời nhau {Ai | Ai, Aj Att, (i  j  Ai  Aj), (i, j = 1, , n)} thì bộ [Ai : v1, , An : vn]

Class được sử dụng để mô tả định nghĩa kiểu của lớp các đối tượng

Ví dụ 1.2: Cho lược đồ CSDL hướng đối tượng sau:

SoNV: set (NhanVien ))

Ta tiến hành biểu diễn một số đối tượng từ lược đồ CSDL đối tượng trên, trong

đó mỗi đối tượng là một cặp (o, v) Xét các đối tượng

Ob 1 = (o1, [hoten: “Nam Phong”, gioitinh: false, luong: 6000000, phong: o5])

Ob 2 = (o2, [hoten: “Nguyên Minh”, gioitinh: true, luong: 4000000, phong: o5])

Ob 3 =(o3, [hoten: “Trần Hùng”, gioitinh: false, luong: 5000000, phong: o5])

Trang 20

Ob 4 =(o4, [hoten: “Minh Châu”, gioitinh: true, luong: 3500000, phong: o5])

Ob 5 =(o5, [tenphong: “Kinh Doanh”, truongphong: o1, SoNV: {o1, o2, o3, o4}])

Đối tượng Ob 1 theo định nghĩa trong lược đồ trên sẽ gồm định danh o1 và một

bộ (tuple) các giá trị: [hoten : “Nam Phong”, gioitinh : false, luong : 6000000, phong :

o5] Đối tượng Ob 5 có định danh là o5 và một giá trị bộ: [tenphong : “Kinh Doanh”,

truongphong : o1, SoNV : {o1, o2, o3, o4}], trong đó, thuộc tính tenphong có giá trị nguyên thủy, thuộc tính truongphong tham chiếu đến đối tượng có định danh đối

tượng là o1, thuộc tính SoNV (số lượng nhân viên) có giá trị tập (set) tham chiếu đến

các đối tượng với các định danh đối tượng o1,o2, o3, o4

Trong mô hình dữ liệu quan hệ, so sánh bằng của các bộ trong quan hệ luôn dựa trên các giá trị của bộ, hai bộ bằng nhau nếu tất cả các thuộc tính khoá của hai bộ có cùng giá trị Tuy nhiên, trong mô hình CSDL hướng đối tượng cần phân biệt hai khái niệm “đồng nhất” và “bằng nhau” của các đối tượng như trong thực tế Hai quan hệ này được định nghĩa như sau:

Định nghĩa 1.1: Cho hai đối tượng S1(o1, v1) và S2(o2, v2)

i Đối tượng đồng nhất: Hai đối tượng S1 và S2 được gọi là đối tượng đồng nhất,

ký hiệu S1 = oidS2 nếu chúng có cùng định danh đối tượng, tức là S1.o1 = S2.o2

ii Đối tượng bằng nhau: Hai đối tượng S1 và S2 được gọi là bằng nhau về giá trị,

ký hiệu S1 = vS2

- Nếu kiểu của đối tượng là nguyên thuỷ thì chúng phải có cùng giá trị

- Nếu kiểu của đối tượng là kiểu không nguyên thuỷ thì chúng phải có cùng số các tính chất và với mọi tính chất pi của S1 đều tồn tại tính chất pj của S2 bằng nhau về giá trị

Các kiểu dữ liệu

Các kiểu cơ sở bao gồm các kiểu chuẩn trong SQL như: integer, string, float,

char, double, ….và các kiểu do người dùng định nghĩa như lớp hoặc cấu trúc

Các kiểu tập hợp đây là các kiểu đặc trưng chỉ có ở truy vấn hướng đối tượng

như: set, bag, list, array chỉ đến một tập hợp các đối tượng

- Set: Với T là một kiểu bất kỳ, set(T) được định nghĩa là một kiểu tập hợp gồm

các phần tử phân biệt nhau có kiểu là T Ví dụ {1, 2, 5, 8, 9} là một thể hiện của set(integer)

- Array: Với T là một kiểu bất kỳ và i có kiểu integer, array<T, i> là một dãy

gồm i phần tử có kiểu T Mỗi phần tử được gắn liền với một chỉ số

- Bag: Với T là một kiểu bất kỳ, bag(T) được định nghĩa như một kiểu tập hợp

gồm các phần tử thuộc kiểu T Khác với set, một phần tử trong bag có thể xuất hiện nhiều hơn một lần và không phân biệt thứ tự giữa chúng Ví dụ {1, 2, 2, 5}

là một thể hiện của bag(integer)

Trang 21

- List: Với T là một kiểu bất kỳ, list(T) được định nghĩa như một kiểu danh sách

có 0 hoặc nhiều hơn một phần tử thuộc kiểu T Kiểu string là một kiểu đặc biệt của list (danh sách các ký tự)

Mỗi phần tử trong set được gắn liền với một sự kiện duy nhất, ngược lại trong bag các phần tử có thể lặp Với list giống như bag nhưng các sự kiện phải được sắp xếp đúng thứ tự Chẳng hạn {3, 5, 3} và {5, 3, 3} là khác nhau với list nhưng giống nhau với bag

Trong CSDL hướng đối tượng lớp được xem như một kiểu dữ liệu đã được cài đặt, các thể hiện của nó là các đối tượng cụ thể Chẳng hạn kiểu integer có thể xem như một lớp integer và các thể hiện như 1, 3, 5, …là các thể hiện của lớp integer đó

1.2.4 Hệ thống phân cấp và quan hệ kế thừa

Trong hệ thống CSDL hướng đối tượng, cho phép một lớp được kế thừa các thuộc tính và phương thức từ một lớp cơ sở, tức là những lớp mới có thể mở rộng, kế thừa những lớp khác có sẵn (super-class) Ngoài những thuộc tính, phương thức được kế thừa, ta có thể bổ sung thêm những thuộc tính và phương thức mới để mô tả đúng những lớp các đối tượng của bài toán ứng dụng

Quan hệ kế thừa là quan hệ kiểu “thành viên” (“IS-A”), nghĩa là mội đối tượng

của lớp con cũng là đối tượng của lớp cha và ngược lại đối tượng của lớp cha đại diện cho mội đối tượng của lớp con Các lớp trong mô hình hướng đối tượng có thể được tổ chức theo một cấu trúc phân cấp ISA giữa các lớp đối tượng Cấu trúc phân cấp lớp bao gồm ba thành phần: (1) tập các lớp; (2) các kiểu liên quan đến các lớp; (3) đặc điểm của các quan hệ ISA giữa các lớp [11]

Một cách hình thức, cấu trúc phân cấp lớp ISA là một bộ ba (C,,), trong đó,

C là tập hữu hạn tên các lớp,  là ánh xạ từ C vào Types(C), là một quan hệ thứ tự

bộ phận trên tập các lớp C Thông thường thì quan hệ thứ tự bộ phận có tính phản xạ

Ta nói, lớp C2 là lớp con của lớp C1 hay nói cách khác lớp C2 kế thừa lớp C1 nếu kiểu của lớp C2 là tổng quát hơn kiểu của lớp C1, ký hiệu là C2C1 Chúng ta sử dụng quan hệ kiểu con () để biểu diễn một kiểu là tổng quát hơn kiểu khác [1, 2]

Định nghĩa 1.2 Cho (C, , ) là một cấu trúc phân cấp lớp, quan hệ kiểu con trên

Types(C) là thứ tự bộ phận nhỏ nhất trên Types(C), ký hiệu , thỏa mãn các điều kiện sau:

Trang 22

Với mọi , any (any là lớp gốc của cây phân cấp)

1.2.4.1 Kế thừa đơn

Trong một số hệ thống chỉ cho phép một lớp được kế thừa từ một lớp cơ sở gọi

là kế thừa đơn [11]

Hình 1.3 Kế thừa đơn

1.2.4.2 Kế thừa bội

Có nhiều hệ thống cho phép một lớp có thể có nhiều lớp cơ sở gọi là kế thừa

bội Trong quan hệ kế thừa bội có thể dẫn đến sự pha trộn thông tin từ nhiều nguồn

dữ liệu khác nhau, từ các lớp được kế thừa Kế thừa bội tổ chức các lớp thành đồ thị định hướng phi chu trình, là cơ chế mạnh trong mô hình hệ thống, nhưng đồng thời cũng sẽ tạo ra nhiều sự phức tạp về tính nhập nhằng, không nhất quán dữ liệu

Kế thừa bội từ những lớp phân biệt: Một lớp có thể kế thừa từ nhiều lớp cơ sở khác nhau Ví dụ Lớp Person là cơ sở để tạo ra hai lớp con: Employee (Nhân viên)

và Manager (Nhà quản lý) Trong Công ty lại có những người vừa là nhân viên, vừa

là người phát triển Những người đó chính là các đối tượng của lớp PartTimeWorker

kế thừa từ hai lớp con Employee và Manager như Hình 1.4

Hình 1.4 Kế thừa bội từ hai lớp khác nhau và có lớp cơ sở chung[1]

Person

+salary: int +readInfo()

Trang 23

Kế thừa bội không có lớp cơ sở chung: Kế thừa bội như Hình 1.4 là kế thừa có

lớp cơ sở chung là lớp Person Chúng ta có thể tạo ra lớp kế thừa bội từ nhiều lớp mà

chúng lại không có lớp cơ sở chung Loại kế thừa này thường xuất hiện khi ta muốn

pha trộn một số chức năng của các lớp thư viện khác nhau Ví dụ trong Hình 1.5, mỗi

đối tượng của lớp SearchTree (cây tìm kiếm) có thể là đối tượng của lớp MoveSubtree (cây con các nước đi) hoặc của lớp PossibleMove (lớp các nước có thể chọn) Bản thân lớp

MoveSubtree lại có thể chứa các SearchTree nhỏ hơn Mỗi nước đi của lớp Move lại có thể

là nước đi có thể (PossibleMove) hoặc lớp các nước đi hiện thời (ActualMove) Lớp

PossibleMove kế thừa hành vi chung của lớp Move và lớp SearchTree

Hình 1.5 Kế thừa bội không có lớp cơ sở chung [1]

Mục đích của xử lý truy vấn là tìm một phương án thực thi trong số tất cả các phương án tương đương (cho cùng một kết quả) nhưng giảm thiểu thời gian xử lý, giảm vùng nhớ trung gian, sử dụng ít tài nguyên hay là với chi phí nhỏ nhất Trong

hệ thống CSDL, chi phí của tiến trình xử lý truy vấn được tính với công thức:

Total_cost = IO_cost + CPU_cost

Trong đó, IO_cost là chi phí vào/ra do việc truyền dữ liệu giữa bộ nhớ chính và

bộ nhớ thứ cấp (thường là đĩa từ) và CPU_cost là chi phí tính toán trong tiến trình xử

lý truy vấn Người ta tập trung nghiên cứu trên chi phí IO_cost và bỏ qua chi phí

CPU_cost Điều này sở dĩ như vậy là vì mỗi ứng dụng CSDL lớn với số lượng khổng

lồ các truy xuất dữ liệu thì sự tham gia của chi phí CPU_cost vào tổng chi phí

Total_cost sẽ không có ý nghĩa

Chi phí xử lý truy vấn trên các lớp

Move SearchTree

Trang 24

Việc phân tích tổng chi phí IO_Cost được thực hiện theo ba thành phần là chi phí nạp của lớp sưu tập (IO_Load), chi phí ước lượng tân từ (IO_Eval) và chi phí kết xuất kết quả(IO_Build) được xem xét trong hai trường hợp: giả thiết bộ nhớ xử lý đủ lớn và bộ nhớ nhỏ

Việc phân tích tổng chi phí IO_Cost được thực hiện theo ba thành phần: chi phí

nạp của lớp sưu tập (IO_Load), chi phí ước lượng tân từ (IO_Eval) và chi phí kết xuất kết quả (IO_Build)

Tổng chi phí vào/ra của việc xử lý truy vấn chứa ba thành phần:

Total_IO = IO_Load + IO_Eval + IO_Build

Với IO_Load là số các trang truy xuất để nạp các đối tượng thuộc lớp gốc, là lớp bắt đầu duyệt theo biểu thức đường dẫn, IO_Eval là số trang truy xuất để “đi qua” biểu thức đường dẫn theo phân cấp lớp hợp thành và IO_Build là số trang truy xuất

để tạo ra kết quả Để duyệt lớp bắt đầu theo biểu thức đường dẫn, trước hết người ta

sẽ nạp các đối tượng trong lớp gốc Có hai phương án duyệt các đối tượng: (a) duyệt tuần tự; (b) duyệt theo chỉ mục Hai phương án này có sự khác biệt về công thức chi

phí đối với thành phần IO_Load Nhưng các phương án duyệt để nạp các đối tượng

thuộc lớp gốc không làm ảnh hưởng đến các chi phí duyệt đường dẫn trong các lớp

khác Vì vậy, chi phí IO_Eval và IO_Build cũng không ảnh hưởng gì khi chọn một trong

hai phương án trên

1.4 Chuẩn cơ sở dữ liệu hướng đối tượng

Một trong các yêu cầu quan trọng của các mô hình hay các hệ quản trị CSDL là việc xây dựng một chuẩn chung cho tất cả các hệ thống Như việc thành công của hệ quản trị CSDL quan hệ là đã xây dựng được một chuẩn SQL cho phép quản trị CSDL Bởi vậy, việc xây dựng một chuẩn cho CSDL hướng đối tượng là rất cần thiết, quan trọng và mang lại nhiều lợi ích

Việc xây dựng chuẩn CSDL hướng đối tượng có tác dụng là định ra một cấu trúc chung cho tất cả các hệ thống, do đó người sử dụng sẽ dễ dàng hơn trong việc thao tác hệ thống cũng như bảo trì, chuyển đổi và nâng cấp hệ thống Mặt khác, chuẩn CSDL cho phép sự tương thích giữa nhiều hệ thống khác nhau, tức là các chương trình ứng dụng có thể truy cập được các dữ liệu được lưu trữ trong các hệ thống hay các CSDL trong các hệ thống khác nhau

ODMG (Object Database Management Group) là một trong những chuẩn CSDL hướng đối tượng, đang được phát triển và được ứng dụng trong nhiều hệ thống, hệ quản trị CSDL hướng đối tượng hiện nay ODMG đề xuất một số chuẩn cho mô hình CSDL đối tượng và được chỉnh sửa thành phiên bản 1.1 vào năm 1994, phiên bản 2.0 vào năm 1997, là một mô hình hướng đối tượng dựa trên mô hình đối tượng hạt nhân chuẩn

Trang 25

Chuẩn mới nhất là ODMG 3.0 (1999) định nghĩa một cách linh hoạt các đặc tả cho việc lưu trữ những đối tượng bền vững ODMG 3.0 được thiết kế để các ứng dụng dễ chuyển đổi, cho phép phát triển ứng dụng dựa vào CSDL, đối tượng và chuẩn ngôn ngữ lập trình (OMG, SQL-92, …) hiện thời, đảm bảo việc lưu trữ đối tượng là đơn giản và chương trình dễ chuyển đổi [13]

Ý tưởng cơ sở của việc xây dựng các chuẩn ODMG là khá đơn giản Một mặt, việc thiết kế hệ thống dữ liệu không dựa vào mô hình hiện có như mô hình quan hệ,

mà nó phải được xây dựng theo luận thuyết hướng đối tượng Mặt khác, tự bản thân ngôn ngữ truy vấn không được hỗ trợ và thiết kế hệ thống cũng phụ thuộc nhiều vào ngôn ngữ lập trình như C++, Smalltalk, Java ODMG 3.0 gồm 4 thành phần đặc tả chính đó là [14]

Mô hình đối tượng (Object Model): Mô hình dữ liệu chung được hỗ trợ cho cài

đặt các chuẩn ODMG được xây dựng dựa vào mô hình đối tượng của OMG

Ngôn ngữ định nghĩa đối tượng - ODL (Object Definition Language): Là ngôn

ngữ đặc tả được sử dụng để định nghĩa các kiểu đối tượng phù hợp với mô hình đối tượng của ODMG

Ngôn ngữ truy vấn đối tượng - OQL (Object Query Language) Đây là ngôn ngữ

khai báo phi thủ tục được sử dụng để truy vấn và cập nhật đối tượng SQL-92 được

sử dụng như là cơ sở cho OQL

Ràng buộc ngôn ngữ (Language Binding) như: C++, Smalltalk, Java Những

ngôn ngữ này được gọi là ngôn ngữ thao tác đối tượng OML (Object Manipulation

Language)

1.4.1 Mô hình đối tượng của ODMG

Trong CSDL hướng đối tượng, đối tượng (Object) và hằng ký tự (literal) là các thành phần cơ bản nhất của mô hình đối tượng Trong đó, mỗi đối tượng có định danh nhận biết đối tượng và giá trị, trong khi hằng ký tự chỉ có giá trị mà không có định danh Giá trị của đối tượng có thể có cấu trúc phức tạp và có thể thay đổi Tuy nhiên giá trị của hằng ký tự là cố định và không thay đổi, có thể có kiểu cấu trúc [14] Ví

dụ, lớp NhanVien sẽ tạo ra đối tượng NhanVien có định danh được hệ thống tạo ra,

còn những dữ liệu nguyên thuỷ như giá trị 20 kiểu int (nguyên thuỷ) là literal sẽ

không có định danh

Các đối tượng và các hằng ký tự có thể được phân loại theo các kiểu khác nhau

Nghĩa là mỗi đối tượng hay mỗi hằng ký tự sẽ thuộc về một kiểu Một đối tượng là một thể hiện kiểu của nó, mọi thể hiện (instance) của cùng một kiểu sẽ có cùng tập các thuộc tính và các hành vi (beharvior)

Trạng thái của đối tượng được xác định bởi tập các giá trị đặc tính của nó Các

đặc tính có thể là các thuộc tính hoặc các mỗi quan hệ của bản thân đối tượng với một

Trang 26

hoặc nhiều đối tượng khác Trạng thái của đối tượng có thể thay đổi trong quá trình tồn tại của nó

Hành vi của đối tượng được định nghĩa là các hoạt động, có thể được thực hiện

trên chính đối tượng hoặc bằng cách nhận, gửi thông điệp từ các đối tượng khác Tùy theo trạng thái của mình mà đáp ứng của đối tượng đối với một thông điệp có thể khác nhau ở các thời điểm khác nhau Mỗi phương thức được xác định bằng định danh của nó Mỗi định danh bao gồm danh sách các tham số vào, danh sách tham số

ra và kiểu trả về

Hệ thống quản trị CSDL đối tượng (ODMS) lưu trữ các đối tượng, cho phép chia sẻ cho nhiều người sử dụng và nhiều chương trình ứng dụng ODMS được xây dựng theo lược đồ đối tượng đã được định nghĩa trong ODL và thoả mãn các mối ràng buộc về kiểu của lược đồ

Mô hình đối tượng của ODMG xác định: đối tượng, hằng ký tự, kiểu, thao tác, thuộc tính, quan hệ, … Người phát triển ứng dụng sẽ sử dụng những cấu trúc này trong mô hình đối tượng của ODMG để xây dựng mô hình đối tượng cho hệ thống ứng dụng của mình Mô hình đối tượng của chương trình ứng dụng chính là lược đồ (logic) của hệ quản trị CSDL đối tượng (ODMS) Mô hình đối tượng của ODMG định nghĩa cơ sở các chức năng của ODMS

1.4.2 Ngôn ngữ định nghĩa đối tượng ODL

Ngôn ngữ định nghĩa đối tượng ODL (Object Definition Language) là một ngôn ngữ đặc tả được dùng để định nghĩa các kiểu đối tượng theo ngữ nghĩa của mô hình đối tượng ODMG [13] và độc lập với các ngôn ngữ lập trình Nó được dùng để tạo ra các đặc tả đối tượng, đó là lớp và giao diện Mục đích chính của ODL là:

- Hỗ trợ để thiết lập các cấu trúc ngữ nghĩa của mô hình đối tượng ODMG

- Không phải là một ngôn ngữ lập trình đầy đủ mà là ngôn ngữ định nghĩa đặc tả đối tượng

- Độc lập với các ngôn ngữ lập trình (Language – Independent)

- Tương thích với ngôn ngữ định nghĩa giao diện IDL (Interface Definition Language) của OMG

- Có thể phát triển mở rộng, không chỉ đối với các chức năng trong tương lai mà

Trang 27

1.4.3 Ngôn ngữ truy vấn đối tượng OQL

Trong các hệ thống CSDL hướng đối tượng, các câu truy vấn hướng đối tượng OQL (Object Query Language) được biểu diễn giống như trong SQL [14], [19], [20] OQL là một ngôn ngữ truy vấn CSDL hướng đối tượng được đề xuất trong ODMG-

93 OQL cung cấp một môi trường phong phú để truy vấn CSDL đối tượng một cách hiệu quả, kể cả những cơ sở mức cao đối với các tập đối tượng OQL là ngôn ngữ truy vấn không đưa ra môi trường lập trình đầy đủ cho các tính toán phức tạp Vì vậy,

để tăng khả năng tính toán cho OQL cần phải liên kết với các ngôn ngữ lập trình khác

OQL được dùng để mô tả truy vấn và các thao tác của đối tượng; Ngôn ngữ định nghĩa đối tượng (ODL): sử dụng mã OQL để định nghĩa giao diện với các kiểu đối tượng; Các ngôn ngữ lập trình khác như C++, Smalltalk và Java được dùng để cài đặt các phương thức và các chương trình ứng dụng Đồng thời có thể nhúng các câu lệnh OQL trong các thao tác theo mô hình CSDL hướng đối tượng

OQL được thiết kế theo hướng phát triển kế thừa, đó là thiết kế một ngôn ngữ mới đầy đủ dựa trên SQL - ngôn ngữ chuẩn của CSDL quan hệ Thiết kế của OQL ở dạng hàm, kết quả của truy vấn có kiểu, điều này cho phép kết quả của truy vấn này

là đầu vào của một truy vấn khác, vì vậy các truy vấn phức tạp có thể được xây dựng bằng OQL Bằng cách tích hợp các tính năng của SQL, OQL xây dựng trên nền tảng của CSDL quan hệ Mục đích của mô hình ODMG là duy trì một mức độ tương thích giữa kỹ thuật CSDL hướng đối tượng và kỹ thuật CSDL đối tượng quan hệ bằng cách tích hợp các tính năng của phiên bản tiếp theo SQL trong phiên bản mới của OQL

1.4.3.1 OQL lõi

OQL là ngôn ngữ truy vấn đối tượng được ODMG xây dựng để hỗ trợ mô hình

dữ liệu đối tượng chuẩn [14], [19]

Văn phạm của OQL có các qui tắc dẫn xuất:

Trang 28

[group by (l: q, …, l: q)]

[having q]

[order by (q asc|desc, …, q asc|desc)]

Định nghĩa kiểu: Trong OQL ta có thể đặt tên các định nghĩa theo cú pháp

d ::= define x as q

| define x(x: , …, ) as q

Trong đó b, f, i, c, s là các giá trị boolean, float, int, char và String tương ứng, x

là tập đếm được các định danh, l là tập đếm được các nhãn (set of labels), và C tập

đếm được tên gọi các lớp, unop và binop là tập các phép toán 1-ngôi, 2-ngôi

 Các phép toán một ngôi unop = {first, last, max, min, avg, sum, count, distinct, listtoset, element, flatten, abs, not, -}

 Các phép toán hai ngôi binop = {and, or, intersect, union, except, =, !=, <, >,

<=, >=, + -, *, /, ||, mod}

1.4.3.2 Các kiểu dữ liệu trong OQL

Lược đồ suy dẫn kiểu trong ngôn ngữ truy vấn OQL

Hệ thống các kiểu dữ liệu nguyên thuỷ và các kiểu dữ liệu suy dẫn gắn với phân cấp kiểu được giới thiệu trong hình 1.6 Trên cây phân cấp, chúng ta nhận thấy rằng

các kiểu tổng quát là các nút nằm ở nút nhánh trên cây, các kiểu này sẽ không được

sử dụng trong các lược đồ CSDL (khai báo hình thức) Kiểu được gọi là kiểu đặc

trưng, nếu nó được suy dẫn từ các kiểu hệ thống, tất cả các nút lá trong hình 1.6 là

các kiểu đặc trưng

Hình 1.6 Sự phân cấp các kiểu trong OQL

Siêu kiểu Any

Trang 29

1.4.3.3 Truy vấn Select … From … Where

Cú pháp của khối lệnh trọng tâm Select trong OQL được qui định như sau [19]

Select [distinct] <Danh sách kết quả>

From <Danh sách lớp/sưu tập lớp>

Where <Biểu thức điều kiện>

[Group by <Các thuộc tính phân nhóm>]

[Having <Điều kiện lọc>]

[Order by (<Khoá sắp xếp> asc|desc, …)]

Trong đó, từ khoá distinct nếu sử dụng thì kết quả của truy vấn có kiểu tập đối tượng phân biệt Mệnh đề group by phân nhóm trên lớp sưu tập, các đối tượng được

nhóm theo giá trị của các thuộc tính phân nhóm Mỗi cấu trúc của nhóm chứa một

nhóm các thuộc tính và nhóm các đối tượng có cùng giá trị Mệnh đề order by sắp thứ

tự các đối tượng trong lớp sưu tập kết quả

Để truy nhập các đặc trưng của đối tượng ta sử dụng tên của đối tượng kết hợp với tên các đặc trưng của đối tượng (thuộc tính, mối quan hệ và các phép toán) để truy nhập vào các thành phần của một đối tượng hoặc các đặc tính liên quan đến nó Kiểu miền của một thuộc tính của một lớp có thể là một lớp khác Điều này quy định việc đi từ các đối tượng của một lớp đến các đối tượng của một lớp khác thông qua các liên kết hợp thành

Sử dụng lược đồ CSDL quản lý nhân viên được biểu diễn trong Hình 1.7 minh hoạ cho các ví dụ về các dạng thức biểu diễn của truy vấn OQL

+maso : string +hoten : string +ngaysinh : string +diachi : string +SNCT : int +Luongcoban : double

DuAn

+chucvu : string +luongquanly : double +phong : PhongBan +duan : DuAn

QuanLy

Hình 1.7 Lược đồ CSDL Quản lý Nhân viên

Trang 30

Ví dụ 1.3 Cho biết tên của các nhân viên biên chế thuộc phòng do trưởng phòng

là “Nam” quản lý

Select s.hoten

From NV_BienChe as s

Where s.PhongBan.truongphong.hoten = “Nam”

Cấu trúc như s.PhongBan.truongphong.hoten gọi là biểu thức đường dẫn Vì mỗi đối tượng có một OID, thuộc tính OID do hệ thống xác định đối với mỗi lớp Do

đó một biểu thức đường dẫn có thể xem xét như một ký hiệu viết tắt đối với việc biểu

diễn một dãy các phép nối Chẳng hạn, mệnh đề Where ở ví dụ trên có thể viết tương

(ii) exists – kiểm tra sự tồn tại của một đối tượng trong lớp sưu tập thảo mãn một

điều kiện cho trước

(iii) unique – kiểm tra tính duy nhất của các đối tượng trong lớp sưu tập

(iv) in – kiểm tra một đối tượng có thuộc về một lớp sưu tập hay không

(v) some, any và all – đây là những lượng từ được dùng để so sánh sự ít nhất

(some hay any) hay với mọi (all) cho các đối tượng thuộc (in) trong một lớp sưu tập

(vi) set inclusion – các phép toán so sánh bao hàm {<, <=, >, >=} áp dụng với

Các lớp sưu tập để kiểm tra sự bao hàm của một lớp sưu tập này và lớp kia

Cú pháp của truy vấn có lượng từ forall, exists và in là:

<Truy vấn> ::= forall <Truy vấn> in <Truy vấn> : <Truy vấn>

| exists <Tên> in <Truy vấn> : <Truy vấn>

| exists | unique (<Truy vấn>)

| <Truy vấn> <Phép toán so sánh> [some | any | all] <Truy vấn>

Các vị từ trong truy vấn CSDL hướng đối tượng có thể được thiết lập bằng cách sử

dụng các thuộc tính tập hợp và phép toán thành viên in Một số ví dụ về lượng từ

Trang 31

Truy vấn trên có thể được viết lại bằng cách sử dụng lượng từ EXISTS như sau:

Ví dụ 1.5: Select k.hoten

From NhanVien as e

Where e EXISTS diachi = “Hà Nội”

Lượng từ với mọi forall có thể được áp dụng cho các thuộc tính tập đối với các

dạng vị từ Đường dẫn không chứa thuộc tính tập hợp gọi là đơn trị, ngược lại gọi là giá trị - tập Các vị từ có thể sử dụng trong các biểu thức đường dẫn

Ví dụ 1.6 Biểu thức đường dẫn có thể có nhiều hơn một lượng từ với sự kết hợp giữa

exist và forall

Select e.phongban

From PhongBan as e

Where e EXISTS phongban.forall DU_AN.tenduan = “ Bảo trì”

1.4.3.5 Biến tham chiếu

Biến vùng mô tả cho một biểu thức đường dẫn có thuộc tính cuối cùng là một

thuộc tính phức được gọi là biến tham chiếu Người ta sử dụng các biến vùng biểu

diễn cho các đối tượng của lớp trong một biểu thức đường dẫn

Ví dụ 1.7: Select s.tenphong

From PhongBan as s, s.duan as f

Where s.ngansach < f.chiphi

Trong đó, f là một biết tham chiếu đến các đối tượng thuộc lớp PhongBan

Ví dụ trên có thể được viết tương đương như sau:

Select s.tenphong

From PhongBan as s

Where s.ngansach < s.duan.chiphi

1.4.3.6 Phương thức tham chiếu

Phương thức trong truy vấn OQL được thể hiện qua hai dạng Dạng thứ nhất là

phương thức thuộc tính – suy dẫn, sử dụng để tính giá trị cho mỗi đối tượng trong lớp

mà phương thức tác động Phương thức thuộc tính – suy dẫn có thể được sử dụng

giống như một thuộc tính trong truy vấn Dạng thứ hai là phương thức tân từ, trả về

một giá trị kiểu boolean đối với mỗi đối tượng trong lớp Ví dụ, ta có phương thức

“VienDaiHoc() : Boolean” trên lớp DaiHoc, phương thức này trả về giá trị true nếu Đại học có trên 5 trường thành viên hoặc trên 30.000 sinh viên và false nếu ngược lại

1.4.3.7 Kết xuất một cấu trúc

Mô hình dữ liệu hướng đối tượng cho phép sử dụng các đối tượng có cấu trúc tập, danh sách và bộ để thiết lập các đối tượng phức từ các đối tượng đơn Ngôn ngữ truy vấn OQL cho phép thiết lập các giá trị phức trong kết quả trả về của một truy vấn

Trang 32

bằng việc dùng các phép toán thiết lập kiểu đối tượng phức ở mệnh đề Select với cú pháp:

<Truy vấn>::= struct ([<Định danh>:<Truy vấn> [, <Định danh>:<Truy vấn> ] *] )

|set | bag | list | array ([<Truy vấn> [,<Truy vấn>]*] )

Ví dụ 1.8

Select tuple(maso : s.maso, hoten : s.hoten,

Baotri: select c

from s.DuAn as c where c.tenduan = “Bảo trì”)

người sử dụng định nghĩa thường là kiểu bộ Có ba phép toán đối tượng:

- Chiếu lấy định danh (πO): phép toán πO nhận vào một đối tượng và trả về định danh của đối tượng

- Chiều lấy giá trị (πV): phép toán πV nhận vào một đối tượng và trả về giá trị của đối tượng

- Chiếu lấy đối tượng (πD): phép toán πD nhận vào một định danh đối tượng và

trả về đối tượng có định danh tương ứng

1.5.2 Phép toán bộ

Thiết lập bộ: tuple(a 1 : v 1 , …, a n : v n ) Phép toán tuple nhận một số các thuộc tính và các cặp giá trị (a i : v i ) và trả về một bộ (a 1 , …, a n)

Chiếu bộ π(Attrs) (): phép toán này nhận một bộ và trả về một bộ con với tên các

thuộc tính được mô tả trong tập Attrs

Trích xuất giá trị thuộc tính ðAttrs (): nhận vào một bộ và trả về giá trị của thuộc

Trang 33

- Phép toán hợp: set_union

- Phép toán hiệu: set_diff

- Phép toán chọn trên tập hợp σss.f(): phép toán nhận vào một tập (thường là một tập đối tượng) và trả về một tập (đối tượng) sao cho mỗi phần tử ở tập kết quả

đều thoả mãn điều kiện mô tả trong công thức f

Ví dụ: cho A = {2, 6, 4, 9}, s

s.s > 5 (A) = {6, 9} Ký hiệu “” trong “s” được

dùng như một biến đếm các phần tử trong tập đã cho Với tập đã cho là một lớp, s là

một biến thể hiện lớp

- Phép toán làm phẳng tập set_flat(): phép toán set_flat nhận vào một tập các tập

và trả về một tập chứa phần hợp của các tập lồng nhau Ví dụ, set_flat({1, 2, 3},

{2, 3, 4}, {4, 5}) = {1, 2, 3, 4, 5}

- Phép toán áp dụng hàm trên tập set_applys.e (): phép toán set_applys.e nhận vào một tập và áp dụng biểu thức đại số e cho mỗi phần tử trong tập Ví dụ, cho A =

{{1, 2, 3}, {2, 3, 4}, {4, 5}} là một tập các tập, thì set_applys.A set_diff{3} (A) =

{{1, 2}, {2, 4}, {4, 5}} Phép toán set_apply và chiếu bộ (hoặc trích xuất giá trị

thuộc tính) thường được sử dụng như phép chiếu trên một tập các bộ Ví dụ xét

truy vấn “Cho biết tên và tuổi của các nhân viên”, ta có:

)(

set_apply.(hoten,tuoi)(V(S)) NhanVien

1.5.4 Phép toán bag “túi”

Các phép toán trên kiểu dữ liệu bag gồm có: thiết lập bag, hợp, hiệu, chọn, làm phẳng, áp dụng hàm trên bag: bag(), bag_union(), bag_diff(), b

s.f (), bag_flat(), bag_applys.e () và bagtoset(): chuyển đổi một “túi” (bag) về tập hợp (set) bằng cách

loại bỏ các trùng lặp trong “túi”

1.5.5 Phép toán trên danh sách

Thiết lập danh sách, lấy phần tử đầu tiên, lấy phần tử cuối cùng, ghép danh

sách, chọn, làm phẳng, áp dụng hàm: list(), first(), last(), list_cat(), l

s.f (), list_flat(), list_applys.e ()

1.5.6 Phép toán trên mảng

- Thiết lập mảng, ghép mảng, áp dụng: array(), array_cat(), array_ applys.e()

- Trích xuất phần tử πi() : phép toán này trả về phần tử thứ i trong mảng đã cho

- Chiếu mảng πi,j(), j > i: phép toán trả về một mảng con chứa các phần tử có chỉ

số từ i đến j của mảng đã cho

1.6 Kết luận

UML là ngôn ngữ mô hình hóa, ngôn ngữ đặc tả và ngôn ngữ xây dựng mô hình trong quá trình phát triển phần mềm, đặc biệt là trong phân tích và thiết kế hệ thống hướng đối tượng Chương 1 trình bày các khái niệm cơ bản như đối tượng, định danh

Trang 34

đối tượng, lớp, kiểu và quan trong nhất là quan hệ kế thừa Giới thiệu về ngôn ngữ truy vấn CSDL hướng đối tượng OQL và đại số đối tượng để viết lại các truy vấn đối tượng dưới dạng các biểu thức đại số Ngôn ngữ truy vấn hướng đối tượng OQL cung cấp khá nhiều kiểu dữ liệu thích hợp trong mô hình CSDL hướng đối tượng, đảm bảo cho sự đặc tả các đối tượng phức một cách phong phú và linh hoạt Đó là những kiến thức cần thiết để phục vụ cho các chương sau Ta thấy rằng CSDL hướng đối tượng tập chung xử lý về dữ liệu, nhằm làm cho chương trình trở nên linh hoạt, tin cậy và dễ phát triển Hơn thế tính đột phá của cơ sở dữ liệu hướng đối tượng là chúng cho phép người thiết kế đặc tả cấu trúc của các đối tượng cùng với các phương thức thực hiện trên đối tượng đó

Trang 35

Chương 2 TỐI ƯU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI

TƯỢNG 2.1 Giới thiệu

Khi thực thi một truy vấn, có thể có nhiều phương án mà hệ thống CSDL cho phép xử lý Các phương án đều có kết quả cuối cùng là tương đương về kết quả tính toán nhưng khác nhau về chi phí thực hiện, tức là tổng thời gian cần để thực hiện một truy vấn Lựa chọn phương án nào để có tổng thời gian thực hiện truy vấn là nhỏ nhất Như vậy, vấn đề cần quan tâm là làm sao cực tiểu tần suất sử dụng của CPU, bộ nhớ, chi phí vào/ra và các nguồn tài nguyên về lĩnh vực truyền thông Với kỹ thuật phần cứng hiện nay việc tối ưu thực thi một truy vấn chỉ còn là vấn đề làm cực tiểu thời gian trả lời của truy vấn, trong khi đó các hệ thống lại chịu sự chi phối chính ở thời gian trao đổi vào/ ra Do đó, chúng ta cần lựa chọn phương án nào để có tổng thời gian thực hiện là nhỏ nhất? Để giải quyết vấn đề đó, chúng ta cần dùng các phương pháp để tối ưu hoá truy vấn trong các hệ thống quản trị CSDL

Trong những năm gần đây vấn đề tối ưu hoá truy vấn hướng đối tượng được nhiều nhà nghiên cứu quan tâm, các kỹ thuật tối ưu hoá truy vấn được phát triển có tính kế thừa từ mô hình CSDL quan hệ như dựa vào sự chuyển đổi lược đồ CSDL hướng đối tượng sang lược đồ quan hệ nhúng, thực hiện phương pháp biên dịch truy vấn đối tượng OQL về truy vấn quan hệ SQL Việc sử dụng CSDL quan hệ nhúng làm nền trong lưu trữ vật lý và các thao tác dữ liệu được thực hiện qua giao diện hướng đối tượng là giải pháp ứng dụng phù hợp cho một số hệ thống CSDL đối tượng – quan hệ Bên cạnh đó, để giải quyết cho một lớp các truy vấn đối tượng không lồng, có thể sử dụng phương pháp tối ưu truy vấn dựa trên tập luật biến đổi đại

số đối tượng được áp dụng cho các mô hình dữ liệu hướng đối tượng có hỗ trợ tập luật Phương pháp này xử lý cho lớp các truy vấn trên các kiểu đối tượng phức như kiểu túi, đa tập, danh sách, bộ, …v.v, nhưng khi thực hiện trên các lớp sưu tập, các biểu thức đại số đối tượng lồng thì nó chi phí ước lượng và các phương án thực thi truy vấn chưa hiệu quả Vì vậy, cần phải nghiên cứu các phương pháp, đề xuất các kỹ thuật tối ưu hóa truy vấn phù hợp cho các truy vấn đối tượng lồng

Đối với tối ưu hóa các truy vấn lồng trong CSDL hướng đối tượng đã được Cluet, S [27] đề xuất theo cách tiếp cận hai bước Bước đầu tiên, được gọi là tối ưu hóa trên cơ sở phụ thuộc: biến đổi các truy vấn ở mức ngôn ngữ nhằm thực hiện các biểu thức con chung và các truy vấn con độc lập một cách hiệu quả hơn Các truy vấn

đã biến đổi được biên dịch thành các biểu thức đại số lồng nhau Sự định giá các

Trang 36

vòng lặp lồng nhau có thể không hiệu quả Vì vậy, ở bước hai xử lý cho các truy vấn con lồng trong giai đoạn “làm phẳng” các biểu thức đại số lồng nhau giúp cho phép định giá hiệu quả hơn Trong luận văn, tập chung nghiên cứu cách tiếp cận phương pháp biểu diễn các truy vấn lồng bằng siêu đồ thị kết nối Xuất phát từ ý tưởng biểu diễn và tối ưu hóa các truy vấn bằng siêu đồ thị của J.D Ullman [12] và Han [16] trên ngôn ngữ QUEL/SQL, Chúng tôi nghiên cứu mở rộng thuật toán tối ưu hóa câu truy vấn Wong-Youssefi trong ngôn ngữ truy vấn OQL trên CSDL hướng đối tượng và đưa ra phương pháp ước lượng chi phí phụ thuộc tỷ số giữa số các đối tượng của lớp bắt đầu trong biểu thức đường dẫn và tổng số các đối tượng của lớp, dựa trên mối quan hệ nhiều - nhiều giữa các lớp Tỷ số này là một trong những tham số lựa chọn trong quá trình thiết kế CSDL

2.1.1 Siêu đồ thị kết nối

Siêu đồ thị là sự tổng quát hóa của một đồ thị, trong đó một cạnh có thể nối với

bất kỳ đỉnh nào Về mặt hình thức, một siêu đồ thị H là một cặp H = (V, E) chứa một

tập các đỉnh V và tập các siêu cạnh E Trong đó, tập đỉnh V tương ứng với tập các mục dữ liệu (hay gọi là thuộc tính), và mỗi siêu cạnh e  E tương ứng với một tập các mục dữ liệu có liên quan với nhau (lớp, điều kiện) Khái niệm siêu đồ thị là sự

mở rộng của một đồ thị mà mỗi siêu cạnh của nó được kết nối từ tập các đỉnh Ta có siêu đồ thị được thể hiện như trong hình 2.1 sau [9]:

Hình 2.1 Siêu đồ thị H

Siêu đồ thị H gồm

V = {v1, v2, v3, v4, v5, v6, v7}

E = {e1, e2, e3, e4} = {{v1, v2, v3},{v2, v3}, {v3, v5, v6},{v4}}

Trên cơ sở đó, tôi khảo cứu thêm khái niệm siêu đồ thị kết nối đối tượng để mở

rộng phương pháp biểu diễn này trong ngôn ngữ truy vấn đối tượng trong OQL Từ

đó, khảo cứu các thuật toán ước lượng các siêu cạnh và thuật toán rút gọn siêu đồ thị kết nối đối tượng

2.1.2 Siêu đồ thị kết nối đối tượng

Trước hết, một cách hình thức ta xét định nghĩa của khái niệm siêu đồ thị kết nối đối tượng như sau [6, 12, 16]

Trang 37

Định nghĩa 2.1: Siêu đồ thị kết nối đối tượng là một bộ sáu:

(v) S H : V H E H là ánh xạ khởi tạo các siêu cạnh từ tập các nút

(vi) lb H : E HL H là hàm gán nhãn cho siêu cạnh, sao cho

e E H thì lb H (e) L H

Các truy vấn được viết bằng ngôn ngữ truy vấn OQL rất phong phú và đa dạng, chúng ta giới thiệu một tập con của các truy vấn viết bằng ngôn ngữ OQL là các truy vấn lồng

Từ định nghĩa 2.1 (trong các phần sau, siêu đồ thị kết nối đối tượng được gọi tắt

là siêu đồ thị), truy vấn OQL được biểu diễn bằng ký pháp siêu đồ thị như sau:

- C i là tập hữu hạn các lớp đối tượng trong CSDL Tập các nút của siêu đồ thị là

tập các thuộc tính thuộc các lớp tham gia truy vấn Mỗi thuộc tính của lớp C i

được biểu thị bằng một nút Nếu hai lớp C i và C j đều có cùng một số các thuộc

tính kế thừa từ một siêu lớp nào đó, hoặc chúng cùng kế thừa tất cả các thuộc tính từ một siêu lớp, ta tạo riêng cho các thuộc tính này các nút khác nhau

- Các siêu cạnh của siêu đồ thị được tạo thành từ các biểu thức điều kiện và các

lớp C i Xét biểu thức điều kiện trong mệnh đề Where, các biểu thức điều kiện

 A  B,  {is, in, union, diff, forall, exists,…} (2.5)

Trong đó, A, B là thuộc tính của các lớp và a là hằng

+ Đối với mỗi lớp C i, có một siêu cạnh chứa tất cả các nút là các thuộc tính của

C i , ta gọi là siêu cạnh đối tượng và được vẽ bằng một đường liền nét khép kín bao

quanh tất cả các nút của siêu cạnh Gán nhãn là tên của lớp

+ Điều kiện có dạng (2.1) trong siêu đồ thị, được gán nhãn nút là “A = a”

+ Biểu thức điều kiện có dạng “A = B” (dạng 2.2), với A, B là các thuộc tính trong hai lớp (có thể cùng là những thuộc tính được kế thừa từ một siêu lớp nào đó), thì chúng ta “trộn” các nút A và B lại với nhau đặt nhãn chung là tên của một trong

Trang 38

hai thuộc tính

+ Với biểu thức điều kiện dạng (2.3) hay (2.4), chúng ta sẽ tạo ra một siêu cạnh

chứa các thuộc tính có mặt trong biểu thức Những siêu cạnh này được gọi là siêu

cạnh điều kiện và chúng được biểu thị bằng đường nét chấm khép kín

- Nếu có hai điều kiện trên cùng một tập thuộc tính, ta phải đặt nhãn riêng cho mỗi siêu cạnh để có thể phân biệt được chúng

- Các thuộc tính trong mệnh đề Select được bao trong một đường liền nét khép

kín và gán nhãn là “head ”, gọi là siêu cạnh đỉnh Siêu cạnh đỉnh tương ứng với

một lớp kết quả của truy vấn

- Siêu cạnh kết nhập chứa các thuộc tính tham gia trong các biểu thức chứa các phép toán { IS, IN, UNION, FORALL, EXIST, ….} của các truy vấn con lồng

nhau, được vẽ bằng đường nét rời khép kín bao quanh các thuộc tính có liên quan Các siêu cạnh kết nhập được gán nhãn tương ứng với tên các phép toán

Truy vấn đơn trong OQL chỉ có một khối Select … From … Where (SFW);

nhưng truy vấn lồng có nhiều hơn một khối SFW Truy vấn lồng biểu diễn bằng một siêu đồ thị được xây dựng từ các siêu đồ thị của các khối SFW đơn và liên kết với nhau qua các siêu cạnh kết nhập

Ví dụ 2.1: Xét siêu đồ thị kết nối đối tượng biểu diễn truy vấn sau

Define c 2 as d

Select A

From c 1 , c 2 , c 3

Where c 1 A = c 3 .F and (c 1 A + c 1 B > c 3 .D) and (c 3 .E IN (d)) and (c 1 C = „c‟)

Hình 2.2 Siêu đồ thị kết nối đối tượng của ví dụ 2.1

Trong đó ta có:

Đối với điều kiện “c1.A = c3.F” thực hiện “trộn” hai nút đặt nhãn chung là “A”

C H = {c1, c2, c3} trong đó: c1 = (A, B, C), c2 = (G, H) và c3 = (D, E, F) là các lớp đối tượng trong siêu đồ thị H

Trang 39

L H = {c1, c2, c3, f1, f2,”head”} là các nhãn

E H = E C E Q , với E C gồm tập các siêu cạnh được gán nhãn {c1,c2,c3} biểu diễn các lớp c1, c2 và c3 Và E Q có các siêu cạnh biểu diễn lần lượt là các kết quả của truy vấn, biểu thức điều kiện truy vấn tương ứng có nhãn là {f1, f2, “head”}

2.2 Tối ưu hoá truy vấn CSDL hướng đối tượng bằng siêu đồ thị

2.2.1 Thuật toán khởi tạo siêu đồ thị

Lược đồ đối tượng S được biểu diễn hình thức là: S = (s 1 , …, s n ), s i là các lớp

trong S và truy vấn đối tượng QE = (s 1 , …, s m , R, p 1 , …, p k ), trong đó s i (i = 1,…, m) là các lớp tham gia truy vấn (lấy ở mệnh đề From), R là điều kiện của truy vấn (lấy ở mệnh

đề Select) và p j (j = 1, …, k) là các biểu thức điều kiện ở mệnh đề Where

Thuật toán 2.1: Khởi tạo siêu đồ thị của truy vấn đối tượng (không chứa truy vấn lồng)

Đầu vào: Lược đồ đối tượng S = (s 1 , …, s n),

// không kế thừa từ các siêu lớp khác

(5) Khởi tạo siêu cạnh đối tượng e := sH({s i}) và gán nhãn lbH(e)

(6) else if (s i là lớp kế thừa đơn hoặc kế thừa bội) then

(7) Xử lý trường hợp xung đột về tên với các thuộc tính kế thừa (8) Khởi tạo lớp s i ‟ chứa các thuộc tính của lớp và thuộc tính kế thừa

(9) Khởi tạo siêu cạnh đối tượng e := sH({s i ‟}) và gán nhãn lbH(e)

Trang 40

Từ thuật toán khởi tạo siêu đồ thị của truy vấn đối tƣợng (không chứa các truy vấn lồng) đƣợc xây dựng ở trên, ta tiến hành xây dựng thuật toán khởi tạo siêu đồ thị của truy vấn đối tƣợng có chứa các truy vấn lồng Siêu đồ thị của truy vấn đối tƣợng có chứa truy vấn lồng đƣợc tạo ra từ các liên kết của các siêu đồ thị đơn với các siêu cạnh kết nhập

Thuật toán 2.2: Khởi tạo siêu đồ thị của truy vấn đối tƣợng lồng

Đầu vào: Lƣợc đồ đối tƣợng S = (s 1 , ,s m ),

Truy vấn đối tƣợng QE = (s 1 , , s r , R, p 1 , ,p k),

Tập T  {is, in, union, diff, forall, exists, }

Đầu ra: Siêu đồ thị H

Phương pháp:

(1) H := 

(2) QE := (s1, …, sr, R, p1, …, pk)

(3) While (QE i QE)

(4) Khởi tạo siêu đồ thị H i với mỗi QE i (thuật toán 2.1)

(5) H := H  Hi

(6) T := {is, in, union, diff, forall, exists, }

(7) While (t i  T)

(8) Khởi tạo siêu cạnh kết nhập g có nhãn là t i , có vế trái là thuộc tính tham

chiếu và vế phải là một truy vấn hay một vùng dữ liệu thuộc lớp

(9) H := H  g

Truy vấn lồng OQL đƣợc kết nối từ các siêu đồ thị của các khối Select …From

…Where… bởi các siêu cạnh kết nhấp

2.2.2 Ví dụ minh họa

Để thống nhất trong trình bày các ví dụ của luận văn, tôi sử dụng CSDL quản lý

nhân viên đƣợc minh họa nhƣ sau:

heso: float;

Ngày đăng: 23/09/2020, 22:54

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

TÀI LIỆU LIÊN QUAN

w