[comp.databases] Extended RDB vs OODB

mitchell@wdl1.UUCP (Jo Mitchell) (08/03/89)

  For those of us who are interested in CAD/CAM, CASE applications ...

  After watching the oodb action and "extended" rdb action for awhile I'm
  of the opinion that all the extended rdb's will eventually turn into an
  oodb (at least at the conceptual level).

  Because of this it seems most application developers will decide to "convert"
  via the route with the least slope - by staying with an evolving rdb... 

  Comments?
==============================================================================

     //        o    "Mommy mommy I don't want to go to Europe"  
   (O)        ( )    Jo Mitchell 
  /    \_____( )     (408)473-6273
 o  \         |      ARPA: mitchell@wdl1.fac.ford.com 
    /\____\__/
  _/_/   _/_/
~

dlw@odi.com (Dan Weinreb) (08/09/89)

In article <3560052@wdl1.UUCP> mitchell@wdl1.UUCP (Jo Mitchell) writes:

     For those of us who are interested in CAD/CAM, CASE applications ...

     After watching the oodb action and "extended" rdb action for awhile I'm
     of the opinion that all the extended rdb's will eventually turn into an
     oodb (at least at the conceptual level).

     Because of this it seems most application developers will decide to "convert"
     via the route with the least slope - by staying with an evolving rdb... 

     Comments?

Many CAD and CASE applications currently don't use any existing DBMS,
relational or otherwise.  Or if they do, they only use it at a high
level of granularity, or for peripheral functions.  Few or none of
them use a relational DBMS to store, say, individual transistors, or
whatever are the small elements in which the program primarily deals.
Since they're not using a relational DBMS now, there's no issue of
"staying with an evolving rdb".

Dan Weinreb		Object Design, Inc.		dlw@odi.com

rich@osc.COM (Richard Fetik) (08/09/89)

In article <3560052@wdl1.UUCP> mitchell@wdl1.UUCP (Jo Mitchell) writes:
>
>
>  For those of us who are interested in CAD/CAM, CASE applications ...
>
>  After watching the oodb action and "extended" rdb action for awhile I'm
>  of the opinion that all the extended rdb's will eventually turn into an
>  oodb (at least at the conceptual level).
>
>  Because of this it seems most application developers will decide to "convert"
>  via the route with the least slope - by staying with an evolving rdb... 
>
>  Comments?

The problem that relational dbs and their to-be-expected object offspring and
frontends will encounter is a relative (pun) lack of performance.  For the
set of sufficiently complex applications object database performance will be
some orders of magnitude faster than could be achieved with an rdbms.  This
set of applications includes engineering tasks such as CAE, CASE, CAD/CAM,
CIM, etc.  There will always be a set of applications for which relational
databases are the right choice, but they can not be 'grown' into object 
databases without throwing large portions of them out and redesigning from
the ground up.  These large portions may include their storage managers, etc.

If the application really needs an oodb, then use one now - why wait ?
If you're satidfied with the performance you're getting from the commercial
rdb or in-house database you're using, then the evolution strategy that the
relational companies are following is not going to make much difference to
you.  Clearly, the object database market is in the position that the
relational market was in some years ago, and the tools and company
stability/size are yet to be released from the object companies, etc.
The customer that can afford to wait for a year or so may choose to do so,
but for the user community that require the performance and ease of real world 
modelling that can be provided by oo programming and data storage there are
real solutions arriving in your neighborhood shortly.

And yes, I do work for an oodb company, but I chose to do so because I
really believe that this type of product/modelling paradigm will become
the most common eventually, due to the technical advantages.

Whew!!!

Please stick IMHOs in everywhere above;-).  (flame in email please).

Well, you asked for comments...


-- 
					rich@osc.osc.com     415-325-2300
					uunet!lll-winken!pacbell!osc!rich

dennism@menace.rtech.COM (Dennis Moore (x2435, 1080-276) INGRES/teamwork) (08/10/89)

In article 3386, dlw@odi.com (Dan Weinreb) writes:

||In article <3560052@wdl1.UUCP> mitchell@wdl1.UUCP (Jo Mitchell) writes:
||
||For those of us who are interested in CAD/CAM, CASE applications ...
||
||After watching the oodb action and "extended" rdb action for awhile I'm
||of the opinion that all the extended rdb's will eventually turn into an
||oodb (at least at the conceptual level).
||
||Because of this it seems most application developers will decide to "convert"
||via the route with the least slope - by staying with an evolving rdb... 
||
||Comments?
|
|Many CAD and CASE applications currently don't use any existing DBMS,
|relational or otherwise.  Or if they do, they only use it at a high
|level of granularity, or for peripheral functions.  Few or none of
|them use a relational DBMS to store, say, individual transistors, or
|whatever are the small elements in which the program primarily deals.
|Since they're not using a relational DBMS now, there's no issue of
|"staying with an evolving rdb".
|
|Dan Weinreb		Object Design, Inc.		dlw@odi.com

This is common disinformation that OODB companies have been spreading in
an attempt to generate a "need" for their product.  Most CASE companies
use RELATIONAL databases at the hearts of their products.  For instance,
Cadre (teamwork) have used a number of commercial databases on different
platforms, and are forging a MUCH CLOSER relationship with my company (RTI).
IDE (Software through Pictures) uses an in-house RDBMS called TROLL, and are
forging a MUCH CLOSER relationship with Sybase.

Many databases have substantial object-oriented features;  many of these
databases are traditional RDBMSs.  There is no exclusivity between OO- and
R- DBMSs.  For instance, INGRES (from RTI, my company) has stored database
procedures and an object-oriented dictionary in the current product.  We
have announced at our users' convention that we will have rules (i.e. when
something happens to data, perform some action), triggers, alerters, and
substantial OO constructs in our 4GL.  These features will improve our
usability in several types of applications: data dictionaries
(CASE/CAD/CAM/CAE/etc.), computer integrated manufacturing (CIM), expert
systems, and others.

I suggest that we will have all these object oriented features before these
OODBMS companies have distributed database, development tools, bug elimination,
installed base, customer-driven features, third party developers, high
performance, and all the other things we expect for our $2K per user.

Dennis Moore, my own opinions etc etc etc

NOTE:  this was not intended as a commercial endorsement;  I merely used the
examples I know best.

jack@odi.com (Jack Orenstein) (08/10/89)

In article <3560052@wdl1.UUCP>, mitchell@wdl1.UUCP (Jo Mitchell) writes:
> 
> 
>   For those of us who are interested in CAD/CAM, CASE applications ...
> 
>   After watching the oodb action and "extended" rdb action for awhile I'm
>   of the opinion that all the extended rdb's will eventually turn into an
>   oodb (at least at the conceptual level).
> 
>   Because of this it seems most application developers will decide to "convert"
>   via the route with the least slope - by staying with an evolving rdb...
 
I assume that by "extended rdb" you mean a relational database system
that permits instances of object classes to be stored in fields of
tuples, instead of just numbers and strings.

There are different kinds of application developers, and they will
have different paths to (or around) DBMSs.  An important question is
what are these developers doing about persistent storage now?  Some
CAx application developers store data in DBMSs, using "long fields",
in which they can dump and then retrieve byte strings that have to be
interpreted in the application code. Retrieval based on the content of
such fields is possible only to the extent that other int or string
attributes store summary information.  An extended relational DBMS can
certainly be built on top of a long field facility, and it would be
surprising if a number of relational DBMSs did not go this route,
turning their relational systems into "born-again" OO DBMSs. This
would probably be appealing to CAx developers who are currently using
long fields.

On the other hand, many CAD/CAM and CASE developers have bypassed
relational DBMSs due to performance problems.  Such people have built
their own, or have built on top of file systems. Since these users are
not using any DBMSs currently, I don't agree that the proposed
conversion scenario applies to them. Many users who have gone this
route are becoming aware that OO DBMSs will meet their requirements
for expressiveness, integration with the host language and, maybe most
importantly, performance. I don't think that such users will be
convinced by a thin layer of paint on top of something they considered
and rejected before.


Jack Orenstein
Object Design, Inc.

davidm@cimshop.UUCP (David Masterson) (08/11/89)

>On the other hand, many CAD/CAM and CASE developers have bypassed
>relational DBMSs due to performance problems.
>
Could you elaborate on the performance problems in this case?  I mean is it
inherit in what the CAD/CAM or CASE developers are doing that leads to
performance problems with relational databases or is it just they chose the
wrong (aka. slow) relational database system?  Perhaps there are things that
OODBMSs can be optimized to do better than a relational database system, but I
still think that a relational database can provide a strong foundation for an
object-oriented database.  I'd like to hear why that can't be true.

David Masterson
uunet!cimshop!davidm

speyer@joy.cad.mcc.com (Bruce Speyer) (08/11/89)

In article <458@cimshop.UUCP> davidm@cimshop.UUCP (David Masterson) writes:
>>On the other hand, many CAD/CAM and CASE developers have bypassed
>>relational DBMSs due to performance problems.
>>
>Could you elaborate on the performance problems in this case?  I mean is it
>inherit in what the CAD/CAM or CASE developers are doing that leads to
>performance problems with relational databases or is it just they chose the
>wrong (aka. slow) relational database system?  Perhaps there are things that
>OODBMSs can be optimized to do better than a relational database system, but I
>still think that a relational database can provide a strong foundation for an
>object-oriented database.  I'd like to hear why that can't be true.
>
>David Masterson
>uunet!cimshop!davidm


If an application must cross its process boundary in order to communicate with
the database system it probably is at least two orders of magnitude too slow.
That is why all of the C++ based OODBMS efforts are using the application memory
heap for the cache.

