Tải bản đầy đủ (.pdf) (97 trang)

Nghiên cứu và phát triển các ứng dụng với cơ sở dữ liệu hướng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.97 MB, 97 trang )




ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





LÝ ANH TUẤN




Nghiên cứu và phát triển các ứng dụng
với cơ sở dữ liệu hướng đối tượng



luËn v¨n th¹c sÜ CÔNG NGHỆ THÔNG TIN











Hµ néi - 2006





ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




LÝ ANH TUẤN




Nghiên cứu và phát triển các ứng dụng
với cơ sở dữ liệu hướng đối tượng


Mã số : 1.01.10


luËn v¨n th¹c sÜ CÔNG NGHỆ THÔNG TIN




Người hướng dẫn khoa học: TS. Nguyễn Tuệ





Hµ néi - 2006




1
Mục lục
Lời cám ơn 3
Bảng ký hiệu các chữ viết tắt 4
Danh mục các hình vẽ 5
Danh mục các bảng 6
Mở đầu 7
Chương 1. Tổng quan về cơ sở dữ liệu hướng đối tượng 9
1.1. Sự phát triển của công nghệ cơ sở dữ liệu 9
1.2. Cơ sở dữ liệu hướng đối tượng 14
1.2.1. Mô hình cơ sở dữ liệu hướng đối tượng 15
1.2.2. Định nghĩa dữ liệu, Điều hướng và Thao tác dữ liệu 17
1.2.3. Các vấn đề thi hành 20
1.3. Hệ quản trị cơ sở dữ liệu đối tượng 21
1.3.1. Những đặc trưng chính của một cơ sở dữ liệu đối tượng 21
1.3.2. Cơ chế hoạt động của một cơ sở dữ liệu đối tượng 23
1.4. Những ưu điểm và nhược điểm của cơ sở dữ liệu hướng đối tượng 27
1.4.1. Những ưu điểm của cơ sở dữ liệu hướng đối tượng 27
1.4.2. Những nhược điểm của cơ sở dữ liệu hướng đối tượng 29
Chương 2. Các hệ quản trị cơ sở dữ liệu hướng đối tượng 33
2.1. Hệ thống ObjectStore 34

2.1.1. Tổng quan 34
2.1.2. Kiến trúc ObjectStore 35
2.1.3. Chức năng 37
2.1.4. Mô hình dữ liệu 39
2.2. PSE Pro 40
2.2.1. Kiến trúc PSE Pro 41
2.2.2. Giao diện trình ứng dụng 44


2
2.3. Cơ sở dữ liệu FastObjects t7 48
2.3.1. Tổng quan 48
2.3.2. Kiến trúc 48
2.3.3. Các đặc trưng 50
Chương 3. Phân tích thiết kế hướng đối tượng 57
3.1. Phát triển phần mềm hướng đối tượng với UML 57
3.1.1. Đặc tả yêu cầu 57
3.1.2. Tạo mô hình Use Case 58
3.1.3. Tạo mô hình khái niệm 58
3.1.4. Tạo biểu đồ tương tác giữa các đối tượng 60
3.1.5. Ánh xạ biểu đồ lớp thiết kế với mã nguồn 61
3.2. Một số công cụ phân tích thiết kế hướng đối tượng 61
3.2.1. Rational Rose 61
3.2.2. Database Designer 62
Chương 4. Phát triển ứng dụng với cơ sở dữ liệu hướng đối tượng 64
4.1. Ứng dụng ODMG C++ 64
4.2. Từng bước phát triển một ứng dụng Java sử dụng OODB 70
4.2.1. Những việc trước nhất 70
4.2.2. Xây dựng ứng dụng 73
4.3. Ứng dụng cửa hàng trực tuyến Webshop 79

4.3.1. Yêu cầu của ứng dụng 79
4.3.2. Tổng quan hệ thống 81
4.3.3. Phân tích thiết kế 83
4.3.4. Cài đặt ứng dụng 87
Kết luận 91
Các kết quả đạt được trong luận văn 91
Hướng nghiên cứu tiếp theo 93
Tài liệu tham khảo 94


3
Lời cám ơn
Đầu tiên, tôi xin gửi lời cám ơn sâu sắc tới cán bộ hướng dẫn khoa học, thầy
giáo, T.S Nguyễn Tuệ, người đã chỉ bảo tận tình, truyền thụ cho tôi nguồn cảm
hứng nghiên cứu và đưa tôi vào lĩnh vực khoa học này.
Tôi xin bày tỏ lời cám ơn tới các thầy cô giáo đã giảng dạy tôi trong suốt hai
năm học qua như PGS.TSKH Phạm Trần Nhu, PGS.TS Đoàn Văn Ban, TS. Hà
Quang Thụy, TS. Nguyễn Kim Anh, PGS.TS Đặng Văn Đức, PGS.TS Ngô Quốc
Tạo, TS. Nguyễn Việt Hà, v v.
Tôi xin gửi lời cám ơn sâu sắc tới GS.VS Nguyễn Văn Hiệu người đã giúp đỡ,
động viên và truyền thụ cho tôi tâm huyết nghiên cứu khoa học. Tôi cũng xin ghi
nhận những tình cảm, sự giúp đỡ về chuyên môn cũng như trong cuộc sống của các
thầy giáo, các bạn đồng nghiệp trong Khoa Công nghệ thông tin, Trường ĐH Công
nghệ, ĐHQG Hà Nội.
Cuối cùng tôi xin gửi lời cám ơn sâu sắc tới tất cả những người thân trong gia
đình và bạn bè tôi. Họ thực sự là nguồn động viên vô tận đối với tôi trong công việc
cũng như trong cuộc sống.
Học viên thực hiện luận văn



Lý Anh Tuấn


