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.