CAE applications (I don't know about CASE) are highly iterative and work around
directed graphs.  The cost of navigating or accessing attributes must be as few
instructions as possible.

I don't know of a relational system which can or could support this type of
activity.  The C++ based OODBMS systems are being developed to meet this
criteria.

Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 

Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 

mitchell@wdl1.UUCP (Jo Mitchell) (08/11/89)

	So does this mean an object oriented dbms can not, by performance
	necessity, be built above a rdbms?  (If performance is the key, than
	an oodbms built in such a manner would require some heavy duty
	optimization - the joins would be incredible).  It also 
	makes sense that adding another layer would make a slower
	system - comparable to an extended rdbm.

	Now, if the oodbms is not built above the "proven" relational algebra
	what should it be built above? Prolog? Now what are we talking about?
	Object-oriented DBs or deductive DBs?
==============================================================================

     //        o      ARPA: mitchell@wdl1.fac.ford.com
   (O)        ( )     
  /    \_____( )	"Mommy mommy I don't want to go to Europe"	
 o  \         |  
    /\____\__/
  _/_/   _/_/
~

dennism@menace.rtech.COM (Dennis Moore (x2435, 1080-276) INGRES/teamwork) (08/11/89)

There are some very complicated queries that CASE tools generally need to
do, which can be slow, regardless of whether an OODB or RDBMS is used,
depending on the implementation.  For instance, "get me all systems which
reference this variable" can be a many-table join when coded in the simplest,
most normalized, least RDBMS-efficient way.  Another example is "save this
object as a new version of this object," which can involve obtaining a new
logical key (a bottleneck) and saving a new version of the object in a
catalog (another bottleneck).  There are efficient and inefficient ways to
code this and other CASE-necessary functions.

Another area of concern is generally that CASE models are highly volatile.
For instance, the name (which is often a primary key) of an object may be
changed many times; the same object may appear in multiple locations of the
same or different models; objects are inserted, deleted, and resurrected;
and many thousands of objects may be in the same "databases."

I think many CASE vendors (our own partners [Cadre] included) tried to
implement poorly-defined data models of their CASE dictionaries on top of
poorly chosen RDBMS's with very little in-house knowledge of RDBMS techniques
at some time in the past, and came up with (surprise!) a poorly performing
system.  In addition, CASE vendors tend to be proprietary-minded and suffer
from a large dose of NIH syndrome, not to mention "we can do anything better
than the big guys" disease.  In our partnership, we have educated our
counterparts, prototyped a better design, and convinced them that RDBMS's
are the way to go.

-- Dennis Moore, Manager, INGRES/teamwork CASE product development
My own opinions blahhhhhhhhh

dlw@odi.com (Dan Weinreb) (08/11/89)

In article <3324@rtech.rtech.com> dennism@menace.rtech.COM (Dennis Moore (x2435, 1080-276) INGRES/teamwork) writes:

   |Many CAD and CASE applications currently don't use any existing DBMS,
   |relational or otherwise.  Or if they do, they only use it at a high
   |level of granularity, or for peripheral functions.  Few or none of
   |them use a relational DBMS to store, say, individual transistors, or
   |whatever are the small elements in which the program primarily deals.
   |Since they're not using a relational DBMS now, there's no issue of
   |"staying with an evolving rdb".

   This is common disinformation that OODB companies have been spreading in
   an attempt to generate a "need" for their product.  

If you intend to use comp.databases as a forum for insult and
invective rather than information and discussion, I won't continue to
reply to your postings.

						       Most CASE companies
   use RELATIONAL databases at the hearts of their products.  For instance,
   Cadre (teamwork) have used a number of commercial databases on different
   platforms, and are forging a MUCH CLOSER relationship with my company (RTI).
   IDE (Software through Pictures) uses an in-house RDBMS called TROLL, and are
   forging a MUCH CLOSER relationship with Sybase.

I stand by my statement, above.  The largest U.S. CASE company, Index
Technologies, does not use any DBMS in its product.  They have
carefully considered the question and decided that existing DBMS
technology is inadequate for what they want to do.  The major ECAD
companies do not use any RDBMS for anything, or at least not for
anything at the heart of their systems.

To explain what I mean by this, consider the following questions:

Can you name one serious ECAD system in which each gate and each wire
of a schematic is represented by one or more tuples in a relational
database system?  That runs simulations or design rule checks by accessing
the relational database system for each circuit element?

Can you name one serious CASE system in which each, say, box and
connection of a dataflow diagram is represented by one or more tuples
in a relational database system?  That refreshes its video display by
accessing a relational database for each of these little elements?

This isn't generally done because (a) the performance would be
unacceptable, and (b) the amount of programming needed to translate
between the datatypes and computational constructs of a relational
database and of a programming language would be too painful.

Those CAD systems that are built on relational databases use them
almost exclusively for selection, and sometimes for projection, but
perform or precompute joins in the program memory of the design tools.
Such tools read the appropriate chunk of the database at startup, and
build internal record and pointer structures from it in virtual
memory.  Thus, a design session starts by copying one part of the disk
into another.  At the end of the session, the internal structures are
converted back to tuples and written to the database.  This loading
and unloading can be very slow compared to the time to make small
change in a design.  Most CAD systems don't even work this way: they
store their data in files, in the operating system's file system.

   Many databases have substantial object-oriented features;  

Unfortunately, the phase "object-oriented" is used to cover so many
different areas that it's hard to conduct a meaningful conversation
about what "object-oriented database" means.  Certainly, you can store
strings representing SQL strings in a relational database.  Certainly,
you can add "rule" and "trigger" features to a relational database
system.  And these are useful, and people will use them.

However, the introduction of these features still won't result in each
gate and each wire being represented as an element in the database
system.  The really interesting data like gates and wires will still
have to be stored in files in a file system, just as they are now in
every real ECAD system.

In the view of the people in the OODBMS companies, we will have
succeeded when there is no longer any need for a CAD/CASE company to
use the operating system's file system for anything at all, and when
the CAD/CASE tool can be written in a single, unified language, with
no translation between normalized relational tuples on the one hand,
and a programming language with its type system on the other hand.
And all this without performance degradation.

A particular requirement is that fetching a data value out of the
database system must be as fast as fetching a component of a structure
(record) in the programming language.

That's what I really mean by "object-oriented database system".  A
relational system with extra added "object-oriented features" like
rules and triggers, while it has its uses, does not solve the problem
that we are trying to solve.  Those "features" are beside the point;
beside our point, anyway.  These problems cannot be solved by taking a
relational database system and adding some new "features".

We have presented our ideas to a range of leading CAD, CASE, and
related companies.  Many of them are very interested in seeing such a
system, and most realize that they aren't likely to get it from
relational database technology.  The leading technical people at these
companies are quite sophisticated about software technology; they
can't be "fooled" by simplistic "disinformation".  Being
sophisticated, they are of course skeptical of all future claims until
they see real working systems.  But they also have a good
understanding of what exists now, and why it works the way it does.

In fact, several of these companies, who can't wait for the new
OODBMS's and obviously can't be sure when those new system will
appear, have been working on in-house solutions, usually very
specialized OODBMS's (in the sense that I use the term) tailored for
their own application.  They realize that their in-house systems are
stopgap measures, and hope to replace them with a more general,
complete, tuned commercial OODBMS product at some point.  They would
not be doing this if they saw the solution coming soon from the
relational companies.  (The solution to the problem I'm talking about
-- not to the ones that you're talking about, for which relational
technology works OK.)

Certainly many CAD/CASE systems will still need to communicate with
relational database systems, since a lot of important data is and will
be stored in RDBMS's.  OODBMS's will not replace RDBMS's, and are not
trying to.  Rather, they are trying to answer new needs that will not
be answered by RDBMS's.  The mature, advanced CAD/CASE systems of the
future will use both kinds of database system.

For anyone interested in a deeper discussion of these points, I
recommend a short paper called "Making Database Systems Fast Enough
for CAD Applications", by David Maier.  It's in an excellent anthology
entitled "Object-Oriented Concepts, Databases, and Applications",
edited by Won Kim and Frederick Lochovsky, ACM Press/Addison Wesley
1989, ISBN 0-201-14410-7.  It's a new book and should be relatively
easy to find.

dlw@odi.com (Dan Weinreb) (08/11/89)

In article <3560053@wdl1.UUCP> mitchell@wdl1.UUCP (Jo Mitchell) writes:

   So does this mean an object oriented dbms can not, by performance
   necessity, be built above a rdbms?  (If performance is the key, than
   an oodbms built in such a manner would require some heavy duty
   optimization - the joins would be incredible).  It also 
   makes sense that adding another layer would make a slower
   system - comparable to an extended rdbm.

That's right, by my definition of "object-oriented DBMS".  Although a
relational database system can be enhanced with many features that are
often associated with "object-orientation", the kind of DBMS needed by
CAD/CASE/CAP/etc systems for "high performance for fine-grain
manipulation of small, persistent objects" requires a totally
different underlying storage architecture.  Bruce Speyer's point about
the high cost of switching address space/process context is quite
right; this is one of the important factors.

(The relational database fans will point out that there are drawbacks
to using the application process's address space, mainly that
application bugs causing "wild stores" can damage data.  Yes, that's
true; it's a tradeoff.  It's not all that much worse than the current
situation, in which application bugs can write garbage to files.)

   Now, if the oodbms is not built above the "proven" relational algebra
   what should it be built above? Prolog? Now what are we talking about?
   Object-oriented DBs or deductive DBs?

No, Prolog and "deduction" don't have much to do with the goals that
we're trying to achieve for CAD/CASE/etc. systems, although these
ideas are interesting and useful for their own domains.  Generally, we
see a need for seamless integration with the underlying programming
language.  The language in question, for our applications, is C++; the
CAD and CASE vendors have made it clear that C++ is what they want.
So C++ must be the starting point.  Then it's possible to go beyond
C++ to provide access to things that a database system does well, such
as queries over sets and representations of relationships.  This is an
area that's still being explored.

Dan Weinreb		Object Design, Inc.		dlw@odi.com

jack@odi.com (Jack Orenstein) (08/12/89)

In article <458@cimshop.UUCP> davidm@cimshop.UUCP (David Masterson)
writes (quoting a posting of mine):

>>On the other hand, many CAD/CAM and CASE developers have bypassed
>>relational DBMSs due to performance problems.
>>
>Could you elaborate on the performance problems in this case?  I mean is it
>inherit in what the CAD/CAM or CASE developers are doing that leads to
>performance problems with relational databases or is it just they chose the
>wrong (aka. slow) relational database system?  Perhaps there are things that
>OODBMSs can be optimized to do better than a relational database system, but I
>still think that a relational database can provide a strong foundation for an
>object-oriented database.  I'd like to hear why that can't be true.
>
>David Masterson
>uunet!cimshop!davidm

Dan Weinreb, a co-worker of mine, has just posted a very thorough
discussion of this point, so I'll refer you to his article.

Jack Orenstein
Object Design, Inc.

jack@odi.com (Jack Orenstein) (08/12/89)

In article <3560053@wdl1.UUCP> mitchell@wdl1.UUCP (Jo Mitchell) writes:
>
>	So does this mean an object oriented dbms can not, by performance
>	necessity, be built above a rdbms?  (If performance is the key, than
>	an oodbms built in such a manner would require some heavy duty
>	optimization - the joins would be incredible).

That's my opinion, anyway. Think of the relational schema that you'd
use to represent a circuit. Every time you wanted to follow some
connection, e.g. from a pin to a wire, a join would be required. To do
any useful work, e.g. a circuit simulation, a very large number of
joins would be required. Not only is there a big join optimization
problem, but the efficiency of the join implementation is crucial.

In an OO DBMS schema, the connections would be represented by
pointers, and following a pointer can be done extremely quickly, on
the order of a few machine instructions. Following a pointer will be
faster than a join (amortized over the number of connections made by
the join), no matter how the join is implemented, (judging by the
algorithms currently available).

This is why I believe that a relational DBMS (or an OO DBMS built on
top of a relational DBMS) cannot deliver the performance required for
dealing with large numbers of small objects. 

>
>	Now, if the oodbms is not built above the "proven" relational algebra
>	what should it be built above? Prolog? Now what are we talking about?
>	Object-oriented DBs or deductive DBs?

I don't see how Prolog enters the picture.

Many OO DBMSs start with a programming language and add persistence
and possibly semantic data modeling constructs.  Of the "first
generation" OO DBMSs, Vbase started with an extension of C, GemStone
started with Smalltalk, and Statice started with Lisp. Object Design
and other "second generation" companies are starting with C++.  The
advantage of this approach is that application developers no longer
have to worry about two type systems (one for the host language and
one for the DBMS) and two namespaces. Also, the problems inherent in
translating complex objects between host language structures and
relations in the database disappear.

CAx developers are in such a difficult position because they need the
expressiveness of a general-purpose programming language, and the
persistence, atomicity and recoverability of DBMSs. DBMS query
languages aren't expressive enough, and languages offer very little in
the way of persistence and nothing to support atomicity and
recoverability.  Most of the CAx developers we've talked to have
resolved this problem by using a programming language and then
providing their own persistence on top of file systems.  The goal of
an OO DBMS provides the best features of general-purpose (OO)
languages and DBMSs in a single package.


Jack Orenstein
Object Design, Inc.

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/12/89)

