Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z - Internet FAQ Archives

Comp.Object FAQ Version 1.0.9 (04-02) Part 8/13

( Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Part8 - Part9 - Part10 - Part11 - Part12 - Part13 )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Counties ]
Archive-name: object-faq/part8
Last-Modified: 04/02/96
Version: 1.0.9

See reader questions & answers on this topic! - Help others by sharing your knowledge
Available for MS-DOS / MS-Windows (Borland C++, Microsoft), OS/2
(Borland C++), Novell, Macintosh MPW, and various Unix systems, including
NeXT (NeXTStep) and Sun OS (Sun C++).  See web site for details.

POET Software Corporation
999 Baker Way
Suite 100
San Mateo, CA 94404

Toll Free:  1-800-950-8845
Direct:     (415) 286-4640
Fax:        (415) 286-4630

Compuserve: GO POETSW

POET Software, GmbH
Fossredder 12
D 22359 Hamburg

Voice: +49 (0)40 / 60990 0
Fax:   +49 (0)40 / 60398 51

> Statice (Symbolics)

>From: (Markus Fischer)
Newsgroups: comp.databases.object,comp.lang.lisp
Subject: Statice now runs on Unix
Date: 15 Jun 93 14:55:48 GMT

Hi there,

since I've never seen 'Symbolics' or 'Statice' in
comp.database.object, this might be interesting:

A few days ago, Symbolics announced the availability of a beta-
release of their ODBMS 'Statice' on Unix platforms. It is quite
powerful and tightly integrated within Common Lisp.
Currently, Symbolics and LUCID are supported.
People (like me) used to Symbolics' Genera development environment 
can continue to use Statice there (where it has been already
successfully employed in 'real world' applications)
and now also use it on Unix Workstations.  (Those are the cheaper
boxes, I guess). Both kinds of platforms can be freely intermixed
in a network.

Statice is based on standards of Lisp: CLOS and CLIM 
(Common Lisp Object System, resp. Common Lisp Interface Manager)

Here's the address of Symbolics in Germany; they're mostly 
responsible for Statice on Unix:

Symbolics Systemhaus GmbH
Mergenthalerallee 77
6236 Eschborn (til June 31)
65760 Eschborn (from July 1)
Tel. (49) 6196-47220, Fax (49) 6196-481116

