610 likes | 623 Views
This chapter provides an overview of the motivation behind object database management systems, the principles of object-oriented programming, and different architectures for managing object databases. It also discusses the integration of complex data with simple data, type system mismatch, and provides examples of applications that can benefit from object database technology.
E N D
Chapter 18 Object Database Management Systems
Outline • Motivation for object database management • Object-oriented principles • Architectures for object database management • Object database definition and manipulation in SQL:2003 • Object database definition and manipulation in Oracle 10g
Motivation: Complex Data • Most relational DBMSs support only a few data types. • Many business applications require large amounts of complex data such as images, audio, and video. • Integration of complex data with simple data drives the demand for object database technology
Motivation: Type System Mismatch • Increasing use of database access in procedural code • Different data types used in programming languages versus DBMSs • Data type mismatch makes software more difficult to develop. • A relational DBMS cannot perform elementary operations on complex data.
Application Examples • Dental Office Support • Real Estate Listing Service • Auto Insurance Claims
Object-Oriented Principles • An object is a combination of data and procedures. • A class is a prototype that defines the variables and methods common to all objects of the class. • Three underlying principles: encapsulation, inheritance and polymorphism.
Encapsulation • Objects can be accessed only through their interfaces. • Classes can be reused rather than just individual procedures. • More complex classes can be defined using simpler classes. • Provides a form of data independence.
Bond Class Example CLASS Bond { // VARIABLES: ATTRIBUTE Float IntRate; ATTRIBUTE Date Maturity; // METHODS: Float Yield(); // Computes the Bond’s Yield };
Inheritance • Sharing of data and code among similar classes (classes and subclasses). • Inherit variables and methods from parent classes • Use methods and variables of ancestor classes • Provides an improved organization of software and incremental reusability.
Polymorphism • Ability to choose among multiple implementations • Benefits • Incremental modification of code • Smaller vocabulary of method names • Requesting a method execution involves sending a message to an object • Client-server processing and object-oriented computing are closely related.
Binding • Associating an implementation with a message • Static binding • Performed at compile-time • More efficient but less flexible • Dynamic binding • Performed at run-time (late binding) • More flexible but less efficient
Strong Type Checking • Complex expressions can involve many methods and objects • Incompatibility errors common in code • Ability to ensure that programming code contains no incompatibility errors • An important kind of error checking for object-oriented coding
Programming Languages versus DBMSs • Programming languages have used object-oriented principles for many years. • Programming languages emphasize software maintenance and code reusability. • Object DBMSs are more recent. • Relax encapsulation to reference an object’s data in a query. • Simpler inheritance mechanisms in DBMSs
Object Database Architectures • Adding object-oriented features to a DBMS is a good idea • Many approaches about the features to add and how features should be added. • Some approaches provide small extensions that leave object features outside the DBMS. • Other approaches involve a complete rewrite of the DBMS to accommodate objects • Marketplace will determine best approaches
Large Objects and External Software • Large object storage along with external software to manipulate large objects • BLOB and CLOB data types • The large object approach is simple to implement and universal. • The large object approach suffers from serious performance drawbacks.
Specialized Media Servers • Dedicated server manages complex data • Application programming interface (API) to access complex data. • Good performance for specific kinds of complex data • Limited range of operations supported • Poor performance when combining simple and complex data
Object database middleware • Middleware to manage complex data stored outside of a database along with traditional data stored in a database • Integrate complex data stored on PCs and remote servers with relational databases • Possible performance problems because of a lack of integration with a DBMS.
Object-Relational DBMS • A relational DBMS extended with an object query processor for user-defined data types • User-defined types for complex data • User-defined functions in SQL statements • SQL:2003 standard • Good integration of complex data with reliability of relational DBMS
Typical User-Defined Types • Audio • Video • Text • Image • Spatial • Time series • XML
Other Object Features • Subtable families • Reference and row data types • Nested tables
Object-Oriented DBMS • A new kind of DBMS designed especially for objects. • Object-oriented DBMSs have an object query processor and an object kernel. • The Object Data Management Group (ODMG) provides the standard for object-oriented DBMSs.
Summary of Architectures • Market niche for each architecture • Simpler architectures less popular over time • Object database middleware coexist with other approaches • Object-relational approach dominates object-oriented approach
SQL:2003 Object Features • Very large standard • Core language part • Parts and packages for non core features • Details about basic and enhanced object support • Two levels of conformance
SQL:2003 Parts • Core parts (1,2,11): framework, foundation, schemas • Non core parts • Call level interface • Persistent stored modules • Management of external data • Object level bindings • XML specifications
SQL:2003 Packages • Enhanced data-time facilities • Enhanced integrity management • Basic object support • Enhanced object support • Active databases • OLAP facilities
User-Defined Types • Bundles data and procedures • Support definition of structured types, not just extensions of standard types • Use as data types for columns in tables, passed as parameters, and returned as values • User-defined functions can be used in expressions in the SELECT, the WHERE, and the HAVING clauses.
Explicit Methods • Return single values and use input parameters • Implicit first parameter: part of user-defined type • CREATE METHOD statement for method body • Mutation methods: change values • Procedures and functions not associated with types
Implicit Methods • Automatically exist for all user-defined types • Constructor method: creates an empty instance • Observer methods: retrieve values • Mutation methods: change values
User-Defined Type Usingan Array Example 2: Triangle type using an ARRAY CREATE TYPE Triangle AS ( Corners Point ARRAY[3], Color INTEGER ) METHOD Area() RETURNS FLOAT, -- Computes the area METHOD Scale (Factor FLOAT) RETURNS Triangle -- Computes a new triangle scaled by factor NOT FINAL;
User-Defined Type Using a Multiset Example 3: Polygon type using an ARRAY CREATE TYPE Triangle AS ( Corners Point MULTISET, Color INTEGER ) METHOD Area() RETURNS FLOAT, -- Computes the area METHOD Scale (Factor FLOAT) RETURNS Polygon -- Computes a new polygon scaled by factor NOT FINAL;
Table Definitions • Traditional style: foreign keys to link tables • Typed tables: supports object identifiers and object references • Row type constructor: supports rows as variables and parameters
Subtable Families • A table can be declared as a subtable of another table. • A subtable inherits the columns of its parent tables. • SQL:2003 limits inheritance for tables to single inheritance. • Set inclusion determines the relationship of a table to its subtables.
Subtable Side Effects • Subtable insert: corresponding row is inserted into each ancestor table. • Parent update: column updated in all direct and indirect subtables • Inherited column update: column is changed in each ancestor table • Deletion: every corresponding row in both parent and subtables is also deleted.
Manipulating Complex Objects and Subtable Families • Path expressions to manipulate columns with row references. • References to methods in expressions using the dot notation • Testing membership in a specific table without being a member of any subtables.
Oracle 10g Object Features • Supports most parts of the SQL:2003 object packages • User-defined types • Typed tables • Other object features