dennism@menace.rtech.COM (Dennis Moore, INGRES/teamwork) writes:
>I suggest that we will have all these object oriented features before these
>OODBMS companies have distributed database, development tools, bug elimination,
>installed base, customer-driven features, third party developers, high
>performance, and all the other things we expect for our $2K per user.

How about just shared, persistent data?  Is anyone out there willing to
describe his production OODB and state how many concurrent users access
it?  How many are actively updating it on a typical day?

-- Jon

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/12/89)

jack@odi.com (Jack Orenstein) writes:
>I assume that by "extended rdb" you mean a relational database system
>that permits instances of object classes to be stored in fields of
>tuples, instead of just numbers and strings.

What advantages of this approach would you see over support for
domains and abstract data types?

-- Jon

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/12/89)

speyer@joy.cad.mcc.com (Bruce Speyer) writes:

>If an application must cross its process boundary in order to
>communicate with the database system it probably is at least two orders
>of magnitude too slow.  That is why all of the C++ based OODBMS efforts
>are using the application memory heap for the cache.

Could you provide some performance measurement data that qualify
and quantify this assertion?

-- Jon

dgh@unify.UUCP (David Harrington) (08/12/89)

In article <3324@rtech.rtech.com> dennism@menace.UUCP (Dennis Moore (x2435, 1080-276) INGRES/teamwork) writes:
>
>
>I suggest that we will have all these object oriented features before these
>OODBMS companies have distributed database, development tools, bug elimination,
>installed base, customer-driven features, third party developers, high
>performance, and all the other things we expect for our $2K per user.
>

I agree.  Look at the OODBMS companies like Ontologic.  They are either living
off an existing RDBMS which they are trying to re-cast as OO, or they are
dying.

Look at Servio Logic.  It has been building GemStone for at least 5 years, and
as of April of this year had maybe 30 systems installed -- mostly 4 user
systems in R&D labs.  The only reason Servio is still around is that they are
funded by the House of Sampoerna, an Indonesian tobacco company run by a
41-year old Chinese "Tai-Pan" named T. Pao Liem who has MUCH more money than
he needs.  

GemStone has no front-end, no distributed database, no 3rd party
developers (other than a small group of Servio employees in Alameda trying to
build an MRP system in Smalltalk (!) that uses GS as a structure server).

They have based their marketing strategy, such as it is, on an assumption that
the market for OODBMS, which they say is "applications requiring a LOT of
COMPLEX data", will mature at least 5X as fast as the relational market did.

Figuring the R-market took 12-15 years from academia to maturity, they project
(or have been projecting for some time) that the OODBMS market would take off
in 1989. 

I think the path to OODBMS is evolutionary, especially given the huge install
base of RDBMS and applications that use them.

jack@odi.com (Jack Orenstein) (08/14/89)

In article <19@dgis.daitc.mil> jkrueger@dgis.daitc.mil (Jonathan Krueger) writes:
>jack@odi.com (Jack Orenstein) writes:
>>I assume that by "extended rdb" you mean a relational database system
>>that permits instances of object classes to be stored in fields of
>>tuples, instead of just numbers and strings.
>
>What advantages of this approach would you see over support for
>domains and abstract data types?

I don't have Codd's 1970 paper in front of me, but in his 1979 paper
on RM/T, Codd defines a relation as a subset of D1 x ... x Dn, where
each Di is a domain. He then defines a relational database as a
collection of relations whose defining domains are simple, i.e.
"nondecomposable by the database management system".

Several relational DBMS vendors go beyond this definition, and provide
non-simple domains, in the same way that many vendors of Pascal
compilers add features that go beyond the language definition.

I'm not sure what distinction you're drawing between an extended
relational DBMS and one storing domains and ADT (instances). Simple
domains are accomodated by Codd's definition of the relational model.
ADTs and object classes require, in addition, the capability to refer
to functions of the ADT or object class from the query language.  The
set of all instances of an ADT or object class are certainly
comparable to a domain, but the procedural part of these constructs
might violate the "nondecomposable" requirement. This is a bit fuzzy
to me - how is nondecomposable defined? I cannot make a convincing (to
me) argument explaining why stacks are any more or less decomposable
than ints. 

If your question is about ADTs vs. object classes, I see a couple of
differences. First, an ADT is defined axiomatically, e.g. pop(push(s:
stack, x: int)) --> s, while an object class is more of a programming
language construct. (Of course, any practical implementation of an ADT
facility is not axiomatic.) Second, object classes are usually
associated with language features such as inheritance, polymorphism,
and other ideas that have turned up in various combinations in recent
languages.

The comparison that I am more interested in is relational (plus
objects or ADTs) vs. OO DBMSs. There are at least three aspects to
this comparison:

	1. From the point of view of an application developer, what is
           the correct paradigm of database usage: host language +
	   DBMS (as is currently the situation with relational DBMSs)?
	   A database programming language in which certain constructs
	   - relations - have special properties such as
	   persistence)? A persistent programming language?

	2. Performance issues - this has been the focus of much of
	   the recent discussion.

	3.  What role can the relational model play in
	    "non-traditional" (CAx) applications? Suppose that you
	    have a persistent programming language for use in 
	    developing CAx applications, and that you were interested
	    in extending the language by adding, in some form, 
	    operations of the relational algebra. How would this
	    be done? Would you add a relation data type as a builtin
	    type? Could it be an object class? Would all relations be
	    of the same class, or would there be a different class for
	    each tuple type? What happens when a join is done? An
	    alternative is to draw an analogy between relations and
	    functions, or relations and object classes. A natural join
	    would then generate a new function or object class.

As someone working on an OO DBMS product, the marketplace determines
issues 1 and 2, and the performance requirements are so strict that
they influence just about every other issue. 3 is primarily of
academic interest to me, as I'm interested in how the relational and
OO models relate to one another.


Jack Orenstein
Object Design, Inc.

speyer@joy.cad.mcc.com (Bruce Speyer) (08/14/89)

In article <20@dgis.daitc.mil> jkrueger@dgis.daitc.mil (Jonathan Krueger) writes:
>speyer@joy.cad.mcc.com (Bruce Speyer) writes:
>
>>If an application must cross its process boundary in order to
>>communicate with the database system it probably is at least two orders
>>of magnitude too slow.  That is why all of the C++ based OODBMS efforts
>>are using the application memory heap for the cache.
>
>Could you provide some performance measurement data that qualify
>and quantify this assertion?
>
>-- Jon

No, I don't have the numbers or the time to work them up.  Perhaps somebody else
could provide actual statistics and even disprove my assertion.  It would be
interesting to hear from somebody involved with the HP Iris system which is
based upon a relational database.

About 3 years ago I tried putting an electronic information model on top of a
relational system.  It took about 30-40 times longer to netlist a circuit then
it did using a fairly inefficient internally developed memory-based database
system. An operation such as packaging the electronics is much worse since it
must transverse much more of the electronic information model and be constantly
refering to the library portion of the model which was distributed to another
database (making the join operation much more expensive).

Compare the cost of processing a tuple at a time to a C++ style database.  If
the object is in-memory then optimally an indirect reference and a test is all
that is required to transverse a relation or access an attribute.

My apologies for not being able to back up my statements with benchmarks.
Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/15/89)

jack@odi.com (Jack Orenstein) writes:
>I'm not sure what distinction you're drawing between an extended
>relational DBMS and one storing domains and ADT (instances).

That was my line!  What distinction are you drawing?

Better yet, could you give a simple example, please?  Something that
highlights the difference between using ADT's versus objects for
defining domains.  Thank you.

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your
color bitmapped window system on a network is emulate an ASR33?

marti@ethz.UUCP (Robert Marti) (08/15/89)

With respect to the ongoing debate concerning OODBs vs extended RDBs,
I'd like to see proof (make that circumstatial evidence, if you prefer)
that an OODB which supports traditional basic DBMS features such as
concurrency control, transactions, set-oriented data manipulation,
the ability to define views and to dynamically add new tables/columns,
etc. is

1) faster than a relational system for typical technical/engineering
   applications than a relational system, and

2) not much slower than a relational system for traditional business
   oriented applications.

How about some benchmarks, controversial as they may be?

Btw:  For me, functionality is a much more important point than
performance.  However, most OODB followers emphasize the superior
performance of OODBs.  So:  Put up or ...  :-)

