seminar

85
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.MSSV WHERE pc.nhomTruong = 0912469

Upload: rodd

Post on 11-Jan-2016

49 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

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

NỘI DUNG

Object-Database

Extend New data

Identity

Inheritance

DesignChallenge

ODL, OQL

Compare

VÍ DỤ THỂ HIỆN

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

Setof, listof, arrays, tuples…

KIỂU DỮ LIỆU MỚI

Tính kế thừa

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

NHẬN DIỆN ĐỐI TƯỢNG - OID

FILE SYSTEM

Data object

NHẬN DIỆN ĐỐI TƯỢNG - OID

FILE SYSTEM

Data object

DBMS

?

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

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)

THIẾT KẾ CSDL ĐỐI TƯỢNG

Loại cấu trúc và ADT

Probe

Camera type

Loại cấu trúc và ADT

Video stream

Loại cấu trúc và ADT

Time Location (latitude, longitude)

Loại cấu trúc và ADT

Probe Video stream Time Location (latitude, longitude)

Loại cấu trúc và ADT

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

JML
nên đọc và làm thêm ở slide này trong tài liệu

Xóa

Cập nhật

Chia sẻ và copy

Chi phí lưu trữ

Phân nhóm

Định danh đối tượng

Định danh

đối tượng

(Oid)

Khóa ngoại

(Foreign key)

Định danh đối tượng

Mở rộng mô hình ER

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

THÁCH THỨC

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

Chỉ mục trên loại dữ liệu mới

INDEX

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

Hàm kết hợp người dùng định nghĩa

Initialize

Iterate

Terminate

User-

defined Aggregation

Function

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

ODL, OQL

Objectives

Overview of ODMG Data Model Object Data Language – ODLObject Query Language - OQL

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

CLASS

attributes

relationships

methods

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

Example

Example

Example

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.

Example

Example

Example

SO SÁNH

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.

THE END