Download Object-Oriented Database

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

SQL wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Clusterpoint wikipedia , lookup

Relational algebra wikipedia , lookup

Relational model wikipedia , lookup

Versant Object Database wikipedia , lookup

Database model wikipedia , lookup

Transcript
Object-Oriented Database
Felipe Brigalante
Hugo Mitsumori
Revisor: Mateus Rocha Mazzari
1
Database
●
Collection of related data with inner meaning
●
Represents real world aspects
●
Can be maintained and manipulated using a DBMS
●
Can be used by applications to provide data persistence
●
Different model types. Ex: relational, document, graph, key-value, objectoriented, etc
2
Relational Databases
●
Created in 1970
●
Store and access of data via relations (tables)
●
Conceptual model and physical storage
●
Structured Query Language
●
PC’s and Large servers
●
The most used for traditional applications
3
Object mapping issues for relational databases
●
Encapsulation
●
Inheritance
●
Data types
●
Structural
4
The appearance of OODB
●
Advent of the oriented-object languages
●
Necessity to store and share complex objects
●
80s: begin of researches for OODB
○
Development of the first OODB Management Systems
●
Lack of standards
●
ODMG fundation
●
Today: Object-Relational Databases
5
General Features
●
Complex Objects
●
Object Identity
●
Encapsulation
●
Types and Classes
●
Hierarchy
●
Overriding, overloading, late binding
6
General Features
●
Complex Objects
○
Simple Objects: Integers, Chars, booleans, byte strings, etc
○
Constructors: List, Bags, Arrays, Sets, Tuples, etc
○
Complex Objects: Simple Objects with “constructors”
○
Operations: Deletion and Update propagations, copy
7
General Features
●
Object Identity
○
Identity vs Equality
○
Object Sharing
○
Object Update
○
Operations: Object Assignment, Copy, Equivalence Tests
8
General Features
●
Encapsulation
○
Data and operation
○
Indirect access to data and restriction
○
Hidden data information and operations implementation
○
Logical data independence
9
General Features
●
Types and Classes
○
○
Type: summarizes common features of a set of objects
■
Interface + Implementation
■
Only the Interface is visible
Class
■
Concrete structure
■
Two aspects: Object Factory and Object Warehouse
■
Manipulation of Objects
10
General Features
●
Hierarchies (Inheritance)
○
Substitution
○
Inclusion
○
Constraint
○
Specialization
11
General Features
●
Overriding, overloading and late binding
○
Overloading: different signatures for the same method
○
Overriding: substitute the implementation of a method
○
Late binding: bind operations names with the program at run-time
12
Other Mandatory Features
●
●
●
●
●
●
●
Computational Completeness
Extensibility
Persistence
Secondary storage management
Concurrency
Recovery
Ad Hoc Query facility
13
Standards
●
Object Data Management Group (ODMG), put a set of specifications with
respect to:
○
○
○
○
●
Data Schema
Programming Language Bindings (Smalltalk, Java and C++)
Data Manipulation
Query Languages
Between 1993 and 2001, the ODMG published five revisions to its
specification. The last revision was ODMG version 3.0, after which the
group disbanded.
14
Object Definition Language
1.
Defined by ODMG standards
2.
Defines the interface to object types
3.
Creates an abstraction layer, making data language and database
implementation independent
15
Object Definition Language - Banking Example
Cardinality constraint: each loan belongs to a single branch
16
Object Definition Language - Example
interface Customer {
attribute integer ss#;
attribute string name;
attribute Struct Addr {string street, string city, int zip} address;
relationship Set<Loans> borrowed inverse Loans::borrower;
relationship Set<Branch> has-account-at inverse Branch:patrons;
key(ss#)
}
17
Object Definition Language - Example
interface Loan {
attribute real amount;
attribute int loanid;
attribute Enum loanType {house, car, general} type;
relationship Branch belongs-to inverse Branch::loans-granted;
relationship Set<Customer> borrower inverse Customer::borrowed;
key(loanid)
}
18
Object Definition Language - Example
interface Branch {
attribute integer branchid;
attribute Struct Customer::Addr location;
relationship Se<Loans>t loans-granted inverse Loans::belongs-to;
relationship Set patrons inverse Customer::has-account-at;
key(branchid);
}
19
ODL Type System
●
Basic types: int, real/ float, string, enumerated types, and classes
●
Type constructors: Struct for structures and four collection types: Set, Bag,
List, and Array
20
ODL Subclasses
●
●
Example: Faculty and Staff are subclasses of Employee. Faculty have
academic year (9 month salaries) but staff has a full-year (12 month
salary)
Follow name of subclass by colon and its superclass.
○
●
interface Faculty:Employee { attribute real academic-year-salary; }
Objects of the Faculty class acquire all the attributes and relationships of
the Employee class.
21
Object Query Language
●
●
●
Developed by ODMG, Object Query Language allows SQL-like queries to
be performed on a OODB
Like SQL, it is a declarative language. Based loosely on SQL, OQL includes
additional language constructs which allow for object oriented design
such as operation invocation and inheritance.
OQL only refers to SELECT statements. SQL includes both DDL and DML
statements.
22
Object Query Language - Example
●
List all books written by someone whose name starts with ‘Camus’
○
SQL:
■
○
●
SELECT Book JOIN Artist ON Book.written_by = Artist.id WHERE Artist.name LIKE ’
Camus%’
OQL:
■ SELECT Book WHERE Book.writer.name LIKE ’Camus%’
Audio, Video and Book are subclasses of Item. How to list items not being
produced by a French company
○
SELECT Item WHERE item.producer.country != ’France’
23
Native Queries
●
●
In 2005 was proposed to drop all standardization efforts to introduce
additional object-oriented query APIs but rather use the OO programming
language itself
Example using db4o with Java native query:
○
// Find all the Brians
ObjectSet brians = db.get(new Person("Brian", null, 0));
while (brians.hasNext())
System.out.println(brians.next());
24
Advantages and disadvantages
Advantage
●
●
●
●
●
●
Complex objects & relations
Class hierarchy
No impedance mismatch
One data model
High performance on certain tasks
Less programming effort because
of inheritance, re-use and
extensibility of code
Disadvantage
●
●
●
Schema change (creating, updating)
is non trivial, it involves a system
wide recompile.
Language dependence: tied to OO
languages (or specific languages
when using native queries)
Lack of Ad-Hoc query
25
Bibliographic References
●
The Object-Oriented Database System Manifesto
●
http://wwwbayer.in.tum.de/lehre/WS2001/HSEM-bayer/OODBMS.pdf
●
http://www.ics.uci.edu/~dbclass/ics184/class-notes/odl.pdf
●
Sistemas de Bancos de Dados (6a edição), Elmasri e Navathe. Pearson, 2010
●
Foundations of object relational mapping, Mark Fussell
26