-- 
Robert Marti                      Phone:      +41 1 256 52 36
Institut fur Informationssysteme
ETH-Zentrum                       CSNET/ARPA: marti%inf.ethz.ch@relay.cs.net
CH-8092 Zurich, Switzerland       UUCP:       ...uunet!mcvax!ethz!marti

dennism@menace.rtech.COM (Dennis Moore (x2435, 1080-276) INGRES/teamwork) (08/15/89)

In article 3452 of comp.databases, speyer@joy.cad.mcc.com (Bruce Speyer) writes:

>In article <20@dgis.daitc.mil> jkrueger@dgis.daitc.mil (Jonathan Krueger) writes:
>>speyer@joy.cad.mcc.com (Bruce Speyer) writes:
>>
>>>If an application must cross its process boundary in order to
>>>communicate with the database system it probably is at least two orders
>>>of magnitude too slow.  That is why all of the C++ based OODBMS efforts
>>>are using the application memory heap for the cache.
>>
>>Could you provide some performance measurement data that qualify
>>and quantify this assertion?
>>
>>-- Jon
>
>No, I don't have the numbers or the time to work them up.  Perhaps somebody else
>could provide actual statistics and even disprove my assertion.  It would be
>interesting to hear from somebody involved with the HP Iris system which is
>based upon a relational database.
>

It is true that changing contexts takes a small number of milliseconds,
depending primarily on the architecture of the CPU (i.e. an 80x86 takes a long
time, because it is a segmented architecture, 68x00 takes the same amount of
time to do a kernel call as a non-kernel call).  However, you must do a context
switch to call a C++ library routine or to call a database routine, so there
is not much difference there.  The difference in instantaneous response present
currently in most DBMS's (OO *OR* R) is that they are client-server (or multi-
server, in the case of INGRES (caveat -- I work for RTI and INGRES is our
product)).  This means to access data, you use IPC (inter-process communication)
rather than a function call.  IPC generally is much slower than a function call,
but let's not forget one *MAJOR* saver here -- the SAME server can serve
literally hundreds of users.  If each had it's own linked copy of the C++ data
access routines, there would be so much swapping/paging going on on the host,
that nothing would get done.  Even if linked libraries were used, each user
would have her own data segments etc., and would use many more resources than
the DBMS does currently.  Therefore, I have no issue with the claim that a
single user system is better off with a highly tuned, memory hogging,
specialized access method, than an RDBMS.

>About 3 years ago I tried putting an electronic information model on top of a
>relational system.  It took about 30-40 times longer to netlist a circuit then
>it did using a fairly inefficient internally developed memory-based database
>system. An operation such as packaging the electronics is much worse since it
>must transverse much more of the electronic information model and be constantly
>refering to the library portion of the model which was distributed to another
>database (making the join operation much more expensive).
>

Excuse me, have you heard of distributed database?  INGRES*STAR would allow you
to keep your packaging information in a separate "database," and still do joins
just as if the data were in the same database.  The concept of "a database" (as
opposed to "a different database") basically goes away, as the user can pick
and choose tables from multiple "databases" to be in one STAR database.  Maybe
the reason it was slow was that you didn't know what you were doing.

Let me posit a different architecture for your electronic information model.
Could you have read in all the data into memory from an RDBMS and performed
the same manipulations in-core that you did in your system?  The advantage to
this architecture is that you can lock the records while you are manipulating
them (with THREE WORDS ("FOR DIRECT UPDATE"), as opposed to many lines of code),
you get all the transaction processing capabilities of the DBMS (i.e. rollback,
savepoints, commit), you get all the utilities of the DBMS, etc.  To put it
in a few words, YOU GET THE *MS* FROM THE DBMS, and you do your own processing.

>Compare the cost of processing a tuple at a time to a C++ style database.  If
>the object is in-memory then optimally an indirect reference and a test is all
>that is required to transverse a relation or access an attribute.
>

What a surprise!  In INGRES, there is a concept called a TABLE FIELD (NOTE --
many other databases (such as Gupta's RESULT SETS, Sybase's SETS, etc.) have
the same concept with other terms).  You select a SET AT A TIME, NOT A TUPLE
AT A TIME into the TABLE FIELD.  BTW, do you know that a database oriented to
TUPLE AT A TIME processing is not relational?  By definition, a relational
database can process a SET AT A TIME.  For instance, if the diagram tuple has
a surrogate key DIAGRAM#, which is a foreign key for the components table (which
I will call COMPONENTS), then you could find all the components of a diagram
by the following SQL statement:
	SELECT * FROM COMPONENTS WHERE DIAGRAM# = :diagram_number;
where diagram_number is a C variable (for instance) containing the number of
the host diagram.  The results of this select could be stored in a table field
and manipulated in core.  BTW, all the table field manipulations (i.e.
INSERTROW, DELETEROW, etc.) are in our language, so you don't have to write
list processing classes -- we already did.

So, in summary, whether you use an OO system or an RDBMS (which has OO
features and capabilities), you can process the data in memory.  You STILL
have to get that data from disk and to disk SOMETIME, and the RDBMS will be
better at that.  In addition, the RDBMS already comes with the in-memory
manipulation features.  The RDBMS also protects against hardware and software
(i.e. the break key) failures and provides you with the capability to start
off a process and then back out if you don't like the results.  The RDBMS is
optimized to provide consistency and concurrency for the data.  The OO "faction"
here kees talking about what RDBMS's don't do, and yet every example so far
has been doable with an RDBMS today.  I am *SURE* that there *ARE* things that
an OODB can do, but RDBMS's are developing new features faster (there are more
people in engineering in *MY* company than in their whole company) and faster.

I would like to point out that only two people are doing this rather poor
defense of the entire OODB industry.  After all, if OO was not a good idea,
we wouldn't be developing even more OO features now.

>My apologies for not being able to back up my statements with benchmarks.

'Nuff said ...

>Bruce Speyer / MCC CAD Program                        WORK: [512] 338-3668
>3500 W. Balcones Center Dr.,  Austin, TX. 78759       ARPA: speyer@mcc.com 
>
>

-- Dennis Moore, my own opinions, etc etc etc

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/16/89)

dennism@menace.rtech.COM (Dennis Moore, INGRES/teamwork) writes:

>...the SAME server can serve literally hundreds of users...
>Therefore, I have no issue with the claim that a single user system is
>better off with a highly tuned, memory hogging, specialized access
>method, than an RDBMS.

We run the latest release of INGRES that RTI sells for Berkeley UNIX on
Pyramid, VAX, and Gould.  None of them supports servers yet.  Our
INGRES applications use about a megabyte of physical memory per
additional active concurrent user on Pyramid.

We regard this performance as adequate.  We bought our system to serve
users, not ration resources.  It would be nice to serve more users with
the same resources, as we anticipate when we receive INGRES 6.0.  But
our users would not be served at all without the development tools that
RTI has been providing since INGRES 3.0.

Therefore I'd like to divide the question: efficient implementation of
a data model versus inherently bad performance of some models for some
operations.  Recent traffic has confused the two issues without
addressing either.  It tells us very little that a current DBMS
performs poorly.  References to applications without specifying their
operations or describing their design tell us nothing.

For instance, Bruce alludes to operations like "netlist a circuit" and
"package the electronics".  It would be wonderful indeed to understand
the electronics that underlies all the computing we do, but I'll settle
for characterizing some operations that engineers need.  Can you
specify these operations in some terms we can understand?  Or simpler
ones?  How might one implement them with a relational data model?  Are
there data models that can be shown inherently better for some of these
operations?

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your advanced powerful
color bitmapped windowing workstation on a network is emulate an ASR33?

simpson@trwarcadia.uucp (Scott Simpson) (08/17/89)

>Dan Weinreb of Object Design writes:

>I stand by my statement, above.  The largest U.S. CASE company, Index
>Technologies, does not use any DBMS in its product.  They have
>carefully considered the question and decided that existing DBMS
>technology is inadequate for what they want to do.  The major ECAD
>companies do no use any RDBMS for anything, or at least not for
>anything at the heart of their systems.

	Index Technologies recently announced they have selected OB2,
Ontologic's C++ OODB for their products.  Ontologic is one of Object
Design's competitor.
	See "An Object-Oriented VLSI CAD Framework" by Rajiv Gupta,
Wesley H. Cheng, Rajesh Gupta, Ido Hardonag and Melvin A. Breuer in
the May 1989 IEEE Computer.

>Jack Orenstein of Object Design writes:

>Many OO DBMSs start with a programming language and add persistence
>and possibly semantic data modeling constructs.  Of the "first
>generation" OO DBMSs, Vbase started with an extension of C, GemStone
>started with Smalltalk, and Statice started with Lisp.  Object Design
>and other "second generation" companies are starting with C++.  The
>advantage of this approach is that application developers no longer
>have to worry about two type systems (one for the host language and
>one for the DBMS) and two namespaces. Also, the problems inherent in
>translating complex objects between host language structures and
>relations in the database disappear.

I believe that when you stick to straight C++, you also lose seamlessness
(that is, you must now use library calls rather than having persistence
built directly in your language).  C++ doesn't have keywords for persistence.
You could extend C++, but then it wouldn't be C++.  We use Ontologic's VBase
OODB.  This version had its own proprietary language that was seamless.
They dropped it due to the market's resistance to accepting a new language.
They are now coming out with a non-seamless C++ version called OB2.  We don't
know if we'll switch to it.  Our contract is ending.

	Lastly, say hi to Rich Fetik at Object Design.  I knew him when
he worked for Ontologic.  I was wondering where he went...
	Scott Simpson
	TRW Space and Defense Sector
	usc!trwarcadia!simpson  	(UUCP)
	trwarcadia!simpson@usc.edu	(Internet)

davidm@uunet.UU.NET (David S. Masterson) (08/17/89)

>With respect to the ongoing debate concerning OODBs vs extended RDBs,
>I'd like to see proof (make that circumstatial evidence, if you prefer)
>that an OODB which supports traditional basic DBMS features [is]
>	[better than a relational system]
>
The one flaw in this request is that proof of concept can't be provided if the
concept hasn't been defined.  I agree with Jon Krueger in that there is too
much hand-waving in this discussion ("our system is better than yours")
without defining the problem that is trying to be met.

1.  Relational DBs provide things necessary for a multi-user world
(concurrency control, security, etc.) that may or may not be needed in the
object oriented world (perhaps only a specific area [CAD/CASE]).

2.  Object DBs provide things necessary in a single-user world (extreme speed)
that may or may not be needed in the relational world.  Thus the need for
cached objects.

3.  What is the crossover point between the models?  Object-oriented
methodologies include relational methodologies?  Or is it vice versa?

