Please send questions to
st10@humboldt.edu .
* OODBMS - object-oriented database management
system
* ORDBMS - object-relational database management
system
* an object DBMS -- should be a database of objects
potential OODBMS advantages:
* would be great if it could be integrated
with the OO programming language
* because then the programmer could get
object persistence without even having
to learn SQL/database language
* automatic method storage/retrieval
* user-defined types
* complex data can be readily processed
* you aren't limited to 1:1, 1:N, N:M --
no need for foreign keys, primary keys,
etc.
* (related via superclass/subclass)
* (can relate data more richly than you can
with relations...)
* automatic persistent object id's
OODBMS potential disadvantages
* requires object-oriented programming
* little existing data already in object form
* nonexistent/poor query and reporting tools
* limited concurrency control and transaction
management (currently)
* unproven performance (currently)
* substantial change and learning required
(depending on one's starting point...)
A few additional notes:
* OODBMS standards are being worked on...
* SQL3 - attempts to extend the SQL standard
to include support for object-oriented
database management;
* ODMG - from a consortium of object database
vendors -- (heritage: object programming!)
* trying to define interfaces for object
data management products;
* the "Manifesto" paper gives its opinion about
the MINIMUM features it believes a system must
support to TRULY call itself an OODBMS:
LIKE MODERN RDBMS...
* persistence
* secondary storage management
* concurrency control
* recovery
* ad-hoc query facility
("high-level, efficient, and application
independent")
LIKE IS EXPECTED IN AN OO-PARADIGM...
* should support complex objects
* should support object identity
("objects can be uniquely identified even
if their data completely matches another
object")
* should support encapsulation
("an object will encasulate both a program
and its data")
* should support types or classes
(either Smalltalk or C++/Java objects)
* should support inheritance!
* should support overriding, overloading,
and polymorphism (late binding)
* should support extensibility
The Manifesto paper also lists some optional-but
desirable features...for example,
* multiple-inheritance
* type-checking and type-inferencing
* distributed
* version-control