Contact person is Dr. Thomas Neumann (


"Update Database Schema" brings an existing database into conformance
with a modified schema.  Changes are classified as either compatible
(lossless, i.e., completely information-preserving) or incompatible
(i.e., potentially information-losing in the current implementation).
Basically, any change is compatible except for the following:

    -- If an attribute's type changes, all such attributes extant
    are re-initialized (nulled out).  Note that Statice permits
    an attribute to be of type T, the universal type.  Such an
    attribute can then take on any value without schema
    modification or information loss.

    -- If a type's inheritance (list of parents) changes, the
    type must be deleted and re-created, losing all extant
    instances of that type. This is Statice's most serious
    current limitation.  The simplest workaround is to employ a
    database dumper/loader (either the one supplied by Symbolics
    or a customized one) to save the information elements and
    then reload them into the modified schema.

[Lawrence G Mayka <lgm@IExist.ATT.COM>]

> UniSQL

UniSQL, Inc. produce a unified object-relational database systems that let
users move to an object-oriented paradigm while perserving existing investments in SQL-based applications.  Supports a while range of languages, databases
and platforms.  Prices start at $3,995.

UniSQL offers a state-of-the-art suite of integrated object-oriented database
systems and application development products which can be used separately or
together to support complex development projects which use object-oriented
development techniques, integrate sophisticated multimedia data, and require
true multidatabase access to relational and object-oriented databases. The
UniSQL product suite includes:

        UniSQL/X Database Management System;
        UniSQL/M Multidatabase System; and
        UniSQL/4GE Application Development Environment
        User interfaces include: C++, C, Object SQL, SmallTalk, and ODBC
        Database interfaces include: Ingres, Oracle, Sybase, UniSQL/X, and EDA/SQL

UniSQL offers:

- A wide selection of user interfaces including C++, SmallTalk, C, Microsoft's
  ODBC, both embedded (static and dynamic) and interactive Object SQL, and UniSQL
  and 3rd-party development tools.

- Mission-critical database features such as a high-level query language
  (SQL/X), cost-based query optimization, automatic transaction management,
  automatic concurrency control, dynamic schema evolution, dynamic authorization,
  physical disk structuring options, and installation tuning parameters.

- The UniSQL Multimedia Framework which provides natural and uniform database
  system support for all types of large unstructured data objects. The Multimedia
  Framework also provides for seamless integration of multimedia devices such as
  fax machines, CD jukeboxes, satellite feeds, image compression boards, etc.

- The UniSQL/M Multidatabase System enables developers to manage a collection
  of multi-vendor databases -- Ingres, Oracle, Sybase, DB2, UniSQL/X, and others
  -- as a single federated database system with full object-oriented

The majority of UniSQL customers use UniSQL database products for
mission-critical applications which require object-oriented, multimedia,
post-relational, and heterogeneous database capabilities.

A typical UniSQL customer is a Fortune 500 company, a commercial software
developer, or government organization that is using UniSQL database products

- support mission-critical application development projects which are being
  developed using object-oriented programming languages and development

- support applications which must integrate many different types of corporate
  data -- text and documents, tabular data, images and audio, engineering
  drawings, GIS data, procedural data (programs), etc. -- into a single
  application context.

- support the full object-oriented development paradigm using existing
  relational database systems such as Ingres, Oracle, Sybase, and DB2.

- logically integrate one or more relational and object-oriented databases to
  form a single, homogenized database server which supports both relational and
  object-oriented facilities.

UniSQL was founded in May 1990 by Dr. Won Kim, President and CEO, delivering
the UniSQL/X DBMS in March of 1992. With its world-class database research and
architectural team, UniSQL has perfected what the database industry has sought
since the mid-1980s: a fully object-oriented data model that is a natural
conceptual outgrowth of the popular relational model. Both the UniSQL/X DBMS
and the UniSQL/M Multidatabase System represent the first of a powerful new
generation of client-server database systems that support the full
object-oriented paradigm yet retain all of the strengths and capabilities of
relational database systems including support for ANSI-standard SQL.

For more information, contact:

UniSQL, Inc.
8911 N. Capital of Texas Hwy
Suite 2300
Austin, Texas 78759-7200

Voice:  1-800-451-3267
	(512) 343 7297
Fax:    (512) 343 7383

> Unisys Universal Repository 

Unisys Corporation makes available the Unisys Universal Repository, a fully
object-oriented repository for access, concurrent sharing and immediate
updating of all business information for workgroup software development.
Using an open, extensible architecture, the Universal Repository enables
encapsulation of legacy applications and data in addition to use of new
object-oriented information, and allows integration of leading development
tools and objects.

Information reuse is achieved through built-in hooks which encourages
data and business rule interchange among popular application development
tools. This enables developers to continue using their preferred tools
and to reuse existing models and data.

The Universal Repository uses the object database from Versant Object
Technology Corporation, EXCHANGE bridging technology from leading U.K.
integration and metadata specialist Software One Limited. EXCHANGE allows
use of repository data with a wide range of the most popular front-end
design, analysis and modeling tools including Texas Instruments IEF,
Knowledgeware IEW and ADW, Intersolv Excelerator and Unisys LINC Design
Assistant III.  When integrated with the Universal Repository, information
created by tools can also be stored for reuse. A CASE Data Interchange
Format (CDIF) bridge supports the loading and unloading of business
information to and from the repository.  Users can also access the
Software One Core Model (SOCM), a neutral interoperability model comprised
of the objects required to describe tool models.

The Unisys Universal Repository is available now for Sun Solaris
platforms, with support for UNIX and Windows clients. A version for
Windows NT Client and Windows NT Server is also under development.

The Unisys Universal Repository is available immediately for independent
software vendors (ISVs) under OEM licensing agreements. Sales to end-users
will be through select resellers.  The introductory stand alone price
ranges from $1,900 ($U.S.) to $9,000 ($U.S.) depending on selected

Call for more information and the location of the nearest Unisys
authorized reseller.

Contraste Europe S.A.
OSMOS Relational Object Database

Voice: (714) 380-6460
Email: Buchanan@SJ.Unisys.Com

Contact: Gordon DeGrandis

> Versant (Versant Object Technology)

  See also:

Versant is a client/server object database management system (ODBMS) targeted
at distributed, multi-user applications.  Versant runs on UNIX and PC platforms. 
Versant provides transparent language interfaces from object-oriented 
programming languages such as C++ and Smalltalk.  Versant also supports a C API.

Versant is built with an object-level architecture, which means that operations 
are generally performed on the object (or group thereof) level.  Key Versant 
features include:


*  Object-level locking for fine granularity concurrency control
*  Server-based query processing to reduce network I/O
*  Dual caching to speed warm traversals
*  Dynamic space reclamation and reuse


*  Immutable, logical object identifiers for data integrity
*  Object migration (transparent relocation across nodes)
*  Transparent cross-node references (distributed db)
*  Automatic two-phase commit


*  Schema evolution (online via lazy updates)
*  Standard workgroup features (e.g., versioning, checkin/out)
*  Detachable, personal databases
*  DBA utilities

Provide object database management system and development tools for
multi-user, distributed environments.  Supports C++ and Smalltalk

Argos is their application development environment product. It's built
on ParcPlace VisualWorks.

Versant Object Technology Corporation
1380 Willow Road
Menlo Park, CA  94025

Voice: (415) 329-7500
Fax:   (415) 325-2380

3872 Larkspur
CourtLoveland, CO 80538

Voice: (303) 593-9871
Fax:   (303) 593-9874


> VisualWorks

ParcPlace Systems, Inc. produce Smalltalk based development tools including
VisualWorks, a client/server tool that includes a database application
creator for rapid application development.

ParcPlace Systems, Inc.
999 East Arques Avenue
Sunnyvale, CA  94086-4593

Voice: (408) 481-9090

Other Models

Research Systems


GRAS - A Graph-Oriented Database System for SE Applications
Copyright (C) 1987-1993  Lehrstuhl Informatik III, RWTH Aachen

See the GNU Library General Public License for copyright details.

Contact Adresses:

    Dr. Andy Schuerr 
    Lehrstuhl fuer Informatik III,
    University of Technology Aachen (RWTH Aachen),
    Ahornstr. 55,
    D-5100 Aachen

Email to

GRAS is a database system which has been designed according
to the requirements resulting from software engineering
applications. Software development environments are composed
of tools which operate on complex, highly structured data.
In order to model such data in a natural way, we have selected
attributed graphs as GRAS' underlying data model.

A first prototype of the GRAS (GRAph Storage) system - described
in /BL 85/ - was already realized in 1985. Since this time
gradually improving versions of the system have been used at
different sites within the software engineering projects
IPSEN /Na 90/, Rigi /MK 88/, MERLIN /DG 90/, and CADDY /EHH 89/.
Based on these experiences, almost all parts of the original
prototype have been redesigned and reimplemented.

Thus, nowadays a stable and efficiently working single-process
version of the system GRAS with interfaces for the programming
languages Modula-2 and C is available as free software for Sun
workstations (the GRAS system itself is implemented in Modula-2
and consists of many layers which might be reusable for the
implementation of other systems):

  Via anonymous ftp from
  in directory /pub/unix/GRAS in file gras.<version-no>.tar.Z.

  There are several files containing documentation, sources, binaries,
  application examples, and libraries. All binaries are for Sun/4
  machines. Sun/3 binaries are shipped only if explicitly requested.

  You have to use the following sequence of operations for installing
  the GRAS system at your site:

  1) 'ftp' (with login name "anonymous"
     and password equal to your mail address).
  2) 'cd pub/unix/GRAS' (for changing the current directory).
  3) 'binary' (command for changing ftp mode).
  4) 'get gras.<version-no.>' (use 'ls' for finding the currently used
      GRAS version nr.).
  5) 'bye' (for exiting ftp).
  6) 'uncompress gras.<version-no>.tar'.
  7) 'tar xvf gras.<version-no>.tar' (creates a subdirectory GRAS_2 for
     the Modula-2 implementation of GRAS including its C-interface).
  8) Follow the instructions in file GRAS_2/README.

