seminar
DESCRIPTION
BỘ MÔN: CƠ SỞ DỮ LIỆU NÂNG CAO. SEMINAR. SELECT Ten, MSSV, hinhAnh. FROM SINHVIEN sv JOIN PHANCONGSEMINAR pc ON sv.MSSV = pc.MSSV. WHERE pc.nhomTruong = ‘ 0912469 ’. CAD/CAM. Floats. Fixed collection. Complex kind of data. ?. Small. Integers. Relational Database. GIS. - PowerPoint PPT PresentationTRANSCRIPT
You know my method, Watson. Apply them.
SEMINAR
BỘ MÔN: CƠ SỞ DỮ LIỆU NÂNG CAO
SELECT Ten, MSSV, hinhAnh
Ten MSSV hinhAnh
Thanh Thảo 0912430 /../../danh_sach_sinh_vien/09-10/0912430.jpg
Phương Thảo 0912431 /../../danh_sach_sinh_vien/09-10/0912431.jpg
Thủy Tiên 0912463 /../../danh_sach_sinh_vien/09-10/0912463.jpg
Văn Tiến 0912469 /../../danh_sach_sinh_vien/09-10/0912469.jpg
FROM SINHVIEN sv JOIN PHANCONGSEMINAR pc ON sv.MSSV = pc.MSSVWHERE pc.nhomTruong = ‘0912469’
GIỚI THIỆU
Strings
IntegersSmall
Fixed collection
DatesBoolean
Floats
Relational
Database
Complex kind of data
CAD/CAM
GIS
Multimedia Repositorie
s
Document manageme
nt
?Ten MSSV hinhAnh
Thanh Thảo 0912430 /../../danh_sach_sinh_vien/09-10/0912430.jpg
Phương Thảo 0912431 /../../danh_sach_sinh_vien/09-10/0912431.jpg
Thủy Tiên 0912463 /../../danh_sach_sinh_vien/09-10/0912463.jpg
Văn Tiến 0912469 /../../danh_sach_sinh_vien/09-10/0912469.jpg
GIỚI THIỆU
Object-Database
Hỗ trợ nhiều loại dữ liệu phức tạp
• Object-Oriented Database Systems
• Object-Relational Database Systems
Với hai hướng phát triển chính
Nơi mà các đối tượng phức tạp đóng vai trò là trung tâm Bị ảnh hưởng nhiều bởi ngôn ngữ lập trình HĐT
Thêm các hàm vào DBMS như một môi trường lập trình Object Data Model & Object Query Language được phát triển
Hỗ trợ một class rộng lớn của các ứng dụng
Là cầu nối giữa mô hình quan hệ và hướng đối tượng
Các nhà cung cấp RDBMS đang thêm các chức năng ORDBMS
Database Management System, Raghu Ramakrishnan & Johanes Gehrke
GIỚI THIỆU
Object-Database
SQL:1999
Daffodil DB
EnterpriseDB
FirstSQL/J
GibaBaseDB2
Cache
Vituoso Universal Server
Oracle
Nguồn: Wikipedia
OBJECT vs RELATIONAL
Relation Model
Relation
Object Model
ThemeGallery is a Design Digital Content & Contents mall developed by Guild Design Inc.
Class
Tuple Instance Object
Column Attribute
Store Procedure Method
Similar
Similar
Similar
Different
Theo slide ODBMS, Hong Yang, NJIT
OBJECT vs RELATIONAL
LOẠI NÀO TỐT HƠN?
Không thể trả lời chính xác loại nào tốt hơn loại nào được
Tùy vào trường hợp sử dụng
KHI NÀO SỬ DỤNG ODDMS?
Bốn yếu tố chính: Nhu cầu của doanh
nghiệp Hiệu suất cao Dữ liệu phức tạp
Một mô hình giảm bớt chi phí phát triển và bảo trì Và gần đây, người ta vẫn xem xét chọn ODBMS
ngay cả khi dữ liệu của họ không đặc biệt phức tạp. Một ODBMS có thể cho phép một nhóm nhỏ hơn, phát triển nhanh hơn.
Theo slide ODBMS, Hong Yang, NJIT
KIỂU DỮ LIỆU MỚI
THIẾT KẾ CSDL?
Hệ quản trị cần hỗ trợ các loại dữ liệu phong phú hơn những loại hiện có
KIỂU DỮ LIỆU MỚI
Do người dùng định nghĩaDữ liệu của Dinky EntertainmentHình ảnh, giọng nói, video
Phải được lưu trữ trong cơ sở dữ liệuPhải có những phương thức đặc biệtTạo bản nén của một hình ảnh
KIỂU DỮ LIỆU MỚI
RDBMS CÓ GIẢI QUYẾT ĐƯỢC?
Binary Large Object (BLOB)
Chỉ một dòng dài byte
CÁC TÍNH NĂNG KHÔNGCÓ SẴN TRONG MÔ HÌNH
QUAN HỆ
THAO TÁC TRÊN KIỂU DỮ LIỆU MỚI
CREATE TABLE KhungHinh(soKhung integer, hinhAnh jpeg_image, theLoai integer)CREATE TABLE TheLoai(maTheLoai integer, tenTheLoai text, giaChoThue float , ghiChu text)CREATE TYPE kieu_RapPhimROW(maRap integer, tenRap text, diaChi text, soDienThoai text)CREATE TABLE DanhSachRap OF kieu_RapPhimCREATE TABLE DangChieu(phim integer, rap ref(kieu_RapPhim) with scope DanhSachRap , batDau date, ketThuc date)CREATE TABLE DanhSachPhim(maPhim integer, tuaPhim text , nhanVat setof(text), daoDien text, chiPhi float)CREATE TABLE QuocGia(ten text, ranhGioi daGiac, danSo int, ngonNgu text)
THAO TÁC TRÊN KIỂU DỮ LIỆU MỚI
Thách thức đầu tiên: Công ty sản xuất ngủ cốc Nestlé có chi nhánh ở
Singapore Thuê một hình ảnh Gấu Xanh ở phía trước mặt trời mọc Thiết kế hợp ngủ cốc Alete
SELECT K.soKhung, banThuNho(K.hinhAnh), T.giaChoThueFROM KhungHinh K, TheLoai T
WHERE K.theLoai = T.maTheLoai AND co_MatTroi(K.hinhAnh) AND la_GauXanh(K.hinhAnh)
THAO TÁC TRÊN KIỂU DỮ LIỆU MỚI
Thách thức thứ hai:
Đến từ giám đốc điều hành Dinky Biết rằng Alete rất phổ ở quốc gia Singapore
Muốn đảm bảo là có một số phim Gấu Xanh đang được chiếu ở Singapore khi mà Alete được trưng bày.
SELECT D.rap->tenRap, N.rap->diaChi, P.tuaPhim
FROM DangChieu D, Phim P, QuocGia Q
WHERE D.phim = P.maPhim AND namTren(Q.ranhGioi, banKinh(N.rap->diaChi, 100) AND Q.ten = ‘Singapore’
AND ‘Gấu Xanh’ ϵ F. nhatVat)
SELECT K.soKhung, banThuNho(K.hinhAnh), T.giaChoThueFROM KhungHinh K, TheLoai T
WHERE K.theLoai = T.maTheLoai AND co_MatTroi(K.hinhAnh) AND la_GauXanh(K.hinhAnh)
KIỂU DỮ LIỆU TRỪU TƯỢNG
CREATE TABLE KhungAnh(soKhung integer, hinhAnh jpeg_image, theLoai integer)
Dùng để lưu trữ hình ảnh cho khung hình trong một bộ phim Kiểu dữ liệu jpeg_image không nằm trong nhân DBMS
jpeg_image được xây dựng bởi người dùng để lưu trữ hình ảnh theo tiêu chuẩn JPEG.
CREATE TABLE QuocGia(ten text, ranhGioi daGiac, danSo int, ngonNgu text)
KIỂU DỮ LIỆU TRỪU TƯỢNG
Định nghĩa kiểu dữ liệu mới tùy ý
Là tính năng quan trọng của ORDBMS
Cho phép lưu trữ và truy xuất đối tượng loại jpeg_images nhưng mọi đối tượng khác (ví dụ: kiểu int) Cần phải có các phương thức được định bởi người tạo ra chúngVí dụ kiểu jpeg_images sẽ có các phương thức: nén, xoay, thuNhỏ, cắt…
Sự kết hợp của kiểu dữ liệu (atomic) và các phương thức liên quan được gọi là Abtract Data Type (ADT)SQL truyền thống cũng đã xây dựng các ADTs, chẳng hạn như kiểu int và các toán tử liên quan (+, -, >, = …) hoặc string (LIKE).
ORDBMS cũng cho phép người dùng định nghĩa kiểu riêng của mình
KIỂU DỮ LIỆU TRỪU TƯỢNG
Nhãn ‘abtract’ được áp cho các kiểu dữ liệuBởi vì hệ thống CSDL không cần biết dữ liệu được lưu trữ cũng như phương thức của nó làm việc như thế vào.Đơn thuần chỉ cần biết input và output cho các phương thứcCác phương thức được tích hợp vào ADT được gọi là tinh đóng gói.Ngay cả các kiểu int, string … cũng là ADT với tính đóng gói.
CREATE ABTRACT DATA TYPE jpeg_image(internallength = VARIABLE, input jpeg_in, output jpeg_out)
CREATE ABTRACT DATA TYPE polygon(internallength = VARIABLE, input poly_in, output poly_out)
ĐỊNH NGHĨA PHƯƠNG THỨC
Đối với một kiểu dữ liệu mới được định nghĩa: Xác định phương pháp cho phép các DBMS có thể
đọc và xuất ra các đối tượng của kiểu dữ liệu này
Tính toán dung lượng cần thiết để lưu trữ đối tượng
Vậy người dùng phải khai báo tối thiếu các phương thức sau với DBMS:
• Size
• Import
• Export
ĐỊNH NGHĨA PHƯƠNG THỨC
Làm thế nào để khai báo cáo phương thức này? Người dùng phải viết code cho các phương
thức. Thông báo cho DBMS biết về phương thức này.
Ngôn ngữ dùng để viết các phương thức này phụ thuộc vào ngôn ngữ được hỗ trợ bởi DBMS
CREATE FUNCTION coMatTroi(jpeg_image) RETURNS booleanAS EXTERNAL NAME ‘a/b/c/dinky.class’ LANGUAGE ‘java’
Ví dự ORDBMS có thể xử lý ngôn ngữ Java chạy trên Linux
CREATE FUNCTION thuNho(jpeg_image) RETURNS jpeg_imageAS EXTERNAL NAME ‘a/b/c/dinky.class’ LANGUAGE ‘java’…
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Dựa trên các kiểu dữ liệu có cấu trúc phức tạpĐể định nghĩa kiểu dữ liệu mới phức tạp hơnMột số kiểu phổ biến được hỗ trợ:
ROW(n 1 t1, …, nn tn)
Listof(base)
ARRAY(base)
Setof(base)
Bagof(base)
NHẬN DIỆN ĐỐI TƯỢNG - OID
Uniquely identify a single object over all timeAre simply identifiers and carry no physical information about the object thay identifyAre automatically generated by the DBMS for each object
The web resource pointed at by an URL can change over time
Include network addresses and often file-system names as well
Are user-generated
Oid URL
NOTIONS OF EQUALITY
Deep equal : Two objects having the same type are defined, if
and only if:
The object are of atomic type and have the same value, or
The objects are of reference type, and the deep equals operator is true for the two referenced objects, or
The objects are of structured type, and the deep equals operator is true for all the corresponding subparts of the two objects.
NOTIONS OF EQUALITY
Shallow equal: two objects that have the same reference type (if they both refer to the same object).
NOTIONS OF EQUALITY
Example:create table frames (frameno integer, image jpeg, category integer);create table categories (cid integer, name text, lease_price float,
comments text);create type theater_t as row (tno integer, nametext, address text,
phone integer)create table theaters of theater_t;create table nowshowing (film integer, theaterref(theater_t), start
date, enddate);create table films (filmno integer, title text,stars setof(text), director
text, budgetfloat);create table countries (name text, boundarypolygon, population
integer, language text)
NOTIONS OF EQUALITY
ROW(538, t89, 6-3-97, 8-7-97) ROW(538, t33, 6-3-97, 8-7-97)
Shallow
equal
deep equal
PHÂN CẤP VÀ KẾ THỪA
Defining Types with InheritanceBinding of MethodsCollection Hierarchies, Type Extents, and
Queries
ĐỊNH NGHĨA KIỂU VỚI KẾ THỪA
Instance:
THEATERtno integerName textaddress textphone integer
THEATER-CAFÉMenu texttno integerName textaddress textphone integer
CREATE TYPE theatercafe UNDER theater (menu text)
supertype subtype
ĐỊNH NGHĨA KIỂU VỚI KẾ THỪA
Note: the inheritance mechanism creates
rlationship between the subtype and supertype.(an object of the subtype is also considered to be an object of the supertype.)
The substitution priciple: given a supertype A and a subtype B, it always possible to substitute an object of type B into a legal expression written for objects of type A, without producing type errors.
Inheritance can also be used for atomic types, in addition to row types.
ĐỊNH NGHĨA KIỂU VỚI KẾ THỪA
Instance:
INMAGE JPEG-IMAGE
CREATE FUNCTION display(jpeg_image) RETURNS jpeg_imageAS EXTERNAL NAME ‘/a/b/cjpeg.class’ LANGUAGE ‘java’;
supertype subtype
The display() method for IMAGE does not work for JPEG images!!!
ĐỊNH NGHĨA KIỂU VỚI KẾ THỪA Collection Hierarchies, type Extents,
and Queries
Collection hierarchies: inheritance on tables
• Create table student_emp under emp (gpa float)• Queries on emp also return tuples from student_emp
(unless you say “emp only”
Type extents: al objects of a given type can be selected from a single view (e.g., select * from theater_t)
Probe (pid: integer, time: timestamp, latitude: real, longitude: real, camera: string, video: BLOB)
Thiết kế cơ sở dữ liệu RDBMS
Phụ thuộc hàm PTLN CV P CV
Probes_Loc (pid: integer, time: timestamp,
latitude: real, longitude: real)
Probes_Video (pid: integer, camera: string:, video: BLOB)
“Với probe 10, hiển thị đoạn video được thu từ 1:10pm đến 1:15pm vào ngày 10, 1996”
Thông tin liên tiếp bị phân tán qua các bộ
Thông tin video và location bị phân tách ra
Thiết kế cơ sở dữ liệu RDBMS
Probes_AllInfo (pid: integer, locseq: location_seq, camera: string, video: mpeg_stream)
Thiết kế cơ sở dữ liệu ORDBMS
SELECT display (P.video, 1:10pm, May 10 1996, 1:15pm, May 10 1996)
FROM Probes_Allinfo PWHERE P.id = 10
Với mỗi probe, hãy xuất ra thời gian sớm nhất được ghi lại và loại camera
Sử dụng các tập hợp lồng nhau
Tìm thời điểm sớm nhất được ghi ở latitude =5, và longitude =10
Probes1 (pid: integer, locseq: location_seq)
Probes2 (pid: integer, time:timestamp, latitude: real, longitude: real)
Sự lựa chọn trong thiết kế lược đồ phải phụ thuộc vào lượng workload mong muốn
Tránh lạm dụng tập hợp lồng nhau
1
Lưu trữ và phương thức truy xuất
2
Xử lý truy vấn
3
Tinh chỉnh truy vấn
Các thách thức trong cài đặt ORDBMS
ADT•Khi ADT lớn hơn page •Sử dụng disk-based pointer được duy trì từ các bộ cho đến đối tượng mà nó chứa
Structured object
•Kích thước biến thiên•Đòi hỏi cơ chế sắp xếp đĩa linh hoạt
Array•Theo truyền thống lưu trữ liên tiếp trên đĩa theo từng dòng I/O cao•Chia nhỏ mảng thành các khối gọi là chunk
Lưu trữ đối tượng có cấu trúc và ADT lớn
Xây dựng một interface phương thức truy vấn
Cho phép người dùng cài đặt các cấu trúc chỉ mục bên ngoài
DBMS.
Trong đó chỉ mục và dữ liệu có thể được lưu trong file system
DBMS chỉ đưa ra các yêu cầu lặp đi lặp lại là open, next, close
đến đoạn mã chỉ mục bên ngoài của người dùng.
Tuy nhiên phần dữ liệu ở chỉ mục bên ngoài không được
bảo vệ bởi DBMS cho tính đồng thời và phục hồi.
Chỉ mục trên loại dữ liệu mới
Xây dựng một template cấu trúc chỉ mục chung
Cài đặt trực tiếp trong DBMS
Khắc phục được vấn đề đồng thời và phục hồi.
Ví dụ: Generalised Search Tree (GiST) là một cấu trúc như vậy.
Nó là một template dựa trên cây B+, cho phép hầu hết các cấu
trúc chỉ mục có thể cài đặt với vài dòng ADT code do người dùng
định nghĩa
Chỉ mục trên loại dữ liệu mới
Hàm kết hợp người dùng định nghĩa
Độ tin cậy của phương thức
Method Caching
Pointer Swizzling
Xử lí truy vấn
Sử dụng interpret (thông dịch) phương thức của người sử dụng hơn là compile.
DBMS có thể kiểm tra phương thức có thực hiện tốt hay không trước khi thực thi nó.
Ngôn ngữ thông dịch điển hình là Java
Độ tin cậy của phương thức
Cho phép người dùng biên dịch trên một ngôn ngữ lập trình như C++, nhưng thực thi các phương thức đó ở không gian địa chỉ khác với DBMS.
DBMS sẽ gửi giao tiếp liên tiến trình (IPC) đến phương thức người dùng, và phương thức trả về IPC.
Khắc phục vấn đề làm hư hỏng hệ thống và ngăn chặn các phương thức nguy hiểm đọc và chỉnh sửa cơ sở dữ liệu.
Chú ý là người dùng khi viết phương thức không cần biết DBMS đang thực thi phương thức ở một tiến trình khác.
Sắp xếp bảng trên cột đó hoặc sử dụng lược đồ dựa trên hash
Duy trì cache của phương thức input và những output trùng khớp như một bảng trong cơ sở dữ liệu.
Method Caching
Pointer Swizzling
Đăng ký chỉ mục
Hệ số giảm và chi phí tính toán cho phương thức ADT
Tinh chỉnh phép chọn chi phí cao
Tinh chỉnh truy vấn
Đăng ký chỉ mục với bộ tinh chỉnh
• Điều kiện nào trong mệnh đề WHERE trùng khớp với chỉ mục
• Chi phí nạp một bộ đối với chỉ mục là bao nhiêu
WHAT HOW MUCH
OPTIMIZER
Người dùng tự tính toán Nếu như hàm tính toán đó không được đăng kí thì bộ
tinh chỉnh sử dụng một hệ số giảm tùy ý
Hệ số giảm và chi phí tính toán cho phương thức ADT
Thứ tự tốt nhất trong phép chọn là một hàm của chi phí và hệ số giảm, rank = (hệ số giảm -1 )/cost
Rank lớn thì hoãn phép chọn lại sau khi đã thực hiện phép kết
Tinh chỉnh các phép chọn chi phí cao
PHƯƠNG THỨC ADT
ODMG Data Model
Conceived by ODMG in 1991.Provides a standard model for object
databases.Supports object definiton via ODL.Supports object querying via OQL.Supports a variety of data types and type
constructor.The basis for an OODBMS.
Object vs Class
Collection of objectOBJECT CLASS
Unique oidSame
properties
Using Object Data Language to specify properties of class.
Object Data Language – ODL
ODL supports semantics constructs of OODBMS.
ODL is independent of any programming language.
ODL is used to create object specification (classes and interfaces)
ODL is not used for database manipulation.
Class
Atrributes: atomic type or structured type.
Methods: Functions that can be applied to objects
of the class. No analog to methods in the ER or
relational models.
Class
Relationships: Type is a reference to an object or a
collection such references. Show how an object is related to one or
more objects of the same class or of a different class.
Has a corresponding inverse relationship.
Example
MOVIE
movieName
start: dateend: datemovieName: string
THEATER
theaterName
theaterName: stringaddress: stringticketPrice: integer
numshowing(): float
showAt
nowShowing
Object Query Language - OQL
OQL is ODMG’s query language.OQL works closely with programming
languages such as C++.Embedded OL statement return objects
that are compatible with the type system of the host language.
OQL’s syntax is similar to SQL with additional features for object.
RDBMS versus ORDBMS
RDBMS does not support the extensions that ORDBMS supports.
Relational system is easier to use because there are fewer features to master.
RDBMS is less versatile than an ORDBMS.
OODBMS vs ORDBMS Similarities
Both support user-defined ADTs, structired types, object type and inheritance.
Both support a query language for manipulating collection type:• ORDBMS: extended form of SQL• OODBMS: ODL/OQL.
ORDBMS add OODBMS features to an RDBMS.
OODBMS have developed query language based on relational query language.
Both provide DBMS functionality.
OODBMS vs ORDBMS Differences
OODBMS try to add DBMS functionality to a programming language, whereas ORDBMS try to add richer data type ro a relational DBMS.
OODBMS aim to achieve seamless integration with a programming language, whereas it’s not an important goal for an ORDBMS.
OODBMS vs ORDBMS Differences
The query facilities of OQL are not support efficiently in most OODBMS, whereas they are the centerpiece of an ORDBMS.
OODBMS have been optimized to directly support object oriented applications and specific OO languages.
ORDBMSs are supported by most of the ‘major players’ in the DBMS market place.