4
Bảng ký hiệu các chữ viết tắt
Từ hoặc cụm từ
Từ viết tắt
Từ tiếng Anh
Cơ sở dữ liệu
DB, CSDL
DataBase
Hướng đối tượng
OO
Object Oriented
Cơ sở dữ liệu hướng đối tượng
OODB
Object Oriented DataBase
Cơ sở dữ liệu quan hệ
RDB
Relational DataBase
Hệ quản trị cơ sở dữ liệu hướng
đối tượng
OODBMS
Object Oriented DataBase
Management System
Ngôn ngữ lập trình hướng đối
tượng
OOPL
Object Oriented Programming
Language

Ngôn ngữ truy vấn đối tượng
OQL
Object Query Language
Ngôn ngữ định nghĩa đối tượng
ODL
Object Definition Language
Nhóm quản lý dữ liệu đối tượng
ODMG
Object Data Management Group
Ngôn ngữ định nghĩa dữ liệu
DDL
Data Definition Language
Ngôn ngữ điều khiển dữ liệu
DCL
Data Control Language
Ngôn ngữ thao tác dữ liệu
DML
Data Manipulation Language



5
Danh mục các hình vẽ
Hình 1. Sự phát triển của công nghệ cơ sở dữ liệu 12
Hình 2. CSDL hướng đối tượng là sự hoà hợp của lập trình hướng đối tượng và
công nghệ CSDL 15
Hình 3. Ví dụ về sự chuyên môn hoá của các đối tượng và sự phân cấp lớp 17
Hình 4. Tạo một lớp đối tượng trong một ngôn ngữ lập trình hướng đối tượng 18
Hình 5. Tạo một lớp đối tượng bao chứa một con trỏ tới lớp Course trong Hình 4 18
Hình 6. Điều hướng các đối tượng bằng việc đi theo các con trỏ 19

Hình 7. Các câu lệnh OQL để lấy về các thông tin được yêu cầu trong Hình 6 20
Hình 8. Kiến trúc client-server của một ODBMS 22
Hình 9. Định danh đối tượng 23
Hình 10. Kiến trúc client-side của một cơ sở dữ liệu đối tượng 24
Hình 11. Các kiến trúc cơ sở dữ liệu khác nhau 25
Hình 12. Việc xử lý truy vấn 26
Hình 13. Mô hình kiến trúc của ObjectStore: (a) Một server, một client. (b) Nhiều
server, nhiều client. 36
Hình 14. Đối tượng được lưu trữ dưới khuôn dạng tự nhiên của nó 39
Hình 15. PSE Pro dành sẵn một miền trong bộ nhớ ảo cho các trang CSDL 42
Hình 16. Ánh xạ các trang cơ sở dữ liệu vào các trang nhớ ảo 43
Hình 17. Các trạng thái khác nhau của một trang cơ sở dữ liệu 44
Hình 18. Bộ tăng cường FastObjects JDO byte-code và sự phát sinh lược đồ 49
Hình 19. Bộ tăng cường FastObjects t7 JDO byte-code và việc phát sinh lược đồ . 51
Hình 20. Bộ tiền xử lý FastObjects t7 C++ và việc phát sinh lược đồ 52
Hình 21. Cửa sổ ứng dụng của Rational Rose 62


6
Hình 22. Công cụ Database Designer của ObjectStore 63
Hình 23. Ví dụ UML 65
Hình 24. Lớp Employee 65
Hình 25. Lớp Department 66
Hình 26. Tạo một đối tượng 67
Hình 27. Một ứng dụng đơn giản 68
Hình 28. Thi hành một truy vấn 69
Hình 29. Thiết kế PhoneApp trước khi dùng một OODB 72
Hình 30. Tổng quan hệ thống 82
Hình 31. Các use case khách hàng mua hàng và người quản lý cập nhật hàng 85
Hình 32. Các use case khách hàng xem hiện trạng giao hàng và người quản lý

quyết định giao hàng 85
Hình 33. Các mô hình lớp trong Rational Rose 87
Hình 34. Giao diện trang chủ của ứng dụng 88
Hình 35. Trang tìm kiếm sản phẩm 88
Hình 36. Trang thông tin về sản phẩm 89
Hình 37. Trang giỏ hàng của khách hàng 89
Hình 38. Trang cập nhật sản phẩm 90
Hình 39. Trang quản lý các đơn hàng 90
Danh mục các bảng
Bảng 1. Các công cụ cần có của ứng dụng 71
Bảng 2. Các use case 84
Bảng 3. Mô hình nghiệp vụ 86



7
Mở đầu
Kể từ khi ra đời, lý thuyết về cơ sở dữ liệu đã trải qua nhiều bước phát triển và
đã đạt được nhiều kết quả quan trọng đáp ứng được nhu cầu thực tế trong việc lưu
trữ và quản lý dữ liệu. Nhiều mô hình dữ liệu đã xuất hiện, phong phú về khả năng
và phạm vi ứng dụng như mô hình phân cấp, mô hình mạng, mô hình quan hệ, trong
đó mô hình quan hệ với một cơ sở lý thuyết vững chắc thực sự là một bước phát
triển đột phá.
Mô hình dữ liệu quan hệ và cơ sở dữ liệu quan hệ tuy được sử dụng rộng rãi
nhất, nhưng nó cũng bộc lộ những hạn chế nhất định (những hạn chế này sẽ được
nêu rõ trong Chương 1). Điều này dẫn đến sự xuất hiện mô hình dữ liệu hướng đối
tượng và cơ sở dữ liệu hướng đối tượng.
Khi mới được đề xuất cơ sở dữ liệu hướng đối tượng hứa hẹn tạo ra bước đột
phá trong lĩnh vực lưu trữ và quản lý dữ liệu. Tuy nhiên những dự đoán về việc
OODB sẽ nhanh chóng thay thế RDB đã không xảy ra. Thay vào đó, bây giờ người