The current version has programming interfaces for Modula-2 and C
and supports:

  - the manipulation of persistent attributed, directed node- and
    edge-labeled graphs (including the creation of very long
    attributes and of attribute indexes).

  - the manipulation of temporary/volatile generic sets/relations/lists,

  - the coordination of graph accesses by different GRAS applications
    (multiple-read/single-write access with graphs as lock units),

  - error recovery based on shadow pages and forward logs,

  - nested transactions and linear undo/redo of arbitrarily long
    sequences of already committed graph modifying operations based
    on forward and backward logs,

  - event-handling (with certain kinds of graph-modifications
    as events and graph-modifying transactions as event-handlers),

  - primitives for version control comprising the capability
    for efficiently storing graphs as forward/backward deltas to
    other graphs,

  - and primitives for declaring graph schemes and for incremental
    evaluation of derived attributes.

Furthermore, tools for (un-)compressing graphs and a X11R5-based
graph browser are part of this release.

A multi-process version of the system GRAS supporting the inter-
action of multiple client and multiple server processes within
one local area network is nearby completion (version 6.0/0).

Thus, the GRAS system may be considered to be the core of a graph
oriented DBMS environment. The development of such an environment
based on a very high-level specifications language named PROGRES
is under way (the underlying calculus of this specification language
are so-called PROgrammed GRaph REwriting Systems).

This environment will comprise the following tools (a prerelease
of this environment might be made available upon request):

  - a syntax-directed editor for graph schemes, graph rewrite rules,
    and sequences of graph rewrite rules,

  - an incrementally working consistency checker,

  - an incrementally working compiler&interpreter translating
    PROGRES specifications into sequences of GRAS procedure
    calls (for C as well as for Modula-2),

  - and an "enhanced" graph (scheme) browser.


Refer to the following publications for further info about GRAS, PROGRES,
and related topics:

/BL85/          Brandes, Lewerentz: A Non-Standard Data Base System within
                a Software Development Environment. In Proc. of the Workshop
                on Software Engineering Environments for Programming-in-the-
                Large, pp 113-121, Cape Cod, June 1985

/DHKPRS90/      Dewal, Hormann, Kelter, Platz, Roschewski, Schoepe: Evaluation
                of Object Management Systems. Memorandum 44, University
                Dortmund, March 1990

/Feye92/	Feye A.: Compilation of Path Expressions (in German), Diploma
		Thesis, RWTH Aachen (1992)

/Hoefer92/	Hoefer F.: Incremental Attribute Evaluation for Graphs (in
		German), Diploma Thesis, RWTH Aachen (1992)

/HPRS90/        Hormann, Platz, Roschweski, Schoepe: The Hypermodel Benchmark,
                Description, Execution and Results. Memorandum 53, University
                Dortmund, September 1990

/KSW92/ *       Kiesel, Schuerr, Westfechtel: GRAS, A Graph-Oriented Database
                System for (Software) Engineering Applications. Proc. CASE 93,
		Lee, Reid, Jarzabek (eds.): Proc. CASE '93, 6th Int. Conf. on
		Computer-Aided Software Engineering, IEEE Computer Society
		Press (1993), pp 272-286
		Also:  Technical Report AIB 92-44, 

/Klein92/	Klein P.: The PROGRES Graph Code Machine (in German), Diploma
		Thesis, RWTH Aachen (1992)

/Kossing92/	Kossing P.: Modelling of Abstract Syntax Graphs for normalized
		EBNFs (in German), Diploma Thesis, RWTH Aachen (1992)

/LS88/          Lewerentz, Schuerr: GRAS, a Management System for Graph-
                Like Documents. In Proceedings of the Third International
                Conference on Data and Knowledge Bases, Morgan Kaufmann
                Publ. Inc. (1988), pp 19-31

