The Object Oriented Database System Manifesto HỆ THỐNG CSDL HƯỚNG ĐỐI TƯỢNG OBJECT ORIENTED DATABASE MANAGEMENT SYSTEM Tóm tắt Tài liệu này cố gắng định nghĩa một hệ thống CSDL hướng đối tượng Nó mô t[.]
HỆ THỐNG CSDL HƯỚNG ĐỐI TƯỢNG OBJECT ORIENTED DATABASE MANAGEMENT SYSTEM Tóm tắt: Tài liệu cố gắng định nghĩa hệ thống CSDL hướng đối tượng Nó mơ tả đặc trưng đặc tính mà hệ thống phải có CSDL hướng đối tượng Chúng tơi phân đặc trưng thành nhóm: Các đặc trưng bắt buộc, đặc trưng mà hệ thống phải thỏa mãn theo trở thành thuật ngữ hệ thống CSDL hướng đối tượng Đó đối tượng phức hợp, định danh đối tượng (object identity), đóng gói (encapsulation), kiểu lớp (class type), thừa kế (inheritance), hiệu lực trễ (late binding), mở rộng (extensibility), tính tốn hồn chỉnh ( computational completeness), tính bền vững (persistence), quản lý lưu trữ thứ cấp (secondary storage management), đồng thời (concurrency), công cụ truy vấn đặc biệt Các đặc trưng tùy chọn, tính thêm vào nhằm làm cho hệ thống tốt khơng phải bắt buộc Đó đặc tính đa thừa kế (multiple inheritance), kiểu kiểm tra suy diễn, phân tán, thiết kế giao tác phiên Các đặc trưng mở, quan điểm mà nhà thiết kế tạo số lựa chọn Đấy mơ hình lập trình, hệ thống trình diễn, kiểu hệ thống tính đồng dạng Nội dung tài liệu Giới thiệu Các đặc trưng bắt buộc: Các nguyên tắc vàng Các đối tượng phức hợp (Complex objects) Định danh đối tượng (Object Identity) Sự đóng gói (Encapsulation) Các kiểu lớp (Types and Classes) Lớp hay kiểu phân cấp chức Ghi đè, nạp chồng, hiệu lực trễ (Overriding, Overloading, late binding) Tính tốn hồn chỉnh (Computational completeness) Tính mở rộng (Extensibility) Tính bền vững (Persistence) Quản lý lưu trữ thứ cấp Tính đồng thời (Concurrency) Khơi phục (Recovery) Tiện ích truy vấn đặc biệt (Ad hoc Query facility) Tóm tắt Các đặc trưng tùy chọn Đa thừa kế Kiểu kiểm tra kiểu suy diễn (Type checking and type inferencing) Phân tán (Distribution) Thiết kế giao tác (Designn transaction) Phiên (versions) Các lựa chọn mở: Mơ hình lập trình (Programming paradign) Hệ thống trình diễn (Representation system) Kiểu hệ thống Tính đồng dạng (Uniformity) Kết luận Lời giới thiệu: Hiện nay, hệ thống CSDL hướng đối tượng nhận nhiều ý từ thực nghiệm lẫn lý thuyết, có tranh luận đáng ý định nghĩa hệ thống Có ba điểm mô tả lĩnh vực giai đoạn này: (i) thiếu mơ hình liệu phổ dụng, (ii) thiếu thiết lập hình thức (iii) hoạt động mang tính chất nghiên cứu mạnh mẽ Trong báo nguyên Codd đưa đặc tả rõ ràng hệ thống CSDL quan hệ (mơ hình liệu ngơn ngữ truy vấn), nhiên chưa có đặc tả dành cho hệ thống CSDL hướng đối tượng Chúng ta không khẳng định khơng tồn mơ hình liệu hướng đối tượng hoàn chỉnh nào, thực tế có nhiều đề xuất trình bày chủ đề này, chủ yếu tập chung vào mô hình đơn giản Sự đánh giá mang tính bao qt toàn đặc trưng họ hệ thống hướng đối tượng, nhiên, thời điểm khơng có trí rõ ràng hệ thống hướng đối tượng Đặc điểm thứ lĩnh vực thiếu khung lý thuyết đủ mạnh Để so sánh lập trình hướng đối tượng với lập trình logic dường khơng có tương đương Sự cần thiết phải có lý thuyết tảng hiển nhiên: Các ngữ nghĩa học khái niệm ví dụ nhiều kiểu hay chương trình thường định nghĩa không tốt Sự thiếu vắng khung lý thuyết vững làm cho việc đánh giá mơ hình liệu trở nên khơng đạt Cuối cùng, có nhiều thực nghiệm nghiên cứu theo hướng: Người ta xây dựng hệ thống thực tế, số hệ thống nguyên mẫu, ngoại trừ số sản phầm thương mại Điều quan tâm hệ thống CSDL hướng đối tượng dường định nhu cầu thiết kế hệ thống hỗ trợ (tức CAD, CASE, Các hệ thống thơng tin văn phịng – Office Information System) Những ứng dụng yêu cầu cần phải có CSDL mà xử lý liệu phức tạp, giải cách êm thấm, cung cấp hiệu suất cao hệ thống tương tác Tình thực tương tự CSDL quan hệ năm 1970 (qua có nhiều khởi đầu lĩnh vực hướng đối tượng) Đối với hệ thống quan hệ, có số ý kiến khong đồng tình số điểm, hình thức ngôn ngữ truy vấn, liệu quan hệ cá tập hay bao đóng? Những khác biệt nằm nhiều trường hợp không sâu sắc có mơ hình sở chung Người ta phát triển thức cơng nghệ thực thi Ngày nay, lựa chọn cách đồng thời đặc tả hệ thống tạo cơng nghệ để hỗ trợ cho thực thi Do đó, đặc tả hệ thống, lấy cách tiếp cận Darwin: Chúng ta hy vọng rằng, tập nguyên mẫu thực nghiệm xây dựng, mơ hình phù hợp lên Chúng ta hy vọng công nghệ thực thi khả dụng cho mơ hình tiến triển cách đồng thời Không may thay, với tiến triển lên xuống của thực nghiệm, đánh liều cho hệ thống, khơng phải chúng phù hợp nhất, mà hệ thống cung cấp tập chức có ý nghĩa theo yêu cầu thị trường Đó mẫu cổ điển có nhiều rủi ro lĩnh vực máy tính mà sản phẩm trước trở thành chuẩn de factor khơng biến Mẫu chí cho ngôn ngữ hệ điều hành (Fortran, Lisp, Cobol SQL ví dụ tốt trường hợp vậy) Tuy nhiên ta cần ý mục đích khơng phải để chuẩn hóa ngơn ngữ mà tinh chỉnh thuật ngữ Chúng ta vừa phân tách đặc trưng hệ thống CSDL hướng đối tượng thành mục: Đặc trưng bắt buộc – mandatory (Các đặc trưng mà hệ thống phải thỏa mãn để khẳng định CSDL hướng đối tượng, đặc trưng tùy chọn (các đặc trưng mà bổ sung để làm cho hệ thống tốt đặc trưng bắt buộc) tính mở (nơi nhà thiết kế lựa chọn từ số giải pháp chấp nhận được) Ngồi ra, có số cách để xác định cơng thức tốt cho đặc trưng (các đặc trưng bắt buộc khơng bắt buộc) Phần cịn sách tổ chức sau: Phần mô tả đặc trưng bắt buộc OODBS Phần mô tả đặc trưng tùy chọn phần trình bày vấn đề dành cho nhà thiết kế hệ thống Cơ sở liệu (CSDL) trở thành phận chủ yếu, thiếu hệ thống thông tin Trước đây, hệ thống thông tin (HTTT) thường sử dụng kiểu CSDL Quan hệ Tuy nhiên, với phát triển Công nghệ thông tin, CSDL Quan hệ dần bộc lộ yếu điểm nhiều hạn chế, đặc biệt việc xây dựng ứng dụng có liệu phức tạp, liệu đa chiều, liệu có nhiều mối quan hệ hay liệu đa phương tiện (Multi-media) hình ảnh, âm thanh, video,… CSDL Hướng đối tượng giải pháp cho vấn đề Trong CSDL hướng đối tượng, liệu lưu trữ dạng đối tượng ngơn ngữ lập trình, nên cho phép lưu trữ dạng liệu phức tạp, lượng thông tin lớn Các liệu không lưu trữ đơn thuần, mà hành vi đối tượng liệu lưu trữ CSDL Cơ sở liệu Hướng đối tượng (Object-Oriented Database) kiểu CSDL, mà đó, liệu lưu trữ dạng đối tướng Hay CSDL Hướng đối tượng xây dựng cách kết hợp yếu tố CSDL kĩ thuật Lập trình Hướng đối tượng nhằm mục đích lưu trữ đối tượng liệu Từ đó, tận dụng, phát huy ưu điểm, lợi ích, mạnh kĩ thuật, công nghệ sử dụng, đồng thời khắc phục yếu điểm, khó khăn kiểu CSDL khác Hình sau minh họa việc tổ hợp yếu tố CSDL kĩ thuật lập trình hướng đối tượng để xây dựng nên CSDL hướng đối tượng Hình 1: Các thành phần CSDL hướng đối tượng CÁC ĐẶC TRƯNG BẮT BUỘC: Các nguyên tắc vàng (golden rules) Một CSDL hướng đối tượng phải thỏa mãn hai tiêu chí: Nó phải hệ quản trị CSDL DBMS, hệ thống hướng đối tượng, tức mở rộng, thích hợp với số ngơn ngữ lập trình hướng đối tượng Tiêu chí diễn giải thành đặc trưng: Tính bền vững – persistence, quản lý lưu trữ thứ cấp, đồng thời, khôi phục tiện ích truy vấn đặc biệt Tiêu chí thứ diễn giải thành đặc trưng: Các đối tượng phức hợp, định danh đối tượng, đóng gói, kiểu lớp, thừa kế, ghi chồng tổ hợp, khả mở rộng hồn chỉnh tính tốn 2.1 Các đối tượng phức hợp - Complex objects Các đối tượng phức hợp xây dựng từ đối tượng đơn giản cách áp dụng cấu tử cho chúng Các đối tượng đơn giản đối tượng số nguyên, ký tự, chuỗi byte với chiều dài bất kỳ, đối tượng boolean số thực dấu chấm động (một đối tượng bổ sung kiểu nguyên tử khác) Define type Person (Name string(10), Age Numeric(3)) Table Sinhvien(Person, class char(10)) Table Giaovien(Person, Khoa char(10)) Có vơ số cấu tử đối tượng phức hợp: kiểu tuples, sets, bags, lists array ví dụ Tập tối thiểu cấu tử mà hệ thống cần có tập hợp – set, danh sách list tuple Các tập cần thiết chúng cách tự nhiên để biểu diễn tập hợp – collection từ giới thực Tuples cần thiết chúng cách tự nhiên để biểu diễn thuộc tính thực thể Tất nhiên tập hợp tuple quan trọng chúng đạt chấp thuận rỗng rãi dạng đối tượng cấu tử thơng qua mơ hình quan hệ Danh sách mảng (list and array) quan trọng chúng bao qt thứ tự mà xảy giới thực, chúng xuất nhiều ứng dụng khoa học người ta cần đến ma trận liệu chuỗi thời gian Các đối tượng cấu tử phải trực giao: cấu tử cần áp dụng cho đối tượng Các cấu tử mơ hình quan hệ khơng trực giao, tập cấu tử áp dụng cho tuple cấu tử tuple áp dụng với giá trị nguyên tử Chú ý để hỗ trợ đối tượng phức hợp đỏi hỏi tốn tử thích hợp phải cung cấp với đối tượng (bất kể tổ hợp chúng) Đó thao tác đối tượng phức hợp phải nhân rộng tới tất thành phần Các ví dụ bao gồm thao tác truy xuất xóa đối tượng phức hợp toàn thể kết thao tác chép sâu sắc “deep” (tương phản với chép nơng– shallow copy thành phần khơng nhân bản, mà thay vào tham chiều đối tượng gốc) Tất nhiên, thao tác bổ sung đối tượng phức hợp định nghĩa người dùng hệ thống (xem nguyên tắc mở rộng phần dưới) Tuy nhiên khả đòi hỏi số hệ thống hỗ trợ dự phòng hai kiểu tham chiếu khả phân biệt ( “ispart-of” “general”) Phân biệt set, bag, list array o Set: đối tượng thuộc lớp khơng trùng, khơng có thứ tự o Bag: đối tượng thuộc lớp phép trùng, khơng có thứ tự o List: đối tượng thuộc lớp xếp theo thứ tự, truy xuất o Array: đối tượng thuộc lớp xếp theo thứ tự, truy xuất ngẫu nhiên Ví dụ: Định nghĩa cho class LUONG Vì lớp LUONG gồm thơng tin thuộc tính, khơng có thơng tin quan hệ ngữ nghĩa Đây phần lớn thông tin đối tượng NV tách thành lớp riêng nên không đặt tên cho tập đối tượng Class LUONG { attribute float luong_co_ban; attribute float luong_ngoai_gio; attribute float thuong; }; Ví dụ định nghĩa cho lớp NV Class NV (extent DM_NV) { attribute string ten_nv; attribute short ma_nv; attribute LUONG luong_nv; … }; Tên tập đối tượng Ví dụ: định nghĩa cho lớp TG Class TG EXTENDS NV : GD_SV { relationship Phụ_giảng inverse :: có_tg_là; attribute string ho_ten; attribute short ma_so; attribute struct dia_ch; relationship set đăng_ký_dự inverse :: có_sv_đk; … }; Nhận xét: o Nếu không khai báo tên tập đối tượng thuộc lớp TG(khai báo với từ khóa extent) đối tượng lưu trữ chung với đối tượng NV o Nếu khai báo tên tập đối tượng thuộc lớp TG đối tượng lưu trữ riêng Ví dụ: định nghĩa cho lớp MÔN Class MÔN (extent DM_MÔN) { attribute string Tên_M; attribute string Mã_M; relationship list có_lớp inverse relationship set inverse :: thuộc; có_mơn_tq; :: là_mơn_tq_của; relationship set là_mơn_tq_của; inverse :: có_mơn_tq; Boolean mở(in unsigned short học_kỳ) raise (đã có mở) Boolean hủy(in unsigned short học_kỳ) raise (không mở) }; 2.1 Định danh đối tượng – Object Identity Định danh đối tượng tồn từ lâu ngơn ngữ lập trình Các khái niệm có CSDL gần Ý tưởng sau: mơ hình với định danh đối tượng, đối tượng có tồn mà khơng phụ thuộc vào giá trị Do có hai ý niệm đối tượng song song tồn tại: hai đối tượng giống (chúng đối tượng) (chúng có giá trị giống nhau) Điều có hàm ý: đối tượng đối tượng chia sẻ đối tượng cập nhật đối tượng Đối tượng chia sẻ: Theo mơ hình dựa định danh, hai đối tượng chia sẻ thành phần Do đó, phần trình diễn hình tượng đối tượng phức hợp dạng đồ thị, giới hạn hệ thống khơng có định danh đối tượng Xem xét ví dụ sau: người có tên, tuổi, tập đứa Giả sử Peter Susan có hai đứa trẻ 15 tuổi tên John Trong sống thực, có trường hợp xuất hiện: Susan Peter cha mẹ đứa trẻ Trong hệ thống mà khơng có định danh, Peter biểu diễn sau: Nhanvien(Peson, con:person) (peter, 40, {(john, 15, {})}) Và Susan biểu diễn dạng: (susan, 41, {(john, 15, {})}) Do đó, khơng có cách diễn tả liệu Peter Susan có phải cha mẹ đứa trẻ Trong mơ hình dựa vào định danh, có hai cấu trúc chia sẻ phần chung (john, 15, {}) khơng, bao quát trường hợp kể Cập nhật đối tượng –Object Update Giả sử Peter Susan thực tế cha mẹ đứa trẻ có tên John Trong trường hợp này, tất cập nhật tới trai Susan áp dụng tới đối tượng John tương tự đối tới trai Peter Trong hệ thống dựa vào giá trị, hai đối tượng phải cập nhật cách riêng biệt Định danh đối tượng xử lý liệu mạnh mà tập bản, tuple, xử lý đối tượng phức hợp đệ quy Hỗ trợ định danh đối tượng ngụ ý muốn nói đến việc cung cấp thao tác gán đối tượng, chép đối tượng (cả chép sâu nông) kiểm tra định danh đối tượng đối tượng (cả sâu nông) Tất nhiên, người ta mơ định danh đối tượng hệ thống dựa giá trị Tuy nhiên, cách tiếp cận tạo gánh nặng người sử dụng cần đảm bảo định danh đối tượng trì tồn vẹn tham chiếu (và gánh nặng có nghĩa thao tác tập liệu vô nghĩa) ... Nhìn nhận theo khía cạnh ngơn ngữ lập trình (đây quan điểm gốc khái niệm bắt nguồn từ đó) nhìn nhận theo hướng CSDL Ý tưởng đóng gói ngơn ngữ lập trình bắt nguồn từ kiểu liệu trừu tượng Theo khía... thuộc lớp phép trùng, khơng có thứ tự o List: đối tượng thuộc lớp xếp theo thứ tự, truy xuất o Array: đối tượng thuộc lớp xếp theo thứ tự, truy xuất ngẫu nhiên Ví dụ: Định nghĩa cho class LUONG... không lưu trữ đơn thuần, mà hành vi đối tượng liệu lưu trữ CSDL Cơ sở liệu Hướng đối tượng (Object-Oriented Database) kiểu CSDL, mà đó, liệu lưu trữ dạng đối tướng Hay CSDL Hướng đối tượng xây dựng