phát triển ứng dụng phải lựa chọn một giải pháp quản trị dữ liệu phù hợp cho ứng
dụng của mình. Với những ứng dụng nghiệp vụ thông thường, RDB vẫn là một sự
lựa chọn thích hợp và điều này đã được minh chứng qua quá trình tồn tại, phát triển
lâu dài của nó. Còn đối với những kiểu ứng dụng mới đòi hỏi những mô hình thiết
kế phức tạp, có nhiều giao dịch, hoặc đòi hỏi hỗ trợ những kiểu mới thì OODB là sự
lựa chọn tối ưu.
Luận văn này nghiên cứu, tìm hiểu về cơ sở dữ liệu hướng đối tượng và một số
hệ quản trị cơ sở dữ liệu cơ sở dữ liệu hướng đối tượng tiêu biểu và từ đó trình bày
các quy trình phát triển ứng dụng với cơ sở dữ liệu hướng đối tượng sử dụng
phương pháp phân tích thiết kế hướng đối tượng.
Luận văn được tổ chức thành bốn chương như sau:
Chương 1 trình bày tổng quan về cơ sở dữ liệu hướng đối tượng, bao gồm mô
hình cơ sở dữ liệu hướng đối tượng, các khái niệm về định nghĩa dữ liệu, thao tác


8
dữ liệu và vấn đề thi hành của cơ sở dữ liệu hướng đối tượng. Tiếp đó các vấn đề về
kiến trúc và cách làm việc của cơ sở dữ liệu hướng đối tượng cũng được giới thiệu
một cách sơ lược. Phần cuối của chương trình bày những ưu điểm và nhược điểm
của cơ sở dữ liệu hướng đối tượng.
Chương 2 giới thiệu một số hệ quản trị cơ sở dữ liệu hướng đối tượng phổ biến
hiện nay, bao gồm: ObjectStore, PSE Pro và FastObject t7. Chương này đi sâu vào
tìm hiểu các khía cạnh về kiến trúc, chức năng và các đặc trưng của các hệ quản trị
cơ sở dữ liệu hướng đối tượng này.
Chương 3 trình bày sơ lược về phương pháp phân tích thiết kế hướng đối tượng
bằng UML. Phần đầu của chương trình bày các khái niệm trong UML như đặc tả
yêu cầu, mô hình use case, mô hình khái niệm, biểu đồ tương tác, và việc ánh xạ
biểu đồ lớp vào mã nguồn. Phần cuối của chương giới thiệu hai công cụ phân tích
thiết kế hướng đối tượng là Rational Rose và PSE Designer.
Chương 4 tập trung vào vấn đề phát triển ứng dụng với cơ sở dữ liệu hướng đối

tượng. Ba ứng dụng được nêu ra để minh hoạ. Trong ứng dụng đầu tiên (ODMG
C++), luận văn trình bày cách phát triển một ứng dụng đơn giản với kết gán ngôn
ngữ C++ tuân theo chuẩn ODMG. Trong ứng dụng thứ hai, luận văn trình bày từng
bước để phát triển một ứng dụng Java sử dụng OODB, ban đầu ứng dụng này chỉ
được viết bằng ngôn ngữ Java, sau đó được kết hợp với ObjectStore để được hỗ trợ
lưu trữ bền vững. Trong ứng dụng thứ ba, luận văn trình bày một ứng dụng có ý
nghĩa thiết thực, đó là ứng dụng Web Shop. Ứng dụng được phát triển qua các
bước: tìm hiểu yêu cầu, phân tích thiết kế, lập trình. Các ứng dụng này đều đã được
triển khai trên môi trường thực tế.


9
Chương 1. Tổng quan về cơ sở dữ liệu hướng đối tượng
1.1. Sự phát triển của công nghệ cơ sở dữ liệu
Trong suốt ba thập kỷ gần đây, công nghệ cơ sở dữ liệu cho các hệ thống thông
tin đã phát triển trải qua bốn thế hệ, và công nghệ cơ sở dữ liệu thế hệ thứ năm hiện
nay đang được phát triển. Bước chuyển tiếp từ một thế hệ tới một thế hệ tiếp theo
luôn luôn là cần thiết bởi sự gia tăng liên tục về độ phức tạp của các ứng dụng cơ sở
dữ liệu và về chi phí thi hành, bảo trì, và mở rộng những ứng dụng này. Thế hệ thứ
nhất là hệ thống file, chẳng hạn như ISAM và VSAM. Thế hệ thứ hai là các hệ cơ
sở dữ liệu phân cấp, chẳng hạn như IMS và System 2000. Thế hệ thứ ba là các hệ
cơ sở dữ liệu CODASYL, chẳng hạn như IDS, TOTAL, ADABAS, IDMS, v v.
Các hệ thống thế hệ thứ hai và thứ ba đã thực hiện việc chia sẻ một cơ sở dữ liệu
tích hợp giữa nhiều người trong một môi trường ứng dụng. Sự thiếu tính độc lập dữ
liệu và việc truy cập điều hướng khó khăn tới cơ sở dữ liệu dẫn đến công nghệ cơ sở
dữ liệu thế hệ thứ tư, gọi là công nghệ cơ sở dữ liệu quan hệ. Công nghệ cơ sở dữ
liệu quan hệ được đặc trưng bởi truy vấn khai báo. Công nghệ cơ sở dữ liệu thế hệ
thứ năm sẽ được đặc trưng bởi một mô hình dữ liệu phong phú hơn và một tập các
tiện ích cơ sở dữ liệu phong phú hơn cần thiết để đáp ứng những đòi hỏi của các
ứng dụng ngoài các ứng dụng xử lý dữ liệu nghiệp vụ mà do nó 4 thế hệ công nghệ