/Nagl89/        Nagl (ed.): Proc. WG'89 Workshop on Graphtheoretic Concepts
                in Computer Science, LNCS 411, Springer-Verlag (1989)

/NS91/          Nagl, Schuerr: A Specification Environment for Graph Grammars,
                in Proc. 4th Int. Workshop on Graph-Grammars and Their
                Application to Computer Science, LNCS 532, Springer-
                Verlag 1991, pp 599-609

/Schuerr89/     Schuerr: Introduction to PROGRES, an Attribute Graph Grammar
                Based Specification Language, in: /Nagl89/, pp 151-165

/Schuerr91a/ *  Schuerr: PROGRES: A VHL-Language Based on Graph Grammars,
                in Proc. 4th Int. Workshop on Graph-Grammars and Their
                Application to Computer Science, LNCS 532, Springer-
                Verlag 1991, pp 641-659
		Also:  Technical Report AIB 90-16

/Schuerr91b/	Schuerr: Operational Specifications with Programmed Graph
		Rewriting Systems: Theory, Tools, and Applications, 
		Dissertation, Deutscher Universitaetsverlag (1991) (in German)

/SZ91/ *        Schuerr, Zuendorf: Nondeterministic Control Structures for
                Graph Rewriting Systems, in Proc. WG'91 Workshop in Graph-
                theoretic Concepts in Computer Science, LNCS 570, Springer-
                Verlag 1992, pp 48-62
		Also: Technical Report AIB 91-17

/Westfe89/      Westfechtel: Extension of a Graph Storage for Software
                Documents with Primitives for Undo/Redo and Revision Control.
                Technical Report AIB Nr. 89-8, Aachen University of Technology,

/Westfe91/      Westfechtel: Revisionskontrolle in einer integrierten Soft-
                wareentwicklungsumgebung, Dissertation, RWTH Aachen, 1991

/Zuendorf89/    Zuendorf: Kontrollstrukturen fuer die Spezifikationssprache
                PROGRES, Diplomarbeit, RWTH Aachen, 1989

/Zuendorf92/ *  Zuendorf A.: Implementation of the Imperative/Rule Based
                Language PROGRES, Technical Report AIB 92-38, RWTH Aachen,
                Germany (1992)

/Zuendorf93/ *  Zuendorf A.: A Heuristic Solution for the (Sub-) Graph
                Isomorphism Problem in Executing PROGRES, Technical
                Report AIB 93-5, RWTH Aachen, Germany (1993)
* : All reports marked with an asterisk are available via anonymous ftp from in directory /pub/reports/... .
See also PROGRES documentation.

[See also APPENDIX E]

> IRIS (HP Labs)

[Iris is a system out of HP Labs that began as a prototype and eventually
became a commercial product.  I believe it was eventually incorporated into
the new HP product, OpenODB. - clamen]

Long and short system summaries can be found in:

[FISH89] D.H. Fishman et. al. Overview of the Iris DBMS. In Won.
         Kim and Frederick H. Lochovsky, editors,
         Object-Oriented Concepts, Databases and Applications,
         chapter 10, pages 219--250. Addison-Wesley, Reading,
         MA, 1989.

[FBC+87] D.H. Fishman, D. Beech, H.P. Cate, E.C. Chow,
         T. Connors, J.W. Davis, N. Derrett, C.G. Hock, W. Kent,
         P. Lyngbaek, B. Mahbod, M.A. Neimat, T.A. Tyan, and
         M.C. Shan. Iris:  An object-oriented database
         management system. ACM Transactions on Office
         Information Systems, 5(1):48--69, January 1987.

The abstract of the latter (written early in the project) follows:

   The Iris database management system is a research prototype of
   a next-generation database management system intended  to meet
   the needs of new and emerging database applications, including
   office    automation and knowledge-based systems,  engineering
   test and measurement, and hardware  and software design.  Iris
   is exploring a rich set of  new database capabilities required
   by    these   applications,   including  rich    data-modeling
   constructs, direct  database support for inference,  novel and
   extensible data types, for example to  support graphic images,
   voice,    text,   vectors,  and  matrices,    support for long
   transactions   spanning  minutes  to  many  days, and multiple
   versions of data.  These capabilities are, in addition  to the
   usual support for  permanence   of data, controlled   sharing,
   backup and recovery.

   The   Iris   DBMS consists   of  (1) a  query   processor that
   implements  the   Iris object-oriented  data    model, (2)   a
   Relational Storage Subsystem (RSS) -like  storage manager that
   provides  access paths and  concurrency  control, backup   and
   recovery, and (3) a collection of programmatic and interactive
   interfaces.  The data   model supports  high-level  structural
   abstractions,  such  as  classification, generalization,   and
   aggregation, as  well  as behavioral    abstractions.      The
   interfaces to  Iris  include an  object-oriented extension  to

On Schema Evolution (from original survey):
Objects in the Iris system may acquire or lose types dynamically.
Thus, if an object no longer matches a changed definition, the user
can choose to remove the type from the object instead of modifying the
object to match the type.  In general, Iris tends to restrict class
modifications so that object modifications are not necessary.  For
example, a class cannot be removed unless it has no instances and new
supertype-subtype relationships cannot be established.

Commercial Systems

> IDL (Persistent Data Systems)