David Masterson
uunet!cimshop!davidm

jack@odi.com (Jack Orenstein) (08/17/89)

In article <1765@ethz.UUCP> marti@ethz.UUCP (Robert Marti) writes:
>With respect to the ongoing debate concerning OODBs vs extended RDBs,
>I'd like to see proof (make that circumstatial evidence, if you prefer)
>that an OODB which supports traditional basic DBMS features such as
>concurrency control, transactions, set-oriented data manipulation,
>the ability to define views and to dynamically add new tables/columns,
>etc. is
>
>1) faster than a relational system for typical technical/engineering
>   applications than a relational system, and
>
>2) not much slower than a relational system for traditional business
>   oriented applications.
>
>How about some benchmarks, controversial as they may be?

Speaking for the system we're building at Object Design: The system is
based on C++. Concurrency control, transactions, and set-oriented data
manipulation (as well as one-at-a-time processing) will all be present
in our system. View definition is tricky to define - how does it
differ from simply writing another C++ object class? As for
dynamically adding tables and columns: We have set-valued types,
modeled as C++ classes (which are analogous to relational tables),
instances of which can be dynamically allocated, as is the case with
any C++ object class. "Adding columns" is a relational notion that
does not have a clear OO counterpart, (I'd be interested in hearing
about analogies that anyone would care to offer.)

No benchmarks (yet), but a forthcoming posting addresses one aspect of
the performance issue for CAx applications.


Jack Orenstein
Object Design, Inc.

jack@odi.com (Jack Orenstein) (08/17/89)

In article <CIMSHOP!DAVIDM.89Aug16173259@uunet.UU.NET> cimshop!davidm@uunet.UU.NET (David S. Masterson) writes:
>>With respect to the ongoing debate concerning OODBs vs extended RDBs,
>>I'd like to see proof (make that circumstatial evidence, if you prefer)
>>that an OODB which supports traditional basic DBMS features [is]
>>	[better than a relational system]
>>
>The one flaw in this request is that proof of concept can't be provided if the
>concept hasn't been defined.  I agree with Jon Krueger in that there is too
>much hand-waving in this discussion ("our system is better than yours")
>without defining the problem that is trying to be met.

Dan Weinreb and I have tried to define the concept in earlier
postings.

From Dan:

   > Unfortunately, the phase "object-oriented" is used to cover so many
   > different areas that it's hard to conduct a meaningful conversation
   > about what "object-oriented database" means.  Certainly, you can store
   > strings representing SQL strings in a relational database.  Certainly,
   > you can add "rule" and "trigger" features to a relational database
   > system.  And these are useful, and people will use them.
   > 
   > However, the introduction of these features still won't result in each
   > gate and each wire being represented as an element in the database
   > system.  The really interesting data like gates and wires will still
   > have to be stored in files in a file system, just as they are now in
   > every real ECAD system.
   > 
   > In the view of the people in the OODBMS companies, we will have
   > succeeded when there is no longer any need for a CAD/CASE company to
   > use the operating system's file system for anything at all, and when
   > the CAD/CASE tool can be written in a single, unified language, with
   > no translation between normalized relational tuples on the one hand,
   > and a programming language with its type system on the other hand.
   > And all this without performance degradation.
   > 
   > A particular requirement is that fetching a data value out of the
   > database system must be as fast as fetching a component of a structure
   > (record) in the programming language.
   > 
   > That's what I really mean by "object-oriented database system".  A
   > relational system with extra added "object-oriented features" like
   > rules and triggers, while it has its uses, does not solve the problem
   > that we are trying to solve.  Those "features" are beside the point;
   > beside our point, anyway.  These problems cannot be solved by taking a
   > relational database system and adding some new "features".

From me:

   > Based on [interviews with potential customers], we concluded that
   > there is a need for high performance for fine-grain manipulation of
   > small, persistent objects.


>1.  Relational DBs provide things necessary for a multi-user world
>(concurrency control, security, etc.) that may or may not be needed in the
>object oriented world (perhaps only a specific area [CAD/CASE]).
>
>2.  Object DBs provide things necessary in a single-user world (extreme speed)
>that may or may not be needed in the relational world.  Thus the need for
>cached objects.

CAx applications need transactions and multi-user capabilities also,
and we are building in these features. Yes, CAx needs extreme speed,
but design projects are typically carried out by teams, and the
multi-user issues are at least as important as in business
applications.



Jack Orenstein
Object Design, Inc.

dcmartin@lisp.eng.sun.com (David C. Martin) (08/17/89)

Although this discussion has centered around the questions of the speed of an RDBMS versus
an OODBMS, one area which I think should be noted is the abilities and inabilities of each
type of DBMS to provide functionality under certain circumstances.

I believe Dennis mentioned the Postgres Papers (Rowe & Stonebraker) which discuss the
design and proposed implementation of Postgres, a next-generation RDBMS.  In Mike's
design of Postgres he took into consideration many of the "problems" of typical applications
in CA*, AI and other non-traditional DBMS customers.  Many of the new features in
Postgres were designed to improve performance (e.g. tuple fields which evaluate off-line to
produce data which can then be retrieved quickly when needed -- the canonical example,
if I remember correctly, was computing some employees list of children).

Many of the performance increases necessary for non-traditional environments can be provided
via NF**2 (non-first normal form) data, in which a field may contain an entire subtuple,
not simply a reference to another tuple in another table.  An object-oriented DBMS may
take advantage of an object's identity, i.e. its unique ID throughout all space and time,
in order to cluster data efficiently (I'm a little lost for words here, what I mean to
say is that the ID will allow the data to be located regardless of the necessity for it
being located in a particular table).

I could ramble on about speed, but the more important question is functionality.  One
of the biggest problems *I* have with traditional RDBMS (and I am sure that many 
non-traditional users also have) is the inability to provide certain functionality to
the user-community (i.e. non-traditional) with *support* from the DBMS.  For example,
if I wish to take an object-oriented language (I will use the Common LISP Object System)
and store the objects in the DBMS, I would like the backend to support the same types
of operations which the frontend provides, e.g. when I change the value of a database
field (a CLOS slot) using what is called a setf function in lisp (basically the inverse
of get), I would like the same operation to occur.  One example might be that when I 
setf the children list of an employee to no longer contain some child, I would like the
non-referenced child to be removed from the DB if it is no longer referenced from anywhere.

NOw I am sure that Dennis will tell me that he has millions of hackers banging on that
example right now :-) and perhaps even Larry and Mike will tell me I'm all wrong, but I
think that the position of most OODBMS vendors is to provide this type of extended 
functionality in the DBMS, not necessarily in frontend support systems.

dcm



--
-----
Stupidty got us into this mess; why can't it get us out? - Will Rogers
-----
David C. Martin                            arpa: dcmartin@cs.wisc.edu
University of Wisconsin - Madison          uucp: uunet!ucbarpa!dcmartin
Computer Sciences Department               at&t: 608/262-6624 (O)

dlw@odi.com (Dan Weinreb) (08/17/89)

In article <CIMSHOP!DAVIDM.89Aug16173259@uunet.UU.NET> cimshop!davidm@uunet.UU.NET (David S. Masterson) writes:

   The one flaw in this request is that proof of concept can't be provided if the
   concept hasn't been defined.  I agree with Jon Krueger in that there is too
   much hand-waving in this discussion ("our system is better than yours")
   without defining the problem that is trying to be met.

Indeed.  This cannot be emphasized strongly enough.

The term "object-oriented database system" is currently being used by
a fairly large number of research and product development groups.
It's clear from the published literature that the term covers quite a
lot of ground.  Some of these systems have things in common with
others in some respects, while differing greatly in other respects.

I have been at least as guilty as anyone of adding to the confusion,
with my recent postings, and I apologize for not being more specific
and clear.  While I have been following the research reports of quite
a few different groups and consider many of them very interesting, my
own attention has (naturally) been focused on the specific product
that I'm working on at Object Design.  It's only one of a vast range
of approaches that can legitimatly call themselves "object-oriented
database systems".  In the future, I will be more explicit about what
I'm referring to.

There's no official definition of "object-oriented database systems".
Various groups of people have proposed definitions and criteria, but
naturally there is no particular group that is obviously qualified to
rule on a universal definition for the whole database community.

Anyone who wants to get a better sense of the diversity of the field,
and also get an overall feeling for what kinds of things are being
worked on, might want to read:

The Proceedings of the 1986 International Workshop on Object-Oriented
Database Systems, edited by Dittrich and Dayal, ACM order number 472861,
ISBN 0-8186-0734-3, IEEE Computer Society Order Number 734.  235 pages.

Proceedings of the 1989 ACM SIGMOD, also published as SIGMOD Record
Vol 18, No. 2, June 1989.  There are six papers in the two sessions on
object-oriented databases, reasonably representative of the latest
work in the area.  Much other interesting work has appeared in the
SIGMOD proceedings of the last five years.

ACM Transactions on Office Information Systems, Vol. 5, No. 1, Jan 87,
Special Issue On Object-Oriented Systems.  This special issue contains
five extensive articles about five research efforts in object-oriented
database systems, all different.  The articles have extensive references,
through which the interested reader can find a wealth of related material.

Also, all three proceedings of the OOPSLA conference have interesting
papers on the topic.

ACM Computing Surveys, Vol. 19, No. 2, June 1987 has an excellent and
extensive article called "Types and Persistence in Database
Programming Languages", by Atkinson and Buneman.  It discusses the
question of integration of languages with database systems, which is
of great interest to some, but not all, of the object-oriented
database efforts.

ACM Computing Surveys, Vol. 19, No. 3, Sept 1987 has another excellent
and extensive article, this one called "Semantic Database Modelling:
Survey, Applications, and Research Issues" by Hull and King.  Semantic
database models have some relationship to object-oriented database
models, although what the relation consists in is something of a topic
of debate.  Nonetheless, I think the article is practically required
reading for anyone who intends to work on object-oriented database
systems.

simpson@trwarcadia.uucp (Scott Simpson) (08/18/89)

You may wish to look at the article 
	
	"Intermedia: A Case Study of the Difference Between Relational
and Object-Oriented Database Systems", Karen E. Smith and Stanley B.
Zdonik, Brown University, OOPSLA '87 Proceedings.