cơ sở dữ liệu trước đó đã được phát triển.
Sự chuyển tiếp từ một thế hệ tới một thế hệ tiếp theo của công nghệ cơ sở dữ
liệu đã được đánh dấu bằng việc trút bớt một số thủ tục kế toán chán ngắt và lặp lại
từ các ứng dụng vào trong hệ cơ sở dữ liệu. Điều này tạo ra sự thuận tiện cho các
lập trình viên ứng dụng lập trình ứng dụng cơ sở dữ liệu; tuy nhiên, nó gây ra một
vấn đề lớn cho sự thi hành của các hệ thống cơ sở dữ liệu và đòi hỏi những nghiên
cứu và phát triển đáng kể để gia tăng sự thi hành của các hệ cơ sở dữ liệu thế hệ
mới tới một mức có thể chấp nhận được. Điều này đặc biệt đúng với việc chuyển
tiếp vào trong lĩnh vực các cơ sở dữ liệu quan hệ. Việc giới thiệu các truy vấn khai
báo trong các cơ sở dữ liệu quan hệ làm nhẹ bớt cho những người lập trình ứng


10
dụng khỏi những công việc nhỏ nhặt buồn tẻ của việc lập trình điều hướng khôi
phục các bản ghi từ cơ sở dữ liệu. Tuy nhiên, một thành phần mới chính, tên là bộ
tối ưu hoá truy vấn, đã được thêm vào hệ cơ sở dữ liệu để tự động đi đến một kế
hoạch tối ưu cho việc xử lý bất kỳ truy vấn nào được đưa ra, chẳng hạn như kế
hoạch sẽ tạo ra việc sử dụng các phương pháp truy cập phù hợp được cung cấp
trong hệ thống.
Trong suốt những thập niên 70 các hoạt động nghiên cứu và triển khai về cơ sở
dữ liệu đã tập trung vào việc mô tả công nghệ cơ sở dữ liệu quan hệ. Đỉnh điểm của
những nỗ lực này là việc giới thiệu các hệ thống cung cấp thương mại cuối những
năm 70 và đầu những năm 80, chẳng hạn như Oracle, SQL/DB và DB2 và
INGRES. Tuy nhiên, công nghệ cơ sở dữ liệu quan hệ, cũng như mỗi công nghệ cơ
sở dữ liệu thế hệ trước, đã được phát triển cho các ứng dụng xử lý dữ liệu nghiệp
vụ, chẳng hạn như kiểm tra hàng tồn, bảng lương, sổ sách kế toán, v v. Những nỗ
lực để tạo ra việc sử dụng công nghệ cơ sở dữ liệu quan hệ trong một miền rộng các
kiểu khác nhau của ứng dụng đã nhanh chóng phơi bày một số thiếu sót nghiêm
trọng của công nghệ cơ sở dữ liệu quan hệ và thế hệ trước đây. Các ứng dụng này
bao gồm các hệ thống thiết kế, kỹ nghệ, công nghệ phần mềm và việc chế tạo được

máy tính trợ giúp (CAD, CAE, CASE và CAM) và ứng dụng chạy trên chúng; các
hệ thống dựa trên tri thức (các hệ chuyên gia và các shell hệ chuyên gia); Các hệ
thống đa phương tiện đi kèm với các hình ảnh, âm thanh và các tài liệu nguyên bản
và các hệ ngôn ngữ lập trình. Các hệ cơ sở dữ liệu quan hệ và thế hệ trước đây từ
đây trở đi sẽ được gọi là các hệ cơ sở dữ liệu truyền thống.
Chúng ta hãy xem qua một số thiếu sót đáng chú ý của công nghệ cơ sở dữ liệu
truyền thống [6, 7]:
 Một mô hình cơ sở dữ liệu truyền thống, nhất là mô hình quan hệ, quá đơn
giản để mô hình hoá các thực thể xếp lồng vào nhau phức tạp, chẳng hạn như
các đối tượng thiết kế và công trình, và các tài liệu phức tạp


11
 Các hệ cơ sở dữ liệu truyền thống chỉ hỗ trợ một tập hạn chế các kiểu dữ liệu
nguyên tử, chẳng hạn như integer, string, v v; chúng không hỗ trợ các kiểu
dữ liệu tổng quát được tìm thấy trong các ngôn ngữ lập trình.
 Sự thi hành của các hệ cơ sở dữ liệu truyền thống, đặc biệt là các hệ cơ sở dữ
liệu quan hệ là không thể chấp nhận được cho các kiểu khác nhau của các
ứng dụng cần nhiều tính toán, chẳng hạn như các chương trình mô phỏng
trong các môi trường thiết kế được máy tính trợ giúp và các môi trường ngôn
ngữ lập trình.
 Các chương trình ứng dụng được thi hành trong một số ngôn ngữ lập trình
thuật toán (chẳng hạn như COBOL, FORTRAN, C) và một số ngôn ngữ cơ
sở dữ liệu được nhúng vào trong nó. Các ngôn ngữ cơ sở dữ liệu là rất khác
so với các ngôn ngữ lập trình, trong cả mô hình dữ liệu và cấu trúc dữ liệu.
Vấn đề trở ngại ghép không khớp này đã thúc đẩy việc phát triển các ngôn
ngữ thế hệ thứ tư (4GL).
 Mô hình các giao tác được hỗ trợ trong các hệ cơ sở dữ liệu truyền thống
không thích hợp cho các giao tác trong khoảng thời gian dài cần thiết trong
các môi trường thiết kế có tính cộng tác ảnh hưởng lẫn nhau. Các hệ cơ sở

dữ liệu truyền thống không hỗ trợ các tiện ích để biểu diễn và quản lý chiều
thời gian trong các cơ sở dữ liệu, bao gồm khái niệm thời gian và các phiên
bản của các đối tượng và lược đồ, và các thông báo thay đổi.
Việc khám phá ra những thiếu sót của công nghệ cơ sở dữ liệu truyền thống đã
cung cấp động lực cho các chuyên gia cơ sở dữ liệu trong phần lớn những năm
1980 để mở đường cho thế hệ thứ năm của công nghệ cơ sở dữ liệu. Công nghệ cơ
sở dữ liệu thế hệ tiếp theo cần phải được xây dựng trên công nghệ cơ sở dữ liệu
truyền thống và sát nhập các giải pháp cho nhiều vấn đề được phác hoạ ở trên để
đáp ứng các đòi hỏi của các ứng dụng cơ sở dữ liệu hiện nay và mới nổi lên. Hiện
nay có ít nhất hai cách tiếp cận được đề xuất cho việc chuyển tiếp từ công nghệ cơ
sở dữ liệu thế hệ thứ tư sang công nghệ thế hệ thứ năm: công nghệ cơ sở dữ liệu


12
quan h m rng v cụng ngh c s d liu hng i tng. Cỏc khỏc bit c bn
gia chỳng l mụ hỡnh d liu c s v ngụn ng c s d liu. Tip cn c s d
liu quan h m rng bt u vi mụ hỡnh d liu quan h v mt ngụn ng truy
vn quan h, v m rng chỳng theo cỏc cỏch khỏc nhau cho phộp vic mụ hỡnh
hoỏ v thao tỏc i vi cỏc mi quan h ng ngha v cỏc tin ớch c s d liu cng
thờm. POSTGRES l h c s d liu th h tip theo ni ting nht da trờn tip
cn quan h m rng. Tip cn hng i tng, c chp nhn trong h thng
ORION ca MCC v mt s cỏc h thng khỏc (chng hn nh Ontos, GemStone,
IRIS, O2 ) bt u vi mt mụ hỡnh d liu hng i tng v mt ngụn ng c
s d liu nm bt nú, v m rng chỳng theo cỏc cỏch khỏc nhau cho phộp cng
thờm cỏc kh nng.


















Thế hệ thứ nhất
Hệ thống tệp

CSDL mạng và
phân cấp

Cơ sở dữ liệu
CODASYL

Cơ sở dữ liệu
quan hệ

CSDL h-ớng
đối t-ợng

Thế hệ thứ hai
Thế hệ thứ ba
Thế hệ thứ t-

Thế hệ thứ năm

Hỡnh 1. S phỏt trin ca cụng ngh c s d liu
Mt im quan trng chỳng ta phi nhỡn nhn ú l mt mụ hỡnh c s d liu
hng i tng l mt nn tng t nhiờn hn mt mụ hỡnh quan h m rng cho


13
việc khắc phục một số thiếu hụt của công nghệ cơ sở dữ liệu truyền thống được kể
ra trước đây; ví dụ, hỗ trợ các kiểu dữ liệu tổng quát, các đối tượng xếp lồng nhau,
và hỗ trợ các ứng dụng có nhiều tính toán.
Có những khác biệt quan trọng giữa một mô hình cơ sở dữ liệu hướng đối tượng
và mô hình cơ sở dữ liệu quan hệ. Một mô hình cơ sở dữ liệu hướng đối tượng bao
gồm các khái niệm hướng đối tượng như bao gói, kế thừa và đa hình thái; những
khái niệm này không phải là thành phần của các mô hình dữ liệu truyền thống.
Khác biệt giữa một hệ cơ sở dữ liệu hướng đối tượng và một hệ cơ sở dữ liệu không
hướng đối tượng đó là một hệ cơ sở dữ liệu hướng đối tượng có thể trực tiếp hỗ trợ
những nhu cầu của các ứng dụng, như là tạo và quản lý các đối tượng mang ngữ
nghĩa hướng đối tượng, đó là các ngôn ngữ lập trình hướng đối tượng hoặc các ứng
dụng được thiết kế trong một kiểu mẫu hướng đối tượng.
Hơn nữa, một ngôn ngữ lập trình hướng đối tượng có thể được mở rộng thành
một ngôn ngữ lập trình và cơ sở dữ liệu thống nhất. Ngôn ngữ kết quả tuỳ thuộc vào
vấn đề trở ngại ghép đôi không khớp nằm trong phạm vi không vượt xa so với tiếp
cận của việc nhúng một ngôn ngữ cơ sở dữ liệu thế hệ hiện tại vào trong một ngôn
ngữ lập trình truyền thống. Lý do là vì một ngôn ngữ lập trình hướng đối tượng
được xây dựng trên các khái niệm hướng đối tượng, và các khái niệm hướng đối
tượng bao gồm một số khái niệm mô hình hoá dữ liệu, chẳng hạn như sự kết tập, sự
tổng quát hoá, và các mối quan hệ thành viên. Một hệ cơ sở dữ liệu hướng đối
tượng hỗ trợ một sự hợp nhất giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ
cơ sở dữ liệu sẽ là nền tốt cho việc phát triển các ứng dụng cơ sở dữ liệu hơn là một

hệ thống cơ sở dữ liệu quan hệ mở rộng cái hỗ trợ một ngôn ngữ cơ sở dữ liệu quan
hệ mở rộng.
Chúng ta có thể khẳng định rằng cả hai tiếp cận quan hệ mở rộng và hướng đối
tượng đều có thể đứng vững, và nhiều khả năng sẽ cùng tồn tại các hệ thống tuân
theo một trong hai tiếp cận này.


14
1.2. Cơ sở dữ liệu hướng đối tượng
Các khái niệm hướng đối tượng ra đời vào những năm 1980 và nhanh chóng trở
thành một giải pháp hiệu quả cho việc phát triển phần mềm. Một số ngôn ngữ lập
trình hướng đối tượng như Java, C++ được sử dụng để xây dựng các ứng dụng đã
cho thấy tính khả thi của chúng cao hơn so với các ngôn ngữ lập trình không hướng
đối tượng.
Trong thời gian này người ta cũng bắt đầu nhận ra những khiếm khuyết khi thi
hành của các cơ sở dữ liệu quan hệ. Việc xuất hiện của các môi trường thương mại
đa phương tiện, thông qua sự bùng nổ của thương mại điện tử và viễn thông, đòi hỏi
cơ sở dữ liệu phải có khả năng hỗ trợ các kiểu mới. Điều này không thể có được
trong các cơ sở dữ liệu quan hệ hiện có do vậy nảy sinh nhu cầu cần phải có những
giải pháp mới.
Trên cơ sở đó khái niệm cơ sở dữ liệu hướng đối tượng ra đời như là một giải
pháp cho phép vận hành đối tượng bền vững, nó là sự hoà hợp của các khái niệm
hướng đối tượng và năng lực của hệ quản trị cơ sở dữ liệu [7, 8, 9]. Martin (1993)
mô tả các OODB dựa trên đối tượng và cũng sử dụng các mô hình quan niệm như
Phân tích hướng đối tượng, Thiết kế hướng đối tượng và Lập trình hướng đối
tượng.


15




Hình 2. CSDL hướng đối tượng là sự hoà hợp của lập trình hướng đối tượng và
công nghệ CSDL
1.2.1. Mô hình cơ sở dữ liệu hướng đối tượng
Biểu diễn thế giới thực của OODB là một chuỗi các đối tượng. Một đối tượng có
thể biểu diễn bất kỳ phần tử thế giới thực nào trong phạm vi từ một số nguyên đơn
đến một cái bánh ô tô. Tất cả các đối tượng đều sở hữu các đặc tính chung:
 Bền vững: Trạng thái của đối tượng được giữ lại sau khi chương trình đã kết
thúc
 Định danh duy nhất: Khi đối tượng được tạo một định danh duy nhất được
sinh ra và được liên kết với đối tượng trong suốt vòng đời của đối tượng. Định
danh tách rời với trạng thái của các đối tượng do vậy nó phân biệt hai đối tượng
có cùng trạng thái.
 Các tính chất dữ liệu: Tập các tính chất dữ liệu ghi nhận trạng thái hiện thời
của đối tượng. Các kiểu dữ liệu được hỗ trợ bao gồm các kiểu gốc (số nguyên,
ký tự, …). Các kiểu dữ liệu mới, bao gồm các kiểu dữ liệu phức tạp (ví dụ như
hình ảnh), có thể được định nghĩa bằng việc sử dụng kỹ thuật Kiểu dữ liệu trừu


16
tượng. Ngoài ra, chúng ta cũng có thể tạo ra một kiểu dữ liệu mới bằng việc sử
dụng thêm các kiến tạo kiểu được hỗ trợ trong các cơ sở dữ liệu đối tượng cụ
thể.
 Các thao tác: Một tập các hàm vận hành trạng thái của đối tượng.
 Bao gói: Chính sách bảo quản dữ liệu và các thao tác bên trong đối tượng. Các
thao tác lập ra một giao diện thông qua nó việc gọi các hàm có thể vận hành đối
tượng. Kết quả là đối tượng được xem như một hộp đen.
 Các mối quan hệ
Giống với bất kỳ mô hình dữ liệu nào, một tính chất quan trọng là làm thế

nào để biểu diễn các mối quan hệ giữa các thành phần khác nhau của dữ liệu.
OODB có hai kiểu: giữa các lớp (thông qua việc sử dụng các con trỏ - xem
Định nghĩa dữ liệu) hoặc hệ thống phân cấp lớp [Manion 01].
 Lớp và hệ thống phân cấp lớp
Các đối tượng có các tính chất và thao tác giống nhau được phân lớp để tạo
ra các lớp đối tượng riêng biệt. Do vậy tất cả các đối tượng là một cá thể của
một lớp đối tượng. Mỗi cá thể của một lớp đối tượng mang một định danh duy
nhất và một tập các tính chất dữ liệu và các thao tác giống nhau.
Trong khi xây dựng một OODB các lớp nhiều đối tượng sẽ được tạo và các
hệ thống phân cấp và chuyên môn hoá lớp có thể được áp dụng để làm việc
quản lý chúng được dễ dàng.
Việc sử dụng sự chuyên môn hoá định ra các tính chất và các thao tác chung
cho các đối tượng. Các tính chất và các thao tác này bị loại bỏ và được đặt vào
trong một đối tượng siêu lớp. Các đối tượng sau đó được tổ chức lại một cách
phân cấp, với đối tượng siêu lớp ở đỉnh và các đối tượng chuyên biệt là các
phân lớp của đối tượng chung.
Thông qua sự kế thừa, các lớp chuyên biệt có thể trình ra các tính chất và các
thao tác của chúng cộng với các tính chất và các thao tác của siêu lớp (Hình 3).
Việc này giảm bớt sự lặp lại của mã trình và cải thiện việc bảo trì.


17

* c¸c tÝnh chÊt vµ thao t¸c ®-îc kÕ thõa

Hình 3. Ví dụ về sự chuyên môn hoá của các đối tượng và sự phân cấp lớp
Một lớp đối tượng có một siêu lớp như vậy được biết như một đơn kế thừa.
Sự chuyên môn hoá có thể được áp dụng khắp các mức của một hệ thống phân
cấp và các lớp đối tượng có thể có nhiều hơn một siêu lớp đó, điều này được
xem là việc đa kế thừa.

1.2.2. Định nghĩa dữ liệu, Điều hướng và Thao tác dữ liệu
1.2.2.1. Định nghĩa dữ liệu
Không chấp nhận sự tồn tại ngôn ngữ định nghĩa dữ liệu chuẩn cho các OODB
thay vào đó những lập trình viên tạo ra các lớp đối tượng trong ngôn ngữ thi hành
O-O, chẳng hạn như C++ hoặc Java, (Hình 4).


18
class Course : public Entity {
char* courseId;
char* courseName;

public:
virtual int CourseId(){ return courseId;}
virtual void CourseId(char* newCourseId);

virtual int CourseName(){ return courseName;}
virtual void CourseName(char* newCourseName);
};

Hình 4. Tạo một lớp đối tượng trong một ngôn ngữ lập trình hướng đối tượng
Các mối quan hệ có thể được đưa ra trong lược đồ bằng việc bao gồm một thuộc
tính dữ liệu, được biết như một con trỏ, trong một đối tượng, nó trỏ đến đối tượng
liên kết (Hình 5).
class Student : public Entity {
char* studentId;
char* studentName;
Tref* aCourse;



};

Hình 5. Tạo một lớp đối tượng bao chứa một con trỏ tới lớp Course trong Hình 4
Việc thay đổi lược đồ sẽ đòi hỏi việc sửa đổi và dịch lại định nghĩa lớp.
1.2.2.2. Điều hướng
Một OODB có thể bao gồm một lượng từ nhỏ đến lớn các đối tượng. Việc tìm
kiếm một đối tượng đặc thù, bởi con trỏ, được mang lại bằng việc điều hướng từ đối
tượng tới đối tượng (Hình 6).


19


Khoá học nào Sinh viên 2 đã đăng ký tham gia?
duyệt chỉ mục Student để tìm Sinh viên 2
đi theo con trỏ Course tới SCISM5 và trả về khoá học (computing)
Tên tất cả các sinh viên tham gia khoá học điện toán
tìm kiếm chỉ mục Course và tìm Course# (tức là SCISM5)
đi theo các con trỏ Student, tìm kiếm mỗi Student#

Hỡnh 6. iu hng cỏc i tng bng vic i theo cỏc con tr
Tip cn ny c xem xột l t nhiờn vi vic tỡm kim i tng hn l
phng phỏp i s hc c s dng trong cỏc c s d liu quan h.
1.2.2.3. Thao tỏc d liu
Ngụn ng truy vn d liu chun cho cỏc OODB l Ngụn ng truy vn i
tng (OQL). OQL chim ly nhng c trng chc chn t SQL (tc l cõu lnh
SQL y ) v thờm vo cỏc m rng hng i tng. c thit k lm vic
vi cỏc i tng, nú thiu ht cỏc c trng ch rừ UPDATE thay vo ú phi gi
cỏc thao tỏc i tng sa i trng thỏi ca i tng. Cú th sa i cỏc i
tng v to cỏc i tng bn vng mi thụng qua cỏc cõu lnh OQL [Riccardi

01]. Hỡnh 7 hin th cỏc cõu lnh OQL cho nhng tin trỡnh c mụ t trong Hỡnh
6.


20

Khoá học nào Sinh viên 2 đã đăng ký tham gia?
Tên tất cả các sinh viên tham gia khoá học điện toán

Hỡnh 7. Cỏc cõu lnh OQL ly v cỏc thụng tin c yờu cu trong Hỡnh 6
1.2.3. Cỏc vn thi hnh
Tng tranh cỏc OODB h tr tng tranh, tuy nhiờn iu ny ny sinh
kh nng xung t cho phộp nhiu ngi dựng n lc sa i cựng mt i
tng mt thi im. Hai tip cn ph bin nht c s dng ngn chn
iu ny xy ra:
Locking: í tng l to mt i tng khụng cho phộp nhiu hn mt
ngi dựng cú kh nng truy cp mt thi im. Do vy, khi mt ngi
dựng yờu cu mt i tng nú c ỏnh du l b khoỏ. Bt k ngi
dựng no khỏc c gng yờu cu i tng phi i cho n khi ngi gi
khoỏ t b i tng.
Check In Check Out: S bn vng ca cỏc i tng trong cỏc OODB
c thc hin da vo vic phiờn bn vic to ra mt phiờn bn mi ca
mt i tng khi cú mt yờu cu c thc hin thay i nú.
Mt phiờn bn mi ca mt i tng l check-out khi ngi dựng yờu
cu sa i nú. Phiờn bn c gi ti vựng lm vic cc b ca nhng
ngi dựng mt cỏch hiu qu bng vic thit lp mt khoỏ ghi i vi nú.
Vỡ th, nhiu ngi dựng cú th truy cp ng thi nhiu phiờn bn ca
cựng mt i tng. Khi ngi dựng ó kt thỳc i tng l checked-in
to ra mt phiờn bn i tng mi [Brown 91].



21
Check in-check out là tiếp cận được sử dụng phổ biến nhất trong các
OODB ở mức độ lớn bởi vì nó cải thiện rất nhiều khả năng tương tranh của
hệ thống.
 Phân trang – OODB giảm đáng kể sự cần thiết phân trang bằng việc chỉ tải
những đối tượng được đòi hỏi vào trong bộ nhớ. Điều này hoàn toàn tương
phản với các cơ sở dữ liệu quan hệ, chúng tải các bảng chứa dữ liệu được yêu
cầu và dữ liệu không cần thiết vào bộ nhớ.
 Phát triển ứng dụng – OODB được tích hợp tốt với các ngôn ngữ lập trình
hướng đối tượng, cả hai sử dụng cùng một mô hình đối tượng như nhau. Do
vậy việc xây dựng một hệ thống OODB với một ngôn ngữ lập trình O-O loại
bỏ sự cần thiết của việc ánh xạ giữa cơ sở dữ liệu và ngôn ngữ ứng dụng như
với các cơ sở dữ liệu quan hệ. Điều này làm sự phức tạp của chương trình và
số lượng dòng mã lệnh cần được viết giảm đi rất nhiều. Việc sử dụng các kỹ
thuật Object-Oriented Analysis và Object-Oriented Modelling trong giai đoạn
khảo sát và thiết kế của vòng đời phát triển hệ thống có thể cải thiện đáng kể
sự hiểu nhau giữa người phân tích, người thiết kế và người lập trình. Điều này
có thể làm giảm đáng kể số lượng các lỗi kỹ thuật và các lỗi thi hành gặp phải
trong hệ thống cuối cùng.
1.3. Hệ quản trị cơ sở dữ liệu đối tượng
1.3.1. Những đặc trưng chính của một cơ sở dữ liệu đối tượng
Các cơ sở dữ liệu đối tượng xuất hiện trong tầm nhận thức trong khoảng giữa
những năm 1980. Mục tiêu sau đó là cung cấp một dòng cơ sở dữ liệu mới, được
thiết kế và được tối ưu hoá để lưu trữ và thao tác các đối tượng. Mục tiêu này được
khích lệ bởi sự chấp nhận rộng rãi của các kỹ thuật và các ngôn ngữ mô hình hoá
hướng đối tượng. Các quyết định thiết kế được thực hiện ở thời điểm này phân biệt
các cơ sở dữ liệu đối tượng với các cơ sở dữ liệu quan hệ sẵn có. Đầu tiên, thay vì
tập trung vào một mô hình dữ liệu (dựa vào một tập cố định các kiểu) được chỉ dưới



22
một số khuôn dạng chuẩn hoá, trừu tượng, cơ sở dữ liệu đối tượng tập trung vào mô
hình đối tượng như được định nghĩa trong ngôn ngữ O-O.
Sức mạnh chính của một cơ sở dữ liệu đối tượng là khả năng dựng sẵn của nó để
quản lý các mô hình phức tạp tuỳ ý (dưới dạng các kiểu) với các mối quan hệ phức
tạp tuỳ ý. Việc quản lý các đối tượng chủ yếu bao gồm các thuộc tính có giá trị đơn
giản (các số nguyên, các xâu), các thuộc tính đa trị (các mảng giá trị động) và các
cấu trúc phức tạp, nhưng năng lực của nó để vận hành các mối quan hệ mới là điều
cốt yếu – không chỉ là một-một, một-nhiều, mà các mối quan hệ bao gồm các ngữ
nghĩa: chẳng hạn như các tập (không duy nhất), các danh sách (có thứ tự), các bản
đồ (tìm kiếm liên kết). Các mối quan hệ này tự bản thân chúng có thể là các đối
tượng phức tạp, có thể bao chứa các giá trị được băm để việc tìm kiếm và khôi phục
hiệu quả.
Trong thế giới đối tượng các giao tác bao gồm việc điều hướng các mối quan hệ
và thực hiện các thao tác phức tạp trên đó. Các cơ sở dữ liệu đối tượng được tối ưu
hoá cho việc truy cập điều hướng này và cho việc đưa dẫn các đối tượng giữa server
cơ sở dữ liệu và client. Hình 8 thể hiện một kiến trúc ODBMS tiêu biểu [24].

Hình 8. Kiến trúc client-server của một ODBMS
Tiến trình server cung cấp việc điều khiển tương tranh và giao tác, đảm bảo khả
năng phục hồi (như với bất kỳ cơ sở dữ liệu nào). Cache phía client quản lý các đối
tượng đã được truyền tới từ server, đem lại sự truy cập trong suốt thông qua ngôn
ngữ lập trình. Khi các mối quan hệ được duyệt, các đối tượng được yêu cầu từ
server và được tải lập tức vào trong cache một cách tự động. Một khi ở trong cache


23
chúng được duy trì ở đó cho đến khi giao tác kết thúc. Khi client cam kết một giao
dịch, bất kỳ đối tượng nào đã được sửa đổi được truyền trở lại server và giao tác kết

thúc.
1.3.2. Cơ chế hoạt động của một cơ sở dữ liệu đối tượng
1.3.2.1. Các khái niệm cơ bản
Trước hết, một khái niệm quan trọng cần nắm bắt đó là định danh đối tượng.
Trong thế giới đối tượng tất cả các đối tượng có thể được xem là có một định danh,
định danh này là trạng thái của nó trực giao (các giá trị của các thuộc tính của nó).
Định danh đối tượng là vấn đề nền tảng vì đây là phương tiện mà thông qua nó các
đối tượng được thao tác; định danh đối tượng được sử dụng để xây dựng các mối
quan hệ giữa các đối tượng, và bằng việc điều hướng để quyết định đối tượng nào
được truy cập tiếp theo.
Trong khi định danh đối tượng là nền tảng trong thế giới đối tượng, nó không
tồn tại trong thế giới quan hệ, ở đây dữ liệu được truy cập dựa trên giá trị của chúng
(bằng việc sử dụng các khoá). Xét một đối tượng Vòng tròn, nếu màu của nó thay
đối từ Vàng sang Đỏ, định danh của nó vẫn giữ nguyên. Trong thế giới quan hệ, nếu
thuộc tính màu sắc là khoá của quan hệ biểu diễn đối tượng Vòng tròn thì chúng ta
sẽ không thể tìm thấy hàng trước kia đã chứa giá trị Vàng nữa. Trong thiết kế cơ sở
dữ liệu quan hệ điều này có thể và nên được giải quyết bằng việc sử dụng các khoá
duy nhất không được lấy ra từ bất kỳ các thuộc tính ứng dụng nào, nhưng trong một
cơ sở dữ liệu quan hệ những giá trị này vẫn tiềm tàng khả năng có thể bị thay đổi
bởi ứng dụng.

Hình 9. Định danh đối tượng

×