IDL is a schema definition language. Schema modifications are defined
in IDL, requiring ad-hoc offline transformations of the database, in
general.  A simple class of transformations can be handled by
IDL->ASCII and ASCII->IDL translators (i.e., integer format changes,
list->array, attribute addition).

[conversation with Ellen Borison of Persistent Data Systems]

        John R. Nestor. "IDL: The Language and Its
        Implementation". Prentice Hall. Englewood Cliffs,
        NJ., 1989.

> Kala
                         Kala Technical Brief


Kala(tm) is a Persistent Data Server managing distributed, shared,
arbitrarily complex and evolving persistent data. Kala is highly
efficient and secure. Kala manages the visibility of persistent data
elements to its clients, thus supporting any types of transactions,
versions, access control, security, configurations. Kala does not
restrict you to any particular model. Kala provides the mechanism, but
imposes no policy. Usable as either a link library communicating to a
server or as a standalone, Kala is compact and simple.

Kala is used for applications such as: kernel of DBMS products,
substrate for extended file systems, implementation of language
persistence, data manager for groupware applications as well as
applications which deal with large, complex, and changing volumes of
data (text databases, financial distributed transaction systems). Our
current customers use Kala in applications ranging from CASE
repositories to CAD systems, from document management for financial
institutions to OODBMS platforms, from real-time applications to
database research.  Kala is a component of broad reuse.


The simplest persistent data storage available to you is the file
system on your disk drive. File systems have some attractive
characteristics; their performance is good, they can hold any data,
they're easy to use, and, of course, the price is right. Conversely,
files are unreliable.  They provide no mechanism for in maintaining
data consistency and only primitive data sharing facilities. Few file
systems offer version control and all require that you transform data
between "internal" and "external" forms all the time.

Unlike a file system, a true database management system provides
mechanisms for sharing data and for ensuring the integrity of the
data.  It supports transactions and version control, although the
specifics of these functions may not be exactly what your application
needs. Finally, a database system is scalable, and much more robust
than a file when your hardware or software fails.

The downside to a database system is that, compared to a file system,
it is slower by an order of magnitude or more. Also, a database system
generally confines you to dealing only with the kind of data that it
can handle. In addition, a database is usually very complicated,
difficult to learn and use, and expensive, both in terms of your cost
of operation and in the amount of system resources they consume.

Whether you choose a file system or a database manager, then, you
have to sacrifice either economy or performance. Is there a happy
medium?  Something with the speed and flexibility of files, the
reliability, shareability and robustness of databases, and at a cost
that won't break your wallet or the available hardware? Sure there is!
Kala is a first in a new breed of products, persistent data servers,
aimed squarely at the yawning gap between DBMSs and file systems.


Kala is *not* a DBMS. Instead, you use Kala whenever the few canned
combinations of DBMS features do not meet the needs of your
application. A DBMS product constrains you to accept *its* choice of
an end-user graphical interface, a query language binding, a specific
high level data or object model, a particular transaction model, a
single versioning scheme, etc. This either compromises your
application's functionality, or forces your to spend substantial
development effort and money to bridge the impedance mismatch to the
application.  Instead, Kala allows *you* to develop no more and no
less than the functionality you need. You build your domain specific
functionality our of a small set of primitives with very little code.
Your gains in productivity, efficiency, and flexibility are

To sustain this level of flexibility and reuse, Kala manages any data
that you can represent in machine memory out of bits and references.
Examples include records, dynamically linked graphs and lists,
executable code, and object encapsulations.

Kala can handle data as small as one bit, and as large as the virtual
memory and more, while being totally unaware of the data's semantics.
Its stores and retrieves data efficiently, and compactly over a
distributed and dynamically reconfigurable set of Stores. Upon
retrieval, Kala dynamically relocates embedded references to retain
the original topological structure of the data, thus preserving
referential integrity. Kala also supports active data, physical store
management, and automatic archiving.

Kala repackages the fundamentals and universals of data management in
one reusable data server, separating them from the application domain
specific models and policies. Kala defines a low level interoperabi-
lity point for the data storage domain, just as X does for the display
domain and Postscript does for the printing domain.

Kala has matured through four successive versions to its present
industrial strength implementation and stable API. Kala is lean,
compact, and portable. Kala is a high performance, low overhead
system. We call it a Reduced Instruction Set Engine (RISE). Unlike
large, complex, and typically bulky DBMS products, Kala is small,
simple, and suitable for managing anywhere from a single diskette to
terabytes of distributed data.


* For those who need functionality traditionally associated with
  databases, but cannot tolerate the overhead and complications DBMS
  products introduce, Kala offers a flexible, compact, performant,
  elegant, and simple alternative.

* For those whose application domain requires data models where the
  mapping to those offered by today's DBMS products is cumbersome,
  introduces development and execution overhead, and is not portable
  across multiple linguistic and environmental platforms, Kala offers
  a data model independent interface against any data model
  expressible in terms of bits and pointers can be easily built.

* For those who need DBMS functionality or qualities that no single
  DBMS product now has, Kala offers the opportunity to build that
  functionality now with little effort out of a simple set of
  primitives, and not wait for one vendor or another to deliver
  it later.

* For those who have determined that the only viable option for their
  application's persistent data needs is the file system, and have
  resined to the idea that they will have to build everything else
  they need from scratch, Kala offers an off-the-shelf implementation
  without loss of any of files' advantages.