Basically, the authors implemented a hypermedia system on top of a
relational and then an object-oriented database system and they
determined that the object-oriented model suited their problem domain
better.  Some of the conclusions they came to

	o Relational databases are awkward as information made up of
	  complex, hierarchical data structures need to be flattened
	  into relations and un-flattened when you retrieve data.
	  The authors had to mimic hierarchies with identification keys
	  rather than use pointers or direct references.  There was
	  a mismatch between the programming language data structures
	  and the database data structures.

	o Object-oriented databases provide class-extensibility.  With
	  relational databases, their is a single parameterizable type,
	  relation.  With an OODB, each object is associated with a class
	  and you can add new classes that are on the same level as the
	  system types.  Your new objects are first-class citizens.  In
	  fact, you can simulate a relational database by creating a
	  tuple class.

	o Object-oriented databases provide data abstraction.  The behavior
	  of an object is described by a class definition.  These class
	  definitions provide data abstraction at the level of the database,
	  not at the level of the application.

	o OODBs can store active objects.  Since methods are stored in
	  the database, an application can ask the database to invoke
	  a method on an object.  Since methods are expressed in terms of
	  a programming language, any operation can be performed.  This is
	  in contrast to relational query languages that are not 
	  computationally complete.  Also, since the bulk of the application
	  code resides in the database, it can utilize the built-in
	  concurrency, versioning, etc.

	o There is no need to copy data to virtual memory in an OODB.
	  The application can send messages to objects and have them invoke
	  methods on those objects.  The computation is done on the database
	  side, not on the application side.  This is especially critical
	  if your database resides over a network.  The data does not need
	  to be shipped across the network.  In a RDBMS, data needs to be
	  shipped across for each projection, join, etc.  Stored procedures
	  have been added to many databases to address this problem, but I
	  think it is a cleaner solution to have it in your original model
	  than as an add on hack.  With an OODB, sending one message can
	  take the place of many relational queries.

	o OODB have automatic type checking at the point of use.  Since methods
	  are executed locally, the database can perform type checking as
	  soon as a method is called.  In an RDBMS, type failures are detected
	  when the tuples are checked back in.

	o OODB provide a better granularity of locking facilities.  
	  In an RDBMS, because hierarchies are represented across a number
	  of relations, the application needs to explicitly lock each record
	  to lock the hierarchy.  In an OODB, an application can lock a
	  hierarchy in a single operation.

My personal view is that relational databases were fine for tabular
data such as invoices in the data processing world, but the scientific
world deals in objects, not tabular data.  The twisting of objects onto
a relational structure causes poor performance and a wide semantic
gap.
	Scott Simpson
	TRW Space and Defense Sector
	usc!trwarcadia!simpson  	(UUCP)
	trwarcadia!simpson@usc.edu	(Internet)

hughes@math.berkeley.edu (Eric Hughes) (08/18/89)

In article <28@dgis.daitc.mil>, jkrueger@dgis (Jonathan Krueger) writes:
>Therefore I'd like to divide the question: efficient implementation of
>a data model versus inherently bad performance of some models for some
>operations.  Recent traffic has confused the two issues without
>addressing either.

"Inherently bad performance" is a slippery term.  It is important to
remember that a database model is an abstraction, and that there are
many different implementations of the same abstraction.  To speak of
"inherently bad performace" would require that one find some predicate
which is invariant over all possible implementations and show that
such an invariant has certain undesirable minimum time and/or space
growth rates.  I can see both information theory and complexity theory
useful in this regard, but as far as I know there has been no work
done in this area.  For example, one could calculate some measure of
the information present in a query and relate that to some critical
path of operation to get a lower bound.

In short, I don't think it makes much sense to talk of "inherently"
bad performance, at least for now.

The situation is not so hopeless, because such kinds of operation
counting are possible when one fully specifies the type of
implementation.  For example, one could analyze the performance of an
RDBMS whose implementation consisted of nothing but flat files with no
indexes.  You can get time and space estimates in terms of the file
sizes.  By adding indices to the implementation one can reduce some
O(n) operations to O(log n), and by adding pointer rings to represent
a one-to-many relationship (redundant data for speed sake) one can
reduce some O(log n) operations to O(log log n) (which, for most
applications, is as good as constant).  This is not inherent
performance, but might be termed "practically inherent."

Let's be careful when we talk about the performance of a model.  Only
programs have performance measure per se, and so to measure the
performance of model one must somehow relate it to the performance of
some programs.

Finally, I have a two-part conjecture: Asymptotic performance
measurements (i.e. "order of" type measurement) of the relational and
object-oriented models (and all their children :-) are identical.  No
model has a set of constants for such asymptotic measurement (i.e. the
constant that gets rid of the "order of" symbol) whose inverses
dominate (i.e. are everywhere better than) the respective constants of
all other models.  To paraphrase, both models have inherently the
same order of magnitude performance, and certain models are better
suited to certain operations than others.

Eric Hughes
hughes@math.berkeley.edu   ucbvax!math!hughes

dlw@odi.com (Dan Weinreb) (08/18/89)

In article <1765@ethz.UUCP> marti@ethz.UUCP (Robert Marti) writes:

   With respect to the ongoing debate concerning OODBs vs extended RDBs,
   I'd like to see proof (make that circumstatial evidence, if you prefer)
   that an OODB which supports traditional basic DBMS features such as
   concurrency control, transactions, set-oriented data manipulation,
   the ability to define views and to dynamically add new tables/columns,
   etc. is

   1) faster than a relational system for typical technical/engineering
      applications than a relational system, and

The proposition is that for certain applications, i.e. when being used
certain ways in certain computation environments, we believe that the
approaches that we're taking will result in substantially higher
performance than using a relational database system in those same
circumstances.  So there are two problems.  First, it all rests on
what sort of benchmarks you use, i.e. it depends on what you are
trying to test.  Second, it's not a claim about existing systems, but
about what some of believe we can accomplish.

   2) not much slower than a relational system for traditional business
      oriented applications.

Actually, I'm sure that some of the OODBMS's indeed *will* be much
slower than relational database systems for traditional business
oriented applications.  I, for one, certainly do *not* belive that the
kind of OODBMS that I am working on is going to replace, subsume or
displace relational database systems.  There are plenty of fine
relational database systems in existence.  They were designed to do a
certain kind of job, and they generally do those jobs fine.  When I
talk about object-oriented database management systems, I mean a
substantially different kind of DBMS designed to deal with a different
kind of problem, with different needs and tradeoffs.  (There are other
OODBMS efforts that might not take the same position, so let me
emphasize again that I'm speaking for myself.)

   How about some benchmarks, controversial as they may be?

If I had in front of me the sort of OODBMS that I envision existing in
the near future, I am sure that I could devise benchmarks that would
make the OODBMS look far faster than the RDBMS, *and* vice versa,
simply by designing the benchmarks with that goal in mind, because the
two systems would be so different.  So a benchmark would not "prove"
that system A is N times the speed of system B, but rather would
illustrate what sort of things each system is particularly good at.
That is, the interesting result would not be the numerical wall clock
times, but rather the general assumptions and philosophy underlying
the design of the benchmark.

I've been trying to think of a good analogy.  Suppose we benchmark a
car against a motorboat; the real question is not which one was
faster, but whether the benchmark took place on the interstate or on
the lake.  In my view of OODBMS, we are talking about two different
tools for two different jobs, and so a direct benchmark isn't really
relevant.  When some of us talk about "superior performance of an
OODBMS" or something, what we are really trying to say is that there
are interesting new data management tasks that are quite unlike
traditional business (DP, MIS) applications and for which existing
relational systems would not perform well.  I hope this makes
everything more clear than my previous postings.

Dan Weinreb		Object Design, Inc.		dlw@odi.com

morrison@grads.cs.ubc.ca (Rick Morrison) (08/18/89)

In article <1989Aug17.141620.24941@odi.com> jack@odi.com (Jack Orenstein) writes:
> ... "Adding columns" is a relational notion that
>does not have a clear OO counterpart, (I'd be interested in hearing
>about analogies that anyone would care to offer.)
>
How about adding new instance variables to a class definition?
------------------------------
Rick Morrison		 | {alberta,uw-beaver,uunet}!ubc-cs!morrison
Dept. of Computer Science| morrison@cs.ubc.ca
Univ. of British Columbia| morrison%ubc.csnet@csnet-relay.arpa
Vancouver, B.C. V6T 1W5  | morrison@ubc.csnet (ubc-csgrads=128.189.97.20)
(604) 228-4327

joshua@athertn.Atherton.COM (Flame Bait) (08/18/89)

In an article cimshop!davidm@uunet.UU.NET (David S. Masterson) writes:
>1. Relational DBs provide things necessary for a multi-user world
>(concurrency control, security, etc.) that may or may not be needed in the
>object oriented world (perhaps only a specific area [CAD/CASE]).

CAD and CASE do need concurrency!  It is critical that many programmers
(or chip designers) be able to work on (different parts of) the same
project at the same time!  Security is also important to many people 
doing CAD or CASE for the military.

Background: I work for Atherton Technology which produces a CASE tool
(actually an IPSE) built on OODB technology.

Joshua Levy
--------                Quote: "If you haven't ported your program, it's not
Addresses:                      a portable program.  No exceptions."  
joshua@atherton.com          
{decwrl|sun|hpda}!athertn!joshua    work:(408)734-9822    home:(415)968-3718

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/18/89)

simpson@trwarcadia.uucp (Scott Simpson) writes:

>	"Intermedia: A Case Study of the Difference Between Relational
>and Object-Oriented Database Systems", Karen E. Smith and Stanley B.
>Zdonik, Brown University, OOPSLA '87 Proceedings.

>the authors implemented a hypermedia system on top of a
>relational and then an object-oriented database system and they
>determined that the object-oriented model suited their problem domain
>better

What did they say about shared access to persistent data?

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your
color bitmapped window system on a network is emulate an ASR33?

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/18/89)

hughes@math.berkeley.edu (Eric Hughes) writes:

>"inherently bad performace" would require that one find some predicate
>which is invariant over all possible implementations and show that
>such an invariant has certain undesirable minimum time and/or space
>growth rates.

Example: find all descendents.

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your
color bitmapped window system on a network is emulate an ASR33?

jack@odi.com (Jack Orenstein) (08/18/89)

