Path: utzoo!attcan!uunet!odi!dlw
From: dlw@odi.com (Dan Weinreb)
Newsgroups: comp.databases
Subject: Seamless integration with an OODB
Message-ID: <1989Aug17.205901.28760@odi.com>
Date: 17 Aug 89 20:59:01 GMT
Reply-To: dlw@odi.com
Organization: Object Design, Inc.
Lines: 43

Scott Simpson of TRW writes:

    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++. 

It depends on what you mean by "seamless".  The word is really a
"package deal", referring to a wide range of traits that are
considered desirable.  So a particular system isn't necessarily either
seamless or seamful; it's a matter of degree.  Here are the most
important things that I'd like to see in a C++ OODBMS, in the area of
integration of the language and the database system.

(1) They use exactly the same type system.  Any object and any type
that can be expressed in the language can be expressed in the database
system, and vice versa, without exception, including built-in types,
or classes supplied by a libarary-writer who was not aware of the
existence of the OODBMS (important in the age of reusable code, if and
when it arrives).  There should not be any special declaration for
"pointers to persistent" or "pointers to possibly persistent" data as
distinct from ordinary pointers.

(2) All basic language operations are written the same way regardless
of whether the objects that they're operating on are persistent or
transient.  ("Transient" means "like a normal C/C++ object", residing
on the heap or the stack or in static memory, disappearing when the
application program is finished.)  In particular, de-referencing a
pointer has exactly the same semantics and syntax regardless of
whether the objects are persistent or transient.  In general, data
manipulation (storing, fetching, testing, adding, printing, field
extraction, function calling, casting) looks exactly as it does for
normal C++.

(3) There is no "translation" operation between persistent and
transient objects that the programmer must go through.

In my opinion, a system that achieves these criteria has provided a
useful and high degree of integration between the language and the
database system.  Whether it qualifies as "seamless" depends on how
you use the word; I'd say such a system was very much on the
"seamless" side, that it was significantly less "seamy" than many
existing and some proposed systems that I've seen descriptions of.