* For those who need performance, size, portability, storage
  compactness, and industrial strength that no single DBMS product can
  now satisfy, Kala offers all of the above now.

* For those who realize that while object-level interoperability is a
  strong desideratum, the likelihood of a single, universal such model
  in the foreseeable future is quite low, Kala offers a solid, long
  term alternative. Data store interoperability that brings us beyond
  file systems is the best practical bet. Kala is the basis for data
  store interoperability now.

* Finally, for all of you who are concerned about the economics of
  software, and take the view that there are many elements that
  could contribute negatively to the soundness of your business, such
  as operational costs, software maintenance costs, software licensing
  costs, software development and learning costs, etc., you will find
  Kala an economically sound, sensible, and practical product.


- The execution architecture is that of multiple (communicating)
  servers and multiple clients. Kala can also be configured in a
  standalone (single process) mode. Kala's IPC is built for maximum
  performance, portable to any given datagram protocol.

- The managed data elements are made out of uninterpreted bits and
  references. Data elements (named `monads') are universally uniquely
  identified. Bits are stored with no overhead. References,
  represented in memory as native machine pointers, are stored
  very compactly, introducing an average of 2.5 bytes overhead.

- Kala is a fully recoverable system, short of media damage. Recovery
  from hardware failures can be supported by the layer beneath Kala.

- The Kala primitives support arbitrary transaction models, including
  classic short transactions, long (persistent) transactions, nested
  transactions, shared transactions, pessimistic and optimistic
  policies, etc. Concurrency control is achieved through two locking
  mechanisms (short-term and long-term (persistent, shared) locking),
  with full support for atomicity of operations and two-phase commit.

- The Kala primitives support arbitrary versioning models, allowing
  versions to co-exist in split/rejoined networks, various version
  organization strategies (single-thread, tree, DAG, etc.). Kala
  primitives provide mechanisms for arbitrary access and update
  triggers, such as notifications, security checks upon access/update,
  etc. __ with no limitations on what the trigger code does. Kala
  provides protection measures against virus and other intruding

- The Kala primitives support a wide range of access control, security
  and protection models, including revocable access rights, access
  control without the overhead of ACL management, arbitrary access
  validation routines, etc. Kala does not introduce any more security
  holes than the operating environment already has.

- Kala has primitives for physical store allocation and de-allocation
  management, for a wide spectrum of store administrative tasks, as
  well as licensing administration. The latter includes application-
  sensitive time-limited client-connect-based licensing, as well as
  metered (connect/load/store) usage. Kala can be set up to do
  automatic archiving and backup of its physical store.

- Kala provides a wide spectrum of licensing schemes, usable by
  platforms and applications built upon Kala to their customer base.
  Kala provides renewable licenses, perpetual licenses, full
  protection against duplication without hardware (hostid) support,
  metered (pay-by-use) usage, etc.

- And more ... not fitting on this page-long Technical Brief.


o Kala is available now on Sun platforms (SunOS / 68K & SPARC), as
  well as on 80x86/MS-DOS (both Microsoft and Borland compilers &
  runtimes supported) platforms. If you are interested in a port to
  your favorite platform, call us to discuss our Development and
  Porting Partnership Programme.

o Kala's interface is ANSI C, also callable from C++. If you are
  interested in an interface or a binding to your favorite programming
  language, please call us to discuss out Development Partnership

o For pricing and other information, please contact us by phone, fax
  or via e-mail at

On Schema Evolution (from original survey):

Kala manages an untyped persistent store, implementing the semantics
of robust, distributed, secure, changing, and shareable persistent
data.  Layers built upon the Kala platform can implement the semantics
of objects with the same properties.

As it operates below the schema layer, Kala does not address schema
evolution directly. However, It supports the building of schema'ed
layers above it and below the application, and those layers can
provide for schema evolution conveniently using Kala primitives.
This parts-box approach requires extra work on the part of the developer
compared to out-of-the-box solutions, but provides power and
flexibility sufficient for relatively low cost solutions in
difficult environments (e.g. graph-structured data, dynamic classing) 
where no out-of-the-box solution is available.

        Segui S. Simmel and Ivan Godard. "The Kala Basket: A
        Semantic Primitive Unifying Object Transactions,
        Access Control, Versions, annd Configurations

Penobscot Development Corporation

Penobscot Development produces and markets Kala, a persistent data server
managing distributed, shared, arbitrarily complex and evolving persistent
data.  Kala manages the visibility of persistent data elements to its
clients, thus supports all types of transactions, versions, access
control, security, configurations. Kala does not restrict you to any
particular model. Kala provides the mechanism, but imposes no policy.
Usable as either a link library communicating to a server or as standalone,
Kala is compact and simple.

Kala is not an OODBMS. Instead, you use Kala whenever the few canned
combinations of DBMS features do not meet the needs of your application.
This parts-box approach requires extra work on the part of the developer
compared to out-of-the-box solutions, but provides power and flexibility
sufficient for relatively low cost solutions in difficult environmentsi
(e.g. graph-structured data, dynamic classing) where no out-of-the-box
solution is available.

Penobscot Development Corporation
One Kendall Square Building
Suite 2200
Cambridge, MA  02139-1564

Voice: (617) 267-5252
Fax:   (617) 859-9597

> Pick

With Pick and its variants you only have problems if you want to
redefine an existing field.  Because of the way the data are stored
and the separation of the data and the dictionary you can define
additional fields in the dictionary without having to do anything to
the data - a facility which we have found very useful in a number of

There is no general facility to redefine an existing field - you just
make whatever changes are required in the dictionary then write an
Info Basic program to change the data.  We have seldom needed to do
this, but it has not been complicated to do.

If a field in the database is no longer used, it is often easiest
simply to delete the reference to that field in the dictionary, and
accept the storage overhead of the unused data.  In such cases, while
the data cannot be accessed through the query language, (Pick)Basic
programs can still access them.

[Geoff Miller <>]


Research Systems

> Penguin (Stanford)

Penguin is an object-oriented interface to relational databases.
Penguin has its own simple language-independent object model with
inheritance for composite objects defined as views (called
view-objects) of a relational database.  These view-objects represent
data according to application requirements in such a way that multiple
applications can share overlapping, but different, sets of data.
Multiple applications may share data by having overlapping schemata
with differing composite objects and differing inheritance mappings.
We have a C++ binding, which supports multiple inheritance.  The
result is a framework for collaboration among multiple users, each
with differing perspectives about the system and its data.

For additional information, please contact


``A C++ Binding for Penguin: a System for Data Sharing among
Heterogeneous Object Models,'' Arthur M. Keller, Catherine Hamon,
Foundations on Data Organization (FODO) 93, October 1993, Chicago.

``Querying Heterogeneous Object Views of a Relational Database,''
Tetsuya Takahashi and Arthur M. Keller, Int. Symp. on Next Generation
Database Systems and their applications, Fukuoka, Japan, September
1993, to appear.

``Updating Relational Databases through Object-Based Views,'' by
Thierry Barsalou, Niki Siambela, Arthur M. Keller, and Gio Wiederhold,
ACM SIGMOD, Denver, CO, May 1991.

``Unifying Database and Programming Language Concepts Using the Object
Model'' (extended abstract), Arthur M. Keller, Int. Workshop on
Object-Oriented Database Systems, IEEE Computer Society, Pacific
Grove, CA, September 1986.

Commercial Systems

See Databases & Development Sept. 5, 1994, p1. 

"Lisp, Smalltalk Languages Given Database Systems"

Franz, based in Berkeley, Calif., is now shipping AllegroStore, which the
company calls the first object database system designed for object-oriented
[...] The database is based on the ObjectStore engine from Object Design, also
in Burlington.  It supports multiple clients and servers, [...]

Franz is at 800-333-7260 or 510-548-3600.

> DBTools.h++

Rogue Wave Software

A leading producer of C++ class libraries including Tools.h++, Heap.h++,
C++ Booch Components, and DBTools.h++ for accessing relational databases,
such as SYBASE, from C++ programs.  Rogue Wave recently merged with
Inmark Development (zApp), so their products now includes visual builders,
visual interfaces, and code generators for C++ developers.

Rogue Wave Software, Inc.
260 S.W. Madison Avenue
P.O. Box 2328
Corvallis, OR  97339

Toll Free:  1-800-487-3217
Direct:     (503) 754-3010
Fax:        (503) 757-6650


Object Gateway is a modeling, mapping and code generation tool that lets
you look at existing relational data in Oracle, Sybase and other servers
as if they are object oriented.  It is a 100% client-resident and runs on
Microsoft Windows platforms.
Schema Genie, the design time component of Object Gateway, lets you design an
ODMG-style object model for your SQL database. Once the model is designed,
you can generate a variety of language interfaces for it (C++, C, OLE
Automation and Visual Basic are currently supported).
Object Engine is the run-time component of the system and it implements the
object data model by supporting features such as activation and deactivation of
objects, complex object assembly, inheritance, relationships and cache
management.  Object Browser is a component of the system that lets you browse
through and manipulate data based on the object model that you defined.
The central tenet of Object Gateway is that inside every complex relational
database, there is an object model waiting to get out. Such a model reduces
the abstraction level mismatch between modern, object oriented client tools
and SQL servers. Automatic generation of an object oriented data access layer
eliminates the need for programmers to hand-craft code to do the same.
For more information, please contact Sierra Atlantic at the address
    Sierra Atlantic Inc
    830 Hillview Court, Suite 270,
    Milpitas, CA 95035
    Phone: (408) 956 3006
    Fax:   (408) 956 3001

> Persistence


Persistence is an application development tool which provides object
oriented access to existing relational data.  Persistence uses an
automatic code generator to convert object models into C++ classes
which know how to read and write themselves to a relational database.

Leverage existing data

Persistence enables object oriented access to existing relational
databases. Applications built with Persistence can work side by side
with legacy systems.

Automate database access

By generating the methods to convert relational data into objects,
Persistence saves the developer from having to write literally hundreds
of lines of code per class.

Speed application development

With Persistence, major changes to the application object model can be
completed in minutes, not weeks.


Persistence generates tested, bug-free code. Using Persistence helps
ensure the reliability and reusability of your applications.


At Runtime, Persistence manages an object cache to enhance performance
while ensuring data integrity. The Persistence object cache can provide
a factor of ten performance improvement for data intensive


Code generated by Persistence is database independent. You can choose
which database to work with at link step, increasing application

                        TECHNICAL SPECIFICATIONS

The Persistence Database Interface Generator converts object schemas
into C++ classes.


Object schema    --->   Persistence    ---->    Generated
                        Generator               Classes
                                                Object Cache
                                                Legacy Data


Each class generated by Persistence maps to a table or view in the database.
- Query using ANSI SQL or attribute values
- Add custom code to generated classes
- Preserve custom code when model changes


Persistence supports inheritance of attributes, methods and relationships.
- Propagate superclass queries to subclasses
- Use virtual methods for polymorphism


Persistence maps associations to foreign keys in the database. Each class has methods to access related classes.
- Ensure referential integrity between classes
- Specify delete constraints for associations

Object Caching

The Persistence Runtime Object Management System caches objects during
transactions and ensures data integrity. In the object cache,
Persistence "swizzles" foreign key attributes into in-memory pointers,
speeding object traversal.


When a transaction is committed, Persistence walks through the object
cache and writes out changes to the database.


Platforms/Operating systems
Persistence will support all major Unix and Intel platforms
- Sun/SunOS 4.x, Solaris 2.x
- HP/HP-UX 8.0, 9.0
- IBM/AIX (planned 11/93)
- Intel/NT (planned 3/94)

Development Tools

Persistence supports all major C++ compilers and integrates with GE's
OMTool, allowing developers to go straight from an object model to a
running C++ application.
- Cfront 2.1: ObjectCenter 1.0, SPARCompiler, ObjectWorks
- Cfront 3.0: ObjectCenter 2.0, SPARCompiler, Softbench C++
- GE's OMTool


Persistence provides database independence. With our Objectivity
integration, we also provide a clear migration path to object
- Oracle V6, V7
- Sybase 4.x
- Ingres 6.x
- Objectivity ODBMS
- Informix (planned 9/93)
- ODBC (planned 3/94)

                            CUSTOMER QUOTES

"We wanted to use object technology while continuing to support our
legacy systems. Persistence made this feasible by automating over 30
percent of our development cycle." Steve Hunter, Sterling Software

"Persistence cut our development time by approximately 40%, because we
would have had to do all the mapping functions ourselves." Jim
Adamczyk, Partner, Andersen Consulting

"I'm convinced we'll save weeks or months of time because of
Persistence." Mike Kubicar, SunSoft Defect Tracking Team

"The good thing is that you can change your object model and just
re-generate the database interface classes at the press of a button."
Richard Browett, Product manager, K2 Software Developments, Ltd.

"The Persistence package saved at least 25 to 50 percent of the
development time, and seemed extremely robust. Support has been nothing
short of phenomenal." Stew Schiffman, DuPont Research and Development


Persistence Software, Inc.
1700 S. Amphlett Blvd.
Suite 250
San Mateo, CA 94402

Voice: 1-800-803-8491
       (415) 341-7733
Fax:   (415) 341-8432

> Subtleware

Connecting C++ with Relational Databases

Subtleware for C++ (Subtleware) is a software development toolset which 
openly automates C++ connectivity to relational databases by providing:

*  A C++ pre-processor that automatically generates the code necessary 
   to read and write C++ objects to a relational database.

*  A schema mapper that defines C++ classes from relational database 
   schema, and

*  A class library that simplifies C++ application access to existing 
   relational data,


Subtleware vastly simplifies the coding necessary for C++ to work with 
relational databases: 

*  It jump starts application development by generating C++ class 
   definitions from relational database schema.

*  It speeds application development by eliminating the need to 
   write hundreds of lines of database mapping code per class. 

*  It dramatically reduces application maintenance time by eliminating
   the need to modify the database mapping code with each C++ class 
   definition change. 

As a result, C++ application developers can focus on what brings value to 
their organization, application development; and, C++ application 
development projects can reduce their development costs as well as speed 
their time-to-market.


*  Subtleware adds value to your C++ development environment!  
   Subtleware fits into your existing C++ development environment by 
   working with your preferred C++ design tools, compilers, and class 
   libraries. No Subtleware-specific design tools are necessary.

*  Subtleware works directly with your existing C++ class definitions!

*  Subtleware adds value to your relational database systems!  
   Your C++ applications can work concurrently and share data with 
   your other relational database applications. Subtleware makes your
   existing relational database into a powerful OODBMS.

*  Subtleware library source code and generated code is freely 
   available!  No run-time fees are imposed.


Subtleware runs on a wide range of computing platforms:
*  PC's running Windows 3.x, Windows NT, OS/2, and DOS.
*  Unix workstations, including Sun and HP.

Subtleware supports a variety of database interfaces:
  *  ANSI SQL                *  ODBC
  *  Oracle                  *  Sybase 
  *  Watcom                  *  Informix (planned 8/95)
  *  Ingres (planned 10/95) 
  *  ODMG (planned 12/95)

Subtleware supports virtually all C++ 2.x and 3.x compilers, including:
*  Borland C++
*  Microsoft Visual C++
*  HP C++
*  SunPro C++


Subtleware generates well-documented, bug-free code. Furthermore, 
Subtleware code generation can be customized for your application 
requirements. Using Subtleware greatly increases the reliability and 
reusability of your applications.


Subtleware generates static SQL code that can be linked directly into your 
application or packaged as a DLL or shared library. Subtleware does not 
require the use of high-overhead, run-time modules for managing your 
persistent objects.

User Contributions:

Comment about this article, ask questions, or add new information about this topic:

Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Part8 - Part9 - Part10 - Part11 - Part12 - Part13

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
Bob Hathaway <>

Last Update March 27 2014 @ 02:11 PM