In this first round of the comp.databases relational vs. OO DBMS wars,
Jon Krueger has asked some very reasonable questions that go to the
heart of the issues that Dennis Moore (RTI), Dan Weinreb and I (Object
Design), and Bruce Speyer (MCC) have been discussing.  I think the
essential statements are the following:

   ... I'd like to divide the question: efficient implementation of
   a data model versus inherently bad performance of some models for some
   operations.  Recent traffic has confused the two issues without
   addressing either.  It tells us very little that a current DBMS
   performs poorly.  References to applications without specifying their
   operations or describing their design tell us nothing.
   
   For instance, Bruce alludes to operations like "netlist a circuit" and
   "package the electronics".  It would be wonderful indeed to understand
   the electronics that underlies all the computing we do, but I'll settle
   for characterizing some operations that engineers need.  Can you
   specify these operations in some terms we can understand?  Or simpler
   ones?  How might one implement them with a relational data model?  Are
   there data models that can be shown inherently better for some of these
   operations? 

The starting point has to be the second statement, which addresses
user requirements.  One of the major conclusions of our (Object
Design's) requirements analysis was, as Dan and I have stated in
earlier postings, that "object fetching" - finding an object given its
id - must be as fast as possible.  I will therefore try to answer Mr.
Krueger's questions by focussing on this one operation.

These statements are asking, (correct me if I'm wrong), whether there
is something in the design of a given model that leads to or precludes
certain implementation techniques required for efficient
implementation of operations that are important in the application
areas being considered, (object fetching for now).

Consider an application that has to access some persistent data and
manipulate it, possibly updating it, using subroutines written in a
programming language. This is an extremely common scenario among the CAx
developers that Object Design has talked to.

Writing such an application on top of a relational DBMS requires the use
of two languages, the host programming language and the query language
of the RDBMS. The programmer therefore has to deal with two type
systems, and except for the simplest types such as integer and maybe
string, conversions are required between the DBMS representation of a
type and that of the host language. 

This problem is most severe for object ids.  On the host language
side, object ids are simply addresses, or pointers, and object
fetching involves following the pointer, (e.g.  thing* p; ...; widget*
w = p->frammis; in C or C++). On the RDBMS side, object fetching
involves at least a selection starting from a specific key value, or a
join. Each retrieval from the RDBMS will load some data that can be
accessed through host language, but when the "boundaries" of the
retrieved data are reached, it is time to submit another query.

Earlier postings have identified three patterns of "interleaving" of
host language and RDBMS actions:

        1. Retrieve only the object required at the moment by passing
	   its key to the DBMS.

        2. Retrieve all the objects that will be required for some
	   part of the application. This can be done by grouping 
	   objects (e.g. using a view), and retrieving the group members
	   by providing the key of the group.

        3. Same as 2, but the objects to be manipulated are not
           stored individually in the database. Instead, the data
           is organized as a "blob" or "long field", which is
           requested by its key, i.e. groups are replaced by blobs.
        
It sounds like Mr. Speyer used approach 1 in his application:

   About 3 years ago I tried putting an electronic information model on
   top of a relational system.  It took about 30-40 times longer to
   netlist a circuit then it did using a fairly inefficient internally
   developed memory-based database system. An operation such as packaging
   the electronics is much worse since it must transverse much more of
   the electronic information model and be constantly refering to the
   library portion of the model which was distributed to another database
   (making the join operation much more expensive).

Mr. Moore suggested that he should have used approach 2 or 3
instead, (the description is not specific enough to say which):

   Let me posit a different architecture for your electronic information
   model.  Could you have read in all the data into memory from an RDBMS
   and performed the same manipulations in-core that you did in your
   system?  The advantage to this architecture is that you can lock the
   records while you are manipulating them (with THREE WORDS ("FOR DIRECT
   UPDATE"), as opposed to many lines of code), you get all the
   transaction processing capabilities of the DBMS (i.e. rollback,
   savepoints, commit), you get all the utilities of the DBMS, etc.  To
   put it in a few words, YOU GET THE *MS* FROM THE DBMS, and you do your
   own processing.

Elsewhere, he is specifically suggesting approach 3:

   For instance, you could store a CASE diagram as a BLOB in real-time,
   and fire off an asynch database procedure which invokes a method which
   does all kinds of stuff, including storing the thing in a normalized
   fashion (for reports etc.), and potentially invoking a compiler to
   create a new whole version, etc.  Would this not be good enough?
   There will be a tradeoff between disk space and access and storage
   times, though, regardless of OO or R/OO.

#1 is too slow to be practical, as suggested by Mr. Speyer and by our
discussions with our potential customers. A query per (small) object
is too expensive.

#2 has the drawback that all members of a group must be retrieved in
order to gain access to any members. This is wasteful if only a
handful of objects were actually needed.  Furthermore, there may be a
large number of joins and selections necessary to extract the required
data, and the data then has to be converted to host-language
structures.  This is pure overhead due to the use of two languages.

#3 fails to capture any relationships internal to the long field (the
"blob") unless the programmer explicitly asks the information to be
captured and sent back to the DBMS (as pointed out by Mr. Moore).
Again, this is overhead due to the use of two languages.

Going back to Mr. Krueger's question: are these problems inherent in
the relational model? No, they are due to the two-language paradigm
supported by all RDBMS vendors. In fact, the relational model doesn't
address the issue of how to interact with a more powerful
general-purpose programming language. Languages like Pascal/R, RIGEL,
and Aldat show that a smoother integration is possible. (See Atkinson
and Buneman's extremely thorough review of DB programming languages in
ACM Surveys, June 1987.) It is extremely unlikely that any of these
languages will see widespread use, since they are non-standard (i.e.
non-C and non-SQL) replacements of existing query languages AND
programming languages.

An OO DBMS does not present users with the two-language problem
characteristic of RDBMSs.  Or at least this is true of the system we're
building at Object Design.  Instead, there is a single type system, and
a type may have both transient and persistent instances.  Once a
persistent object has been created, it can be accessed and manipulated
in the same way as any other object. Our system will be C++-based, so we
have adopted the C++ type system.

The programmer does not have to fire off a query to a DBMS in a second
language in order to access persistent data.  A pointer can be
followed in the usual way (e.g.  *p, or p->field), even if the target
is persistent.  If the object happens to be in working memory, then
nothing out of the ordinary happens, and the speed of the access is
the same as for access to a transient object (and the same as what a
C++ programmer is used to). Otherwise, the requested object, along
with some objects stored nearby, are brought in from the database
automatically.

Concurrency control and recovery are present, as with any DBMS.  There
is certainly nothing inherent in the relational model or lacking from
any OO model that limits these features to relational DBMSs.


CONCLUSION

The two-language paradigm of RDBMSs complicates the writing of
applications, and has performance consequences as well.  This is a
problem with implementations of the relational model, and not inherent
in the relational model. OO DBMSs avoid these problems by offering a
single language in which to write applications, pushing the
responsibility for database access into the system, away from the
user.



Jack Orenstein
Object Design, Inc.

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/18/89)

dcmartin@lisp.eng.sun.com (David C. Martin) writes:

>I think that the position of most OODBMS vendors is to provide this
>type of extended functionality in the DBMS, not necessarily in frontend
>support systems.

This is also precisely the goal of those adding OO capabilities to
relational engines.  However, they start by assuming the engine must
provide shared access to persistent data.

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your
color bitmapped window system on a network is emulate an ASR33?

rich@osc.COM (Richard Fetik) (08/18/89)

In article <5259@wiley.UUCP> simpson@trwarcadia.UUCP (Scott Simpson) writes:
>	Lastly, say hi to Rich Fetik at Object Design.  I knew him when
>he worked for Ontologic.  I was wondering where he went...
>	Scott Simpson
>	TRW Space and Defense Sector

Nope, I've to Object-Sciences Corporation.  Sorry to confuse you.  And Hi. :-)

-- 
					rich@osc.osc.com     415-325-2300
					uunet!lll-winken!pacbell!osc!rich
 Disclaimer: These are not the words of Object-Sciences Corporation or its
 affiliates, except when they first hear them from me. 

dlw@odi.com (Dan Weinreb) (08/18/89)

In article <1037@unify.UUCP> dgh@unify.UUCP (David Harrington) writes:

   I agree.  Look at the OODBMS companies like Ontologic.  They are either living
   off an existing RDBMS which they are trying to re-cast as OO, or they are
   dying.

This is hardly a convincing argument.  Yes, Ontologic and Servio-Logic
might be having problems or not growing as fast as they might, but
it's not logical to leap to the conclusion that OODBMS technology
isn't going to happen, or is only going to happen as a series of
changes to existing RDBMS implementations.  There are many other
factors that have shaped the courses of those two companies.  Merely
because A is true and B is true does not mean that A caused B.  (It
would be improper and highly rude of me to speculate about what those
other factors are, but I can suggest that one has to do with the use
of proprietary or unusual computer languages.  It's also possible (as
you suggested) that they started a bit too early.)  If you look at the
early history of relational databases, in fact, you'll see a lot of
early failed startups, obviously not because of fundamental problems
with RDBMS technology.

(By the way, there aren't any OODBMS companies that are living off an
existing RDBMS which they are trying to re-cast, etc.  Also by the
way, it's not fair to call Ontologic "dying"; they've announced that
they are coming out with an entirely new product on which judgements
at this time would be premature.  I expect we'll all learn more at the
OOPSLA conference.)

Usual notice: I work for a start-up company producing an OODBMS.  In
case anyone on this list doesn't recognize the name "Unify", Mr.
Harrington works for a company that produces a relational DBMS and
associated products.

Dan Weinreb		Object Design, Inc.		dlw@odi.com

dlw@odi.com (Dan Weinreb) (08/18/89)

In article <32@dgis.daitc.mil> jkrueger@dgis.daitc.mil (Jonathan Krueger) writes:

   dcmartin@lisp.eng.sun.com (David C. Martin) writes:

   >I think that the position of most OODBMS vendors is to provide this
   >type of extended functionality in the DBMS, not necessarily in frontend
   >support systems.

   This is also precisely the goal of those adding OO capabilities to
   relational engines.  However, they start by assuming the engine must
   provide shared access to persistent data.

But of course.  So does any serious OODBMS vendor.  In fact, there is
a commercially-available OODBMS product right now that does pretty
much exactly what Mr.  Martin asked for, and provides shared access to
persistent data (concurrency control, recovery, backup, etc., using
two-phase locking, write-ahead logging, etc).  It's called Statice,
and is a product of Symbolics, Inc.  Its main drawback is that it
currently is only available for Symbolics computers.

Did someone give you the impression that proposed OODBMS systems do
not provide shared access to persistent data?  Of course, as I said
before, the term OODBMS is used for all kinds of things.  However,
speaking for myself and my own use of the term, an OODBMS does not
deserve to be called that unless it provides shared access to
persistent data.

Caveat department: I was a co-founder of Symbolics Inc. and was the
chief designer and developer of Statice.  The work I am doing at
Object Design is also in the OODBMS area, but is substantially
different from Statice in most respects.  (So even within my own
definition of "OODBMS", there is a lot of room for different kinds of
systems!)

Dan Weinreb		Object Design, Inc.		dlw@odi.com

dlw@odi.com (Dan Weinreb) (08/18/89)

In article <1989Aug17.180057.2623@agate.berkeley.edu> hughes@math.berkeley.edu (Eric Hughes) writes:

   "Inherently bad performance" is a slippery term.  It is important to
   remember that a database model is an abstraction, and that there are
   many different implementations of the same abstraction.

Yes, indeed.  My colleague Jack Orenstein also pointed this out.
Performance is usually not inherent in an abstract data model.  The
most interesting performance differences between conventional DBMS's,
and the new CAx-oriented DBMS's, have less to do with the abstract
model and more to do with the implementation of the model.  The
claimed benefits of using an object-oriented model have more to do
with such areas as expressiveness and abstraction than performance.

Dan Weinreb		Object Design, Inc.		dlw@odi.com

jkrueger@dgis.daitc.mil (Jonathan Krueger) (08/19/89)

dlw@odi.com (Dan Weinreb) writes:

There is a commercially-available OODBMS product right now that...
provides shared access to persistent data...  It's called Statice, and
is a product of Symbolics, Inc.  Its main drawback is that it currently
is only available for Symbolics computers.

That's interesting.  How does one build multiuser systems out of
Symbolics computers?

>Did someone give you the impression that proposed OODBMS systems do
>not provide shared access to persistent data?

Rather that no one gave me the impression that they did.  Do they?
Would someone out there describe his production OODB and state how many
concurrent users access it?  How many are actively updating it on a
typical day?

-- Jon
-- 
Jonathan Krueger    jkrueger@dgis.daitc.mil   uunet!dgis!jkrueger
Isn't it interesting that the first thing you do with your
color bitmapped window system on a network is emulate an ASR33?

davidm@uunet.UU.NET (David S. Masterson) (08/19/89)

Based on Jack Orenstein's message, I have a couple of questions:

1. In implementing an OODB on top of C++ using the notion of persistent and
transient type objects, when you refer to information in the OODB, is it
always by an object identifier?  How, therefore, would you find objects
meeting some qualification if you don't know its identifier?  Is this even a
type of query you would ask in an OODB world?  (you ALWAYS know the identifier
because even a qualification would be wrapped in an object which contains the
identifier?)

2.  Again using the architecture of persistent and transient objects,  is a
persistent object ever in memory?  Or is it just a transient copy of a
persistent object that is in memory?  Then, how are persistent objects
created?

David Masterson
uunet!cimshop!davidm
415-691-6311

dlw@odi.com (Dan Weinreb) (08/22/89)

In article <35@dgis.daitc.mil> jkrueger@dgis.daitc.mil (Jonathan Krueger) writes:

   That's interesting.  How does one build multiuser systems out of
   Symbolics computers?

Same as any other workstation.  You connect them on an Ethernet.  One
(at least) of the workstations is a Statice server, which has the disk
that holds the nonvolatile data itself.  The others act as clients,
retrieving and storing data via a network protocol built on TCP/IP.

   >Did someone give you the impression that proposed OODBMS systems do
   >not provide shared access to persistent data?

   Rather that no one gave me the impression that they did.  Do they?

Well, as I said, people use the term "OODBMS" to cover a wide range of
things.  Our product certainly does, and I strongly expect other
forthcoming OODBMS products to do so.  Statice already does, and so
does Servio-Logic's Gemstone.

   Would someone out there describe his production OODB and state how many
   concurrent users access it?  How many are actively updating it on a
   typical day?

You're looking for a benchmark, and a benchmark result.
Unfortunately, it's not easy; see my previous posting on the subject.
I can tell you that during debugging of Statice, we ran up to 140 or
so client workstations (mostly in Cambridge Mass and some in the Los
Angeles area), each accessing the single server about once every two
minutes to do a simple associative update transaction.  The server was
able to keep up with this.  We didn't try saturating the server with
transactions.  Each of these transactions was a true database
transaction, setting locks and forcing the log to disk and so on.
This doesn't prove anything about performance, of course, but it does
mean that I was serious when I said "shared access to persistent
data".

Daniel Weinreb		Object Design, Inc.		dlw@odi.com

dgh@unify.UUCP (David Harrington) (08/23/89)

In article <1989Aug18.135935.29299@odi.com> dlw@odi.com writes:
>In article <1037@unify.UUCP> dgh@unify.UUCP (David Harrington) writes:
>
>   I agree.  Look at the OODBMS companies like Ontologic.  They are either living
>   off an existing RDBMS which they are trying to re-cast as OO, or they are
>   dying.
>
>This is hardly a convincing argument.  Yes, Ontologic and Servio-Logic
>might be having problems or not growing as fast as they might, but
>it's not logical to leap to the conclusion that OODBMS technology
>isn't going to happen, or is only going to happen as a series of
>changes to existing RDBMS implementations. 

I didn't intend to make that point; indeed, I do believe that OODBMS
technology IS going to happen.  It was my understanding while I was at Servio
(yes, I'll admit to having a personal opinion about that company) that
Ontologic was grafting an OO layer onto their existing technology.  This, of
course, was seen by Servio as the wrong approach.  Subsequent events such as
the Index Technology deal (which I knew of) seem to tell me that the Ontologic
efforts are meeting some success.  I wish them well.

>There are many other
>factors that have shaped the courses of those two companies.  Merely
>because A is true and B is true does not mean that A caused B.  (It
>would be improper and highly rude of me to speculate about what those
>other factors are, but I can suggest that one has to do with the use
>of proprietary or unusual computer languages.  It's also possible (as
>you suggested) that they started a bit too early.)  

I was also suggesting that Servio has a fundamental problem with top
management, which is not qualified to run a technology company, much less
a leading edge technology company. (There is more than just opinion in this
statement; I'll be happy to share more info. over email).

The staff and managers at
Servio's GemStone group are fine people; too bad they won't ever get to
realize the fruits of their considerable labor in the market place.  (Example:
the CEO once said he wanted GS to be a "dBase killer" -- somewhat unclear on the
concept, I would suggest).

>
>Usual notice: I work for a start-up company producing an OODBMS.  In
>case anyone on this list doesn't recognize the name "Unify", Mr.
>Harrington works for a company that produces a relational DBMS and
>associated products.
>

Indeed, I do not speak against OODBMS either for myself or for Unify.  Anybody
in this business would be foolish to ignore this technology.

moiram@tekcae.CAX.TEK.COM (Moira Mallison) (08/24/89)

In article <1765@ethz.UUCP> marti@ethz.UUCP (Robert Marti) writes:
>With respect to the ongoing debate concerning OODBs vs extended RDBs...
>How about some benchmarks, controversial as they may be?

>Btw:  For me, functionality is a much more important point than
>performance.  However, most OODB followers emphasize the superior
>performance of OODBs.  So:  Put up or ...  :-)

We have recently published a technical report specifying the
Tektronix HyperModel Benchmark[1], an application-oriented evaluation
strategy for engineering DBMSs based on a generic hypertext system.
We outline functionality requirements as well as the performance
requirement that resulted from our study of engineering applications.

The functionality requirements include data model requirements (eg,
ability to model complex object structures, data type extensibility)
and database system requirements (eg. client-server architecture,
concurrency control).

To measure performance, we use 22 operations.  Several of the 
operations are similar to those specified in the (Sun) Simple
Database Operations Benchmark [2].  In addition, we define
several variations of closure traversals over a 1-N hierarchy
and an M-N hierarchy, and editing operations on the formnodes and
textnodes.

The technical report presents the results of implementing the
benchmark using the GemStone and Vbase systems.  I am currently
working on RDBMS implementations (Ingres, Unify).  However, for
reasons irrelevant to this discussion, the motivating factor 
behind the RDBMS implementations was not to compare them with
OODBMS, so the development is on a different platform. It is 
uncertain when we will get everything on a single platform,
so that we can make some real comparisons.


Moira Mallison
CAX Data Management

[1] Anderson, Berre, Mallison, Porter, Schneider; The Tektronix
HyperModel Benchmark Specification, Tektronix TR #89-05, August, 1989.

[2] Rubenstein, Kubicar, Cattell; "Benchmarking Simple Database Operations,"
in Proceedings of the 1987 ACM SIGMOD Int'l Conference on the Management of
Data, SF, CA, May, 1987.

bsa@telotech.UUCP (Brandon S. Allbery) (08/28/89)

In article <1989Aug17.211534.28345@odi.com>, jack@odi (Jack Orenstein) writes:
+---------------
| The two-language paradigm of RDBMSs complicates the writing of
| applications, and has performance consequences as well.  This is a
| problem with implementations of the relational model, and not inherent
| in the relational model. OO DBMSs avoid these problems by offering a
| single language in which to write applications, pushing the
| responsibility for database access into the system, away from the
| user.
+---------------

Which raises the possibility that a version of C could be written that would
be able to treat transient and persistent RDBMS data in the same way.  Heck,
I'm actually *doing* this, after a fashion -- a certain program I've been
working on wants to be able to select data from various "tables" (not in an
RDBMS, actually, but they can be collectively treated as an RDBMS without
indexes), and I'm writing a selection language which is somewhat C-like.  (Not
complete C, because it's not needed for what I'm doing in this case.  Even in
existing systems this could be precompiled into mixed C and SQL code.

BTW, what exactly do you mean by your assertion that a pointer to persistent
data need not be declared differently from transient data?  The program needs
to be notified of the association between a particular data type and/or an
instance of that data type and an external data store *somehow*.  I can see
two such instances (variables) being declared the same way, but one of them
will have *some* operation done on it which will associate it with an external
object, thus effecting a "dynamic" change in definition.  Also, what does that
operation look like (in the code)?

++Brandon (RDBMS hacker -- but I truly want to know about OODB's)
-- 
-=> Brandon S. Allbery @ telotech, inc.   (I do not speak for telotech.) <=-
Any comp.sources.misc postings sent to this address will be DISCARDED -- use
allbery@uunet.UU.NET instead. My boss doesn't pay me to moderate newsgroups.
** allbery@NCoast.ORG ** uunet!hal.cwru.edu!ncoast!{allbery,telotech!bsa} **