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
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2ĐẠ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
Trang 3Mụ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
Trang 42.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
Trang 5Lờ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
Trang 6Bả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 hướng đối tượng OODB Object Oriented 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
Trang 7Danh 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
Trang 8Hì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
Trang 9Mở đầ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
Trang 10dữ 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ế
Trang 11Chươ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
Trang 12dụ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
Trang 13 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
Trang 14quan hệ mở rộng và công nghệ cơ sở dữ liệu hướng đối tượng Các khác biệt cơ bản giữa chúng là mô hình dữ liệu cơ sở và ngôn ngữ cơ sở dữ liệu Tiếp cận cơ sở dữ liệu quan hệ mở rộng bắt đầu với mô hình dữ liệu quan hệ và một ngôn ngữ truy vấn quan hệ, và mở rộng chúng theo các cách khác nhau để cho phép việc mô hình hoá và thao tác đối với các mối quan hệ ngữ nghĩa và các tiện ích cơ sở dữ liệu cộng thêm POSTGRES là hệ cơ sở dữ liệu thế hệ tiếp theo nổi tiếng nhất dựa trên tiếp cận quan hệ mở rộng Tiếp cận hướng đối tượng, được chấp nhận trong hệ thống ORION của MCC và một số các hệ thống khác (chẳng hạn như Ontos, GemStone, IRIS, O2 ) bắt đầu với một mô hình dữ liệu hướng đối tượng và một ngôn ngữ cơ
sở dữ liệu nắm bắt nó, và mở rộng chúng theo các cách khác nhau cho phép cộng thêm các khả năng
CSDL m¹ng vµ ph©n cÊp
C¬ së d÷ liÖu CODASYL
C¬ së d÷ liÖu quan hÖ
Hình 1 Sự phát triển của công nghệ cơ sở dữ liệu
Một điểm quan trọng chúng ta phải nhìn nhận đó là một mô hình cơ sở dữ liệu hướng đối tượng là một nền tảng tự nhiên hơn một mô hình quan hệ mở rộng cho
Trang 15việ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
Trang 161.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
Trang 17Hì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
Trang 18tượ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ì
Trang 19* 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)
Trang 20class 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 {
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)
Trang 21“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 Điều hướng cỏc đối tượng bằng việc đi theo cỏc con trỏ
Tiếp cận này được xem xột là tự nhiờn với việc tỡm kiếm đối tượng hơn là phương phỏp đại số học được sử dụng trong cỏc cơ sở dữ liệu quan hệ
1.2.2.3 Thao tỏc dữ liệu
Ngụn ngữ truy vấn dữ liệu chuẩn cho cỏc OODB là Ngụn ngữ truy vấn đối tượng (OQL) OQL chiếm lấy những đặc trưng chắc chắn từ SQL (tức là cõu lệnh SQL đầy đủ) và thờm vào cỏc mở rộng hướng đối tượng Được thiết kế để làm việc với cỏc đối tượng, nú thiếu hụt cỏc đặc trưng chỉ rừ UPDATE thay vào đú phải gọi cỏc thao tỏc đối tượng để sửa đổi trạng thỏi của đối tượng Cú thể sửa đổi cỏc đối tượng và tạo cỏc đối tượng bền vững mới thụng qua cỏc cõu lệnh OQL [Riccardi 01] Hỡnh 7 hiển thị cỏc cõu lệnh OQL cho những tiến trỡnh được mụ tả trong Hỡnh
6
Trang 22“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 lệnh OQL để lấy về cỏc thụng tin được yờu cầu trong Hỡnh 6
1.2.3 Cỏc vấn đề thi hành
Tương tranh – cỏc OODB hỗ trợ tương tranh, tuy nhiờn điều này nảy sinh khả năng xung đột cho phộp nhiều người dựng nỗ lực sửa đổi cựng một đối tượng ở một thời điểm Hai tiếp cận phổ biến nhất được sử dụng để ngăn chặn điều này xảy ra:
Locking: í tưởng là tạo một đối tượng khụng cho phộp nhiều hơn một người dựng cú khả năng truy cập ở một thời điểm Do vậy, khi một người dựng yờu cầu một đối tượng nú được đỏnh dấu là “bị khoỏ” Bất kỳ người dựng nào khỏc cố gắng yờu cầu đối tượng phải đợi cho đến khi người giữ khoỏ từ bỏ đối tượng
Check In – Check Out: Sự bền vững của cỏc đối tượng trong cỏc OODB được thực hiện dựa vào việc phiờn bản – việc tạo ra một phiờn bản mới của một đối tượng khi cú một yờu cầu được thực hiện để thay đổi nú
Một phiờn bản mới của một đối tượng là „check-out‟ khi người dựng yờu cầu sửa đổi nú Phiờn bản được gửi tới vựng làm việc cục bộ của những người dựng một cỏch hiệu quả bằng việc thiết lập một khoỏ ghi đối với nú
Vỡ thế, nhiều người dựng cú thể truy cập đồng thời nhiều phiờn bản của cựng một đối tượng Khi người dựng đó kết thỳc đối tượng là „checked-in‟
để tạo ra một phiờn bản đối tượng mới [Brown 91]
Trang 23Check 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
Trang 24mộ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
Trang 25chú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
Trang 261.3.2.2 Kiến trúc cơ sở dữ liệu hướng đối tượng
Cũng như vậy định danh đối tượng là nền tảng của một cơ sở dữ liệu đối tượng Hình 10 thể hiện chi tiết hơn kiến trúc client-side của một cơ sở dữ liệu đối tượng [24]
Hình 10 Kiến trúc client-side của một cơ sở dữ liệu đối tượng
Ứng dụng được liên kết với Object Manager (OM) được cung cấp bởi nhà sản xuất cơ sở dữ liệu, nó cung cấp sự điều hướng trong suốt (dựa trên định danh đối tượng) và quản lý các đối tượng bền vững, lấy chúng về theo yêu cầu từ server và đặt vào trong không gian đối tượng của client Ứng dụng gọi các OM API để quản
lý các ranh giới giao tác; trên việc gọi cam kết (hoặc rollback loại bỏ các thay đổi)
OM gửi các đối tượng được thay đổi trở lại server và kết thúc giao tác Server cơ sở
dữ liệu ép buộc toàn vẹn giao tác và cách ly giữa nhiều client, bằng cách sử dụng việc khoá để đảm bảo sự gắn kết cache giữa các đối tượng được giữ trong client-cache và giữa các đối tượng trong server Như mong đợi ở bất kỳ cơ sở dữ liệu nào, server cung cấp việc phục hồi giao tác trên sự hỏng hóc và đảm bảo các đối tượng được giữ trong cơ sở dữ liệu là nhất quán trong giao tác
Trong lúc tất cả các cơ sở dữ liệu đối tượng khác nhau sẵn có trên thị trường ngày nay cung cấp cùng một khả năng cơ sở, chúng có khuynh hướng tiếp cận vấn
đề từ các phối cảnh khác nhau Hầu hết tập trung vào việc cung cấp các mở rộng bền vững cho các ngôn ngữ, C++ hoặc Smalltalk, và thường phân loại theo các động cơ lưu trữ bền vững Một số khác tập trung vào việc cung cấp một cơ sở dữ
Trang 27liệu của các đối tượng Sự khác biệt có thể được minh hoạ bằng việc xem xét xem các truy vấn được xử lý như thế nào
Hình 11 Các kiến trúc cơ sở dữ liệu khác nhau
Các động cơ lưu trữ bền vững đảo ngược tiếp cận server-centric của cơ sở dữ liệu quan hệ, thay vào đó chấp nhận một tiếp cận client-centric Thay vì trút bỏ gánh nặng xử lý dữ liệu cho server cơ sở dữ liệu (như khi sử dụng SQL), tiếp cận này lựa chọn đơn giản hoá server cơ sở dữ liệu để cho nó chỉ chịu trách nhiệm quản lý các trang (như trong các trang của bộ nhớ) Server cơ sở dữ liệu gửi các trang này tới các client khi có yêu cầu (kiểu server cơ sở dữ liệu này thường được nhắc đến như
là một server trang) Sau đó client thực hiện việc xử lý được yêu cầu Để thực hiện
một truy vấn tất cả các đối tượng được đòi hỏi phải được truyền từ server cơ sở dữ liệu tới client, client sau đó quyết định các đối tượng nào thoả mãn tiêu chí được đưa ra
Tiếp cận thứ hai là để thiết kế một cơ sở dữ liệu của các đối tượng thay vì cho các khối dữ liệu vô định hình Kiến trúc này cho phép ba tiện lợi chính: Việc xử lý nhận biết đối tượng có thể xảy ra ở cả client và server; các đối tượng có thể được
Trang 28vận chuyển như là các đối tượng thay vì như là các khối dữ liệu; và các đối tượng
có thể được vận chuyển giữa các nền khác nhau dễ dàng hơn
Lợi ích đầu tiên có nghĩa là vì cơ sở dữ liệu là nhận biết đối tượng, server có thể thực hiện việc xử lý trên các đối tượng đó Nó có thể thực hiện việc điều hướng, truy vấn, duy trì các mối quan hệ giữa các đối tượng, và các chức năng phức tạp khác Ví dụ để thực hiện một truy vấn, client đơn giản là chỉ
ra tiêu chí bằng việc sử dụng một cú pháp giống SQL và truyền nó tới server Server tối ưu hoá và thực thi truy vấn, sử dụng các chỉ mục đa người dùng nếu được cung cấp, trả lại chỉ những đối tượng tổng hợp cho client
Hình 12 Việc xử lý truy vấn
Lợi ích thứ hai của một cơ sở dữ liệu của các đối tượng đó là server và client
có thể trao đổi và trữ các đối tượng như là các đối tượng Điều này giảm tổng phí trong cả việc vận tải và việc trữ, và cho phép thực thi nhanh hơn nhiều
Lợi ích chính thứ ba của server nhận biết đối tượng là khả năng dễ dàng chia
sẻ các đối tượng giữa các nền, các bộ biên dịch và các ngôn ngữ khác nhau Bởi vì các cơ sở dữ liệu hiểu và lưu các đối tượng, không phải các trang của
bộ nhớ, các lient NT có thể giao tiếp với server Solaris, các ứng dụng Java có thể thao tác các đối tượng được tạo bởi các ứng dụng C++ và ngược lại Tất
cả các vấn đề về tính không đồng nhất được quan tâm bởi cơ sở dữ liệu, một khái niệm quan trọng để giúp đỡ các ứng dụng ngày nay và mai sau
Trang 29Người muốn khám phá không thể truy nhập các đối tượng của họ từ một máy/bộ biên dịch/ngôn ngữ mới bởi vì bài trí bộ nhớ của nó không tương thích với những gì được lưu trữ trong cơ sở dữ liệu, (ví dụ, 32 bit địa chỉ so với 64 bít địa chỉ?) Hoặc tăng phí tổn của sự phát triển thông qua nền?
1.4 Những ưu điểm và nhược điểm của cơ sở dữ liệu hướng đối tượng
Mặc dù các cơ sở dữ liệu hướng đối tượng có thể mang lại nhiều lợi thế hơn so với các cơ sở dữ liệu quan hệ (RDB), các OODB không thể làm suy chuyển thành trì RDB trong các hệ thống điều khiển dữ liệu Chúng là một công nghệ mới hơn đã được sự thừa nhận rộng rãi của nhiều kiến trúc sư DB, tuy nhiên những người phát triển ứng dụng thường chọn RDB
Đừng lãng quên OODB khi xem xét các dự án cơ sở dữ liệu Để chọn một giải pháp đúng đắn, cần ước lượng khả năng chịu đựng rủi ro, những yêu cầu kỹ thuật, những đòi hỏi khi thi hành, và giải pháp kỹ thuật tổng thể được đề xuất Trong trường hợp lựa chọn đúng, một OODB có thể là một công cụ tuyệt vời Trong trường hợp lựa chọn sai, chúng ta có thể phải làm lại việc thiết kế gần như hoàn toàn - nếu không làm lại kiến trúc Hãy tìm hiểu những ưu điểm và nhược điểm khi lựa chọn OODB [8, 9, 10]
1.4.1 Những ưu điểm của cơ sở dữ liệu hướng đối tượng
Trong một dự án hướng đối tượng, sự tích hợp giữa lô gích ứng dụng và dữ liệu được lưu trữ có thể là trong suốt hoàn toàn Khả năng giữ sự bền vững và lô gích
Trang 30ứng dụng trong cùng một mô hình hướng đối tượng làm đơn giản việc mô hình hoá, thiết kế các yêu cầu nghiệp vụ, và sự trừu tượng của kiến trúc và thiết kế hệ thống Một số OODB thậm chí còn có một phiên bản thu gọn cho phép chúng tích hợp với ứng dụng vào trong một hệ thống nhúng
Với một số OODB, chúng ta có thể làm bền vững không chỉ dữ liệu mà cả toàn
bộ đối tượng, bao gồm ứng xử thực thi của nó Một số OODB cũng cho phép gọi các phương thức của đối tượng bền vững trên một server cơ sở dữ liệu từ xa, điều này mang lại cho chúng ta một số thuận lợi ở tính khả mở và sự phân tán Ngược lại, để hoàn thành việc này trong một cơ sở dữ liệu quan hệ chúng ta cần thực thi những thủ tục được lưu hoặc các đối tượng COM, do vậy bắt buộc phải có một vài
sự lặp lại trong các nỗ lực lập trình hoặc một kiến trúc bất tiện hơn
Giảm bớt sự phát triển
Việc đào tạo và huấn luyện có thể chiếm một chi phí đáng kể với các dự án Hơn nữa, các yêu cầu nghiệp vụ, các xem xét cùng mức, các chỉ dẫn xây dựng, và các yêu cầu kiểm tra có thể bị phức tạp hoá bởi nhiều công cụ, ngôn ngữ, và môi trường
hỗ trợ Một OODB có thể giảm số lượng các ngôn ngữ được đòi hỏi trong kiến trúc của chúng ta Đội ngũ phát triển sẽ không cần có những kỹ năng trong các công nghệ chẳng hạn như JDBC, Pro*C/C++, và PL/SQL Thay vào đó, những người phát triển có thể làm việc với nhiều khái niệm phổ biến hơn chẳng hạn như các đối tượng Java, sự lặp lại thông qua các tập hợp, v v
OODB cũng có thể giảm bớt thời gian phát triển bằng việc cho phép những người phát triển tập trung vào tính bền vững đối tượng, không phân rã các đối tượng thành các hàng và các mối quan hệ cha con vào trong một hoặc nhiều bảng Trong hầu hết các trường hợp, một người phát triển chỉ đơn giản là lưu một đối tượng vào
cơ sở dữ liệu Hãy so sánh thủ tục một bước này với những trở ngại của việc lưu một đối tượng phức tạp vào một RDB Người phát triển không chỉ phải biến đổi đối tượng thành một chuỗi các bản ghi, mà việc quản lý giao dịch, điều khiển lỗi, và
Trang 31việc tái thiết về sau cũng sẽ được yêu cầu khi khôi phục đối tượng Hơn nữa, các thuộc tính đối tượng phải được xuất thành kiểu dữ liệu tương thích ANSI
Một số OODB cung cấp sự tích hợp liền nét hoàn toàn giữa ứng dụng và mã trình bền vững, điều này giúp đơn giản hoá việc gỡ lỗi và việc kiểm tra sản phẩm cuối cùng Trong khi một số kiến trúc cơ sở dữ liệu đòi hỏi các thư viện và một giao thức giữa mã trình ứng dụng và bộ lưu trữ dữ liệu, một OODB có thể bỏ qua ràng buộc này và cho phép bộ gỡ lỗi giám sát điều gì xảy ra khi dữ liệu đang được lưu
Thực thi tốt hơn
Tuỳ thuộc vào sản phẩm và sự thực thi, OODB có thể mang lại sự thực thi hiệu quả cho kiểu ứng dụng đúng Nếu ứng dụng sử dụng một RDB và chúng ta phải dựng lại một đối tượng từ dữ liệu trong cơ sở dữ liệu, chúng ta thường xuyên phải thực hiện nhiều truy vấn Mỗi truy vấn này chịu một tổng phí và, nếu không lập kế hoạch cẩn thận cho các chỉ mục có thể dẫn đến những trả giá thực thi trầm trọng Một OODB làm giảm vấn đề này một cách đáng kể, bằng việc cung cấp một khái niệm như đã biết là định danh đối tượng hoặc OID - cơ sở dữ liệu khôi phục đối tượng trong trạng thái toàn vẹn của nó hoặc như một bộ nạp lười, một kỹ thuật truy vấn theo đó mã trình của ứng dụng được tải từng phần khi cần thiết
Một số thi hành OODB cũng dùng caching phía client cùng với caching phía server Mặc dù điều này có những bất lợi, nhưng nó chắc chắn có thể cải tiến sự thực thi của ứng dụng Chúng ta sẽ thường nhìn thấy các dấu hiệu cơ sở dữ liệu
“ấm” hoặc “lạnh”, trong đó một dấu hiệu ấm ngụ ý có một chương trình kiểm tra chạy đi chạy lại một hay nhiều lần để đánh giá các lợi thế caching và buffering OODB thường trội ở các dấu hiệu ấm bởi các tiện ích caching phía client của chúng
1.4.2 Những nhược điểm của cơ sở dữ liệu hướng đối tượng
Các cơ sở dữ liệu hướng đối tượng có những nhược điểm mà chúng ta cũng cần phải xem xét Một trong những hạn chế đương nhiên và đáng kể nhất là rủi ro trong việc chuyển một RDB sang OODB Các cơ sở dữ liệu quan hệ có những điểm yếu
Trang 32của nó nhưng chúng đã được thử thách và được sử dụng thành công trong các hệ thống điều khiển dữ liệu Các mẫu kiến trúc/thiết kế cho việc tích hợp các RDB vào trong một hệ thống cũng đã được định nghĩa và minh hoạ
Móc nối ứng dụng chặt khít
Trong nhiều thi hành OODB, OODB được móc nối chặt khít tới ứng dụng Điều này giúp đơn giản hoá cả việc thiết kế và lập trình, nhưng tầng trừu tượng hoá dữ liệu cũng có một số giá trị Khi loại bỏ nó, chúng ta đã đánh mất một tầng cách ly với cơ sở dữ liệu Điều này làm cho ứng dụng không thể dễ dàng chuyển sang một sản phẩm cạnh tranh mà không cần có những thay đổi và sự rà soát lại đáng kể Chúng ta cũng có thể luôn luôn thi hành một tầng trừu tượng hoá dữ liệu quanh sự thi hành OODB Mặc dù điều này sẽ đánh mất một số lợi ích của OODB, tuy nhiên việc phát triển tầng này cho một OODB chắc chắn sẽ rẻ hơn việc tạo một RDB tương đương
Những thiếu sót thực thi
Như đã thảo luận, một trong những ưu điểm của OODB là khả năng khôi phục trọn vẹn các đối tượng một cách hiệu quả Tuy nhiên, một đặc thù của OODB đó là các truy vấn phi thể thức với cơ sở dữ liệu của chúng khá yếu Việc nới lỏng sự điều hướng thông qua dữ liệu có thể là một thách thức, và việc tối ưu hoá và chức năng hoá truy vấn OODB cũng thường tụt hậu so với các sản phẩm cơ sở dữ liệu quan hệ chính
Một số thi hành OODB không cung cấp một cách đầy đủ việc khoá kết chuỗi Vì vậy, nếu không cẩn thận mã trình ứng dụng có thể khoá một nhóm lớn các đối tượng Trong khi hầu hết các RDB thi hành việc khoá mức hàng, một số OODB tiếp tục thi hành việc khoá trang Hơn nữa, các khoá có thể lan qua các mối quan hệ trong một đối tượng, cho phép tiềm ẩn một hành động khoá một lượng đáng kể dữ liệu
Hỗ trợ nền bị hạn chế
Trang 33Ngay cả khi một OODB được thực thi trong Java, chúng ta vẫn phải tiếp tục tìm kiếm một sự bảo đảm trong việc hỗ trợ đa nền Mặc dù Java là khả chuyển, các phần mềm Java phức tạp có thể có những kiểu cách và sắc thái riêng trong một môi trường có sẵn, với những phần mềm này chỉ các nhà cung cấp mới có thể giúp chúng ta di chuyển chúng Một số nhà cung cấp OODB không thể dành đầy đủ nguồn lực để hỗ trợ rộng rãi trong việc vượt qua nhiều nền bởi vì họ có ngân quỹ nhỏ hơn các nhà cung cấp RDB chính Để đánh giá sự hỗ trợ nền, tìm hiểu xem nhà cung cấp cung cấp những gì và kiểm tra các nhóm thảo luận (ví dụ,
một sự kết hợp của phiên bản và sản phẩm có sẵn
Di chuyển khó
Việc lưu các đối tượng tới một OODB khác rất nhiều so với việc lưu các đối tượng tới các cơ sở dữ liệu quan hệ Do vậy, rất dễ để di chuyển một hệ thống dựa trên quan hệ tới một OODB và một khi đã cam kết việc thiết kế và phát triển cho một OODB, chúng ta có thể nhận thấy rằng rất khó để di chuyển trở lại một RDB Với nhiều dự án, an toàn hơn nhiều là di chuyển từ một cơ sở dữ liệu quan hệ tới một cơ sở dữ liệu quan hệ đối tượng Một số nhà cung cấp chẳng hạn như Oracle đã làm cho việc di chuyển này là đương nhiên bằng cách đơn giản là thêm các thuộc tính quan hệ đối tượng tới sản phẩm lõi của họ Kết quả là, RDB kế thừa thường có thể được mở rộng để sát nhập các chức năng quan hệ đối tượng và được di chuyển theo một cách thức hợp lý
Đòi hỏi nhiều kỹ năng
Cũng như các RDB, mỗi OODB hướng tới việc có các cách thức và các mở rộng của riêng nó Do đó, việc tìm ra những người có các kỹ năng đặc thù của một OODB nào đó sẽ khó khăn hơn so với việc tìm những người có các kỹ năng RDB chính thống của một cơ sở dữ liệu nào đó (tức là, DB2, Oracle, Microsoft SQL Server, v v) Hơn nữa, việc tìm những cá nhân với kinh nghiệm chuyên sâu đã được thử thách trong việc quản trị OODB sẽ rất khó khăn Cứ cho là nhiều người sử
Trang 34dụng OODB cảm thấy rằng các OODB đòi hỏi ít công việc quản trị hơn trong những giai đoạn ban đầu, nhưng giống như đa số các hệ thống đang phát triển OODB sẽ đòi hỏi sự điều chỉnh để chuẩn bị triển khai Việc chuyển từ một mô hình
cơ sở dữ liệu quan hệ sang một mô hình cơ sở dữ liệu OO cũng sẽ đòi hỏi một số sự huấn luyện và cố vấn kinh nghiệm bởi vì những vấn đề chẳng hạn như sự thực thi, các khoá, và các kết nối thường đòi hỏi những tiếp cận khác nhau
Truy vấn phức tạp
Việc hỗ trợ truy vấn khác nhau đôi chút giữa các OODB khác nhau Ứng dụng
sẽ không thể luôn luôn khôi phục một đối tượng bởi Object ID Đúng hơn là, nhiều khi chúng ta sẽ cần tìm kiếm theo các phạm vi, các mẫu, và tiêu chí mờ bao gồm các đối tượng không có các mối quan hệ hiển nhiên Việc hỗ trợ truy vấn phi thể thức dường như là một lĩnh vực mà ở đó các OODB thấy rằng khó để cạnh tranh trong cả việc thực thi và các đặc trưng Có khả năng là chức năng này sẽ tiếp tục hoàn thiện, và nhiều ứng dụng có các đòi hỏi khôi phục rành mạch sẽ không chịu tổn thất do bất kỳ sự lãng phí nào của chức năng truy vấn phi thể thức
Trang 35Chương 2 Các hệ quản trị cơ sở dữ liệu hướng đối tượng
Trong vài năm gần đây, nhiều nguyên mẫu thí nghiệm và hệ thống cơ sở dữ liệu hướng đối tượng thương mại đã được tạo ra, mỗi hệ thống trong số chúng có một tập các đặc trưng khác nhau [12] Những ví dụ về các OODBMS như vậy gồm có:
Những nguyên mẫu thí nghiệm:
- Hệ thống ORION được phát triển ở MCC
- OPENOODB ở Texas Instruments
- Hệ thống IRIS ở các phòng thí nghiệm Hewlett-Packard
- Hệ thống ODE ở AT&T Bell Labs
- Đề án ENCORE/ObServer ở trường đại học Brown
Các hệ thống cung cấp thương mại:
- GEMSTONE/OPAL của GemStone Systems
- ONTOS của Ontos
- Objectivity của Objectivity Inc
- Versant của Versant Object Technology
- ObjectStore của Object Design
- ARDENT của ARDENT Software
- POET của POET Software
Chúng chỉ là một phần của danh sách những nguyên mẫu thí nghiệm và những
hệ thống cơ sở dữ liệu hướng đối tượng cung cấp thương mại
Các đặc tính OO phổ biến có trong các thi hành OODBMS là [8]:
Việc sử dụng các giao diện người dùng đồ hoạ (GUI) để quản lý DBMS Các OODBMS xuất hiện được trang bị một GUI chẳng hạn như trình duyệt hệ
Trang 36thống phân cấp lớp để cho phép người dùng cuối khám phá các lớp có trong thiết kế
Sử dụng một số kiểu OOPL Các lệnh DDL, DCL, DML được nhúng vào trong một ngôn ngữ như vậy
Ngôn ngữ được hỗ trợ bởi OODBMS được xem xét để trở nên hoàn chỉnh trong việc tính toán; tức là, toàn bộ ứng dụng có thể được viết trong ngôn ngữ này, và người dùng cuối không cần học hai ngôn ngữ để phát triển ứng dụng
2.1 Hệ thống ObjectStore
2.1.1 Tổng quan
ObjectStore được đăng ký nhãn hiệu của Object Design, Inc Nó là một hệ quản trị cơ sở dữ liệu hướng đối tượng tốc độ cao, linh hoạt, tin cậy và có tính khả dụng cao được thiết kế bởi Object Design Nó cung cấp một giao diện ngôn ngữ được tích hợp chặt chẽ với các đặc trưng hệ quản trị cơ sở dữ liệu truyền thống của lưu trữ bền vững, quản trị giao tác (điều khiển tương tranh và phục hồi), truy nhập phân tán, truy vấn kết hợp trên một lượng lớn dữ liệu, và các tiện ích quản trị cơ sở dữ liệu [14, 15, 17, 18]
Nó là một trong những sản phẩm dẫn đầu trong việc cung cấp các giải pháp hướng đối tượng thuần tuý cho việc quản trị cơ sở dữ liệu Nó hỗ trợ một miền rộng các nền với giao diện Hệ cơ sở dữ liệu quan hệ truyền thống
Dòng sản phẩm bao gồm PSE Pro- một phiên bản thu gọn của ObjectStore, lý tưởng cho các ứng dụng nhúng hướng giao tác PSE Pro giảm cho phí phát triển và làm cho việc phát triển và triển khai ứng dụng phân tán được tiện lợi, cải thiện hiệu suất của các hệ thống nhúng, các thiết bị di động, và các ứng dụng Web [15, 19]
Trang 372.1.2 Kiến trúc ObjectStore
ObjectStore dựa trên kiến trúc client/server Để đạt được sự thực thi tốt nhất, ObjectStore thi hành một kiến trúc độc đáo gọi là “Cache-Forward” [14, 15, 16] Kiến trúc này dựa trên bộ nhớ ảo với khái niệm lỗi trang Việc truy cập và thao tác
dữ liệu xảy ra trong bộ nhớ ở phía client thay vì ở phía server Khi dữ liệu được một ứng dụng tìm đến không ở trong bộ nhớ chính của client, một lỗi trang xảy ra Tiếp
đó để đáp lại các lỗi trang, client yêu cầu các trang từ server, và server sẽ truyền các trang bao chứa thông tin được yêu cầu tới client Dĩ nhiên các trang được truyền được đặt vào trong bộ nhớ chính của client Truy cập đối tượng trực tiếp từ bộ nhớ không chỉ gia tăng đáng kể tốc độ xử lý dữ liệu mà còn làm cho giao thông mạng giảm đi rất nhiều
(a)
Trang 38(b) 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
Để đảm bảo sự toàn vẹn và nhất quán giao tác của dữ liệu được trữ cục bộ trong khi duy trì sự thực thi toàn thể hệ thống ở mức cao, ObjectStore cung cấp công nghệ callback locking đã được cấp bằng sáng chế Nó sẽ được thảo luận trong tiến trình ObjectStore Server
Có 3 tiến trình chính trong ObjectStore: tiến trình server, tiến trình client, và tiến trình Cache Manager Tiến trình ObjectStore Server điều khiển việc truy cập tới các
cơ sở dữ liệu ObjectStore trên một host Bao gồm lưu trữ và khôi phục dữ liệu bền vững; kiểm soát việc truy cập đồng thời của nhiều ứng dụng client bằng việc sử dụng callback locking; và phục hồi các cơ sở dữ liệu tới một trạng thái nhất quán giao tác nếu xảy ra sự bãi bỏ các tiến trình hoặc đổ vỡ host hoặc trong trường hợp hỏng hóc mạng Tiến trình Client ánh xạ các đối tượng cơ sở dữ liệu bền vững vào các địa chỉ ảo, yêu cầu server cấp phát và huỷ cấp phát vùng nhớ cho các đối tượng bền vững, duy trì việc trữ các trang được sử dụng gần đây và trạng thái khoá của các trang đó, và điều khiển các lỗi trang Với bộ quản lý Cache trong ObjectStore,
Trang 39chức năng chính của nó là giúp cho việc truy cập đồng thời đến dữ liệu được thuận tiện bằng việc điều khiển các thông điệp callback từ Server Nó quyết định hoặc cấp quyền đọc hoặc cấp quyền ghi cho client hoặc từ chối yêu cầu cấp quyền [17, 18]
2.1.3 Chức năng
Các hệ thống kinh doanh tới hạn và các ứng dụng cho phép Web đòi hỏi khả năng cung cấp 24x7 và độ tin cậy và hiệu suất thực hiện mức cao ObjectStore cung cấp một số khả năng an toàn để bảo vệ dữ liệu trong một môi trường phân tán Chúng bao gồm điều khiển tương tranh cho sự nhất quán giao tác, cập nhật trực tuyến, khắc phục lỗi một cách tự động và sao lặp [14]
Một vị trí nguy hiểm tiềm tàng với bất bỳ ứng dụng quản trị dữ liệu nào là sự đổ
vỡ hệ thống trong quá trình một giao tác Cơ chế phục hồi của ObjectStore cho phép
cơ sở dữ liệu được khôi phục lại trạng thái nhất quán theo sau một đổ vỡ Sự cam kết hai pha tuân theo XA được sử dụng để đảm bảo sự nhất quán giữa các server phân tán và giữa nhiều cơ sở dữ liệu Theo sau một đổ vỡ hệ thống, các tệp nhật ký giao tác được xử lý để khôi phục các cơ sở dữ liệu tới trạng thái nhất quán sau cùng ngay trước đổ vỡ
Một lợi ích nữa của việc ghi tất cả các thay đổi tới nhật ký giao tác và sử dụng nhật ký cho việc truy cập dữ liệu tiếp theo, khi đó thời gian đáp ứng nhanh trong suốt các cam kết giao tác có thể được đảm bảo Nếu server cơ sở dữ liệu bận phục
vụ các yêu cầu từ các client, nhật ký giao tác có thể đợi trước khi cam kết những thay đổi tới cơ sở dữ liệu, loại bỏ rủi ro của một sự thắt cổ chai trong server cơ sở
dữ liệu
Một thao tác chung nhất của các ứng dụng cơ sở dữ liệu là việc huỷ tham chiếu đối tượng một cách thông thường, việc này trong C++ được thực hiện bằng việc sử dụng các con trỏ, và trong Java với các tham chiếu Trong cả hai trường hợp điểm chính của sự thực thi cơ sở dữ liệu là tốc độ ở đó việc huỷ tham chiếu có thể được thực hiện ObjectStore sử dụng công nghệ đã được cấp bằng sáng chế trong Kiến trúc ánh xạ bộ nhớ ảo [16 ,17, 18]
Trang 40ObjectStore cải tiến không gian địa chỉ ảo của trạm làm việc bằng việc ánh xạ động dữ liệu liệu bền vững được tham chiếu trong suốt các phiên ứng dụng, do vậy đảm bảo rằng việc truy cập tới dữ liệu bền vững thì nhanh như việc truy cập tới dữ liệu trong suốt Các ứng dụng rất thường xuyên truy cập tới các số lượng lớn các đối tượng nhỏ Thông thường phải cần đến một chỉ thị Đơn vị xử lý trung tâm (CPU) để lấy về một đối tượng đơn, điều này là một sự sử dụng kém hiệu quả của các tài nguyên ObjectStore cho phép lấy về vài đối tượng được lưu trên một trang đơn được yêu cầu trong một thao tác CPU, đặt vào cache và được ánh xạ vào trong
bộ nhớ ảo
Bất cứ khi nào có thể, các đối tượng được lưu trữ trên server theo khuôn dạng như là chúng được biểu diễn trong bộ nhớ ảo để cải thiện hiệu suất Tuy nhiên, để cho phép truy cập không đồng nhất thông qua các nền khác nhau, thông thường đòi hỏi mộ số tiêu chuẩn sửa đổi, ví dụ, việc thay đổi thứ tự byte
Một cách cải tiến hiệu quả khác, được ObjectStore chấp nhận, là khả năng phân cụm các đối tượng trên một trang hoặc trên các trang cụm, để khi dữ liệu được đặt vào trong cache, việc truy cập tới dữ liệu liên kết lấy về được nhanh chóng
Trong một RDBMS, một mức tri thức Ngôn ngữ truy vấn có cấu trúc (SQL) thường được đòi hỏi để cung cấp các truy vấn phi thể thức Trong thực tế điều này hầu như có nghĩa đặt ra một yêu cầu cho phòng IT, nó có thể đòi hỏi một thời gian trễ vài ngày đợi một câu trả lời – phi thể thức khó Các tiện ích được cung cấp trong ObjectStore để mô hình hoá các mối quan hệ giữa các đối tượng, cho phép các tập hợp lớn các đối tượng được quản lý Những tập hợp này thiết lập cơ sở của việc truy vấn với những người dùng bằng việc đơn giản là chọn những phần tử thoả mãn một điều kiện đặc thù Những sự khôi phục liên kết và điều hướng phi thể thức cũng được hỗ trợ
Một nhân tố có thể có một ảnh hưởng nghiêm trọng tới việc thực thi của một cơ
sở dữ liệu là một sự thiếu hụt việc đánh chỉ số hiệu quả Tuy nhiên, việc tạo ra các chỉ số tự chúng cũng tạo ra các vấn đề không gian vật lý Do vậy có thể là một hành