Objectivity/DB has a fully distributed client/server architecture that transparently manages objects distributed across heterogeneous environments and multiple databases. It provides an application interface that uses transparent indirection to ensure integrity and provides a single logical view of all information, with all operations working transparently on any database on the network, with scalable performance as users and objects increase. A higher-level Object Definition Language (ODL) is available as well as a C functional interface, integrated C++ interface, and SQL++.
Objectivity/DB [Reference: Technical Overview, Objectivity, 1993], a product of Objectivity, Inc. of Menlo Park, CA, provides an integrated C++ programming interface with an emphasis on the DBMS engine for robustness and scalability from workgroups to enterprise-wide production applications. In production use today with more than 50,000 end users licensed, it supports a fully distributed, rather than central-server, architecture, with all operations working transparently over a mixture of multiple databases, schemas, users, and computers, and over heterogeneous hardware, operating systems, and networks. The language interface includes a C++ class library interface, soon to be ODMG; a C function library; and SQL++, supporting query predicates with either SQL or C++ syntax, interactively or programmatically. Over forty administrative and GUI tools provide both an interactive and programmatic interface, and a messaging backplane allows third party tools integration at four different levels, with a list of partners at all levels.
One of the key architectural concepts of Objectivity/DB is an object reference mechanism that ensures data integrity. Unlike traditional ODBMSs that use direct pointers, which become invalid after commit and hence lead to crashes and corrupt databases, Objectivity/DB uses an indirection to guarantee safe reference. Transparent to the user, this indirection requires an extra test and pointer dereference, or a couple of cycles, which is not measurable in most applications. However, it ensures integrity of all references, even across transaction boundaries, resulting in production quality robustness. Also, it provides object level granularity for the object manager, allowing it to move, cluster, and swap objects as necessary, one of the keys required for scalability in objects and users. Finally, it allows object-level granularity for current features, such as heterogeneity and versioning, and future extensions, such as object-level security.
A higher-level Object Definition Language (ODL) is provided that allows declaration of modeling concepts such as bi-directional associations, behavior of associations between objects as they version (move, copy drop), and propagation of methods across associations. These then result in automatically generated methods and declarations for both C++ and C. The standard C++ API allows application programmers to work with any standard compilers and debuggers, with no extra pre-processors, providing ODBMS capabilities via overloading C++ operators (new, ->, etc.), and declarations via provided classes (for references, etc.).
Workgroup through enterprise-wide and cross-enterprise computing is supported via a distributed client/server architecture that provides a single logical view over multiple databases on heterogeneous machines. The user sees a logical view of objects connected to objects and need not worry that one object is in a database on a Sun workstation, while another may be in a database under Windows or VMS. All operations work transparently across this environment, including atomic transactions with two-phase commit, propagating methods, and versioning. Objects may be moved between databases and platforms without affecting working applications or requiring changes to the applications. Multiple schemas may be created, without affecting other users or databases, and may be used simultaneously with shared schemas, allowing local groups to define their own models but still connect to other groups. Databases may be detached from this shared environment (federated database) and used on portable devices, reconnected or moved to different (compatible) environment, or distributed as parts or image libraries. Gateways to RDBMSs are provided via third-party integration with Persistence Software, and more generally to any foreign data store, as long as the user installs the appropriate access methods, extending the single-logical-view to include read/write access to arbitrary foreign data stores. Together, these allow delegation of responsibilities to the appropriate users, integration with existing systems, and gradual migration toward full enterprise-wide sharing.
The on-demand object manager directly and automatically manages object access and buffering, rather than relying on system facilities such as virtual memory or user manual get/put calls. Mechanisms used include multiple buffer pools locally and remotely, b-trees, hashing, scoped names, keys, and iterators, with distributed catalogues for schemas and databases. A direct connection is established between the user and the objects used, so that users do not conflict unless and until they are competing for the same objects, thus avoiding the traditional central-server bottleneck. Short transactions are based on traditional (transient) locks, owned by the process, and group together an arbitrary set of operations. Long transactions are based on persistent locks, owned by the user, and provide the same arbitrary grouping. Default concurrency is two-phase locking and serialization, but extensions available include MROW, or multiple-readers concurrent with one-writer, and allow users to lock with or without wait or with timed waits, to implement more sophisticated mechanisms.
Objects may be modeled using C++ structures augmented by classes provided such as strings, dictionaries, and relationship management, as well as some particular domain libraries. A simple object is a C++ class (or C structure) with associated access methods. A complex object may include multiple varrays, each being a dynamically varying sized array of arbitrary structure. A composite object is any network of related objects that acts as a single object, both structurally and behaviorally, via propagation of behaviors to component objects. Any number of composite objects may be contained in composite objects, and a single object may participate in any number of composites. The relationship mechanism supports uni- and bi-directional relationships, one-to-one, one-to-many, and many-to-many. Versioning is supported at object granularity, may be turned on or off at any time for each object, may be restricted to linear or allow branching with multiple writers. References to versioned objects may be to a specific version or to the default version, which may be separately specified by a method and may allow multiple defaults. Schema and object evolution are supported via versioning of the type-defining objects. Each time a type definition is changed, its defining object is versioned, allowing arbitrary changes. Objects may then be instances of the old or new type version. Object evolution or upgrading to the new type version is supported by the user writing conversion methods which are installed and invoked by the system.
ANSI SQL query is supported in the SQL++ product. Predicate syntax may be either C++ or SQL. The ODBC and SQL Access Group (SAG) protocols are supported. Queries may be invoked programatically or interactively, with ad hoc support. Access to object features is available via methods and traversal of relationships.
Over forty administrative and developer tools are provided, each with both an interactive and programmatic interface. These include GUI object and type browsers, query browsers, report generator, tools to examine and force short and long locks, to move objects and databases, etc. On-line incremental backup provides a consistent network-wide snapshot, including referential integrity across all databases, and runs incremental and full database backups with no need to acquiesce the databases and no interference with active applications. All tools are built around a messaging backplane, which supports four levels of integration with user and third-party tools. Integrated products include HP SoftBench (full operational level), CenterLine's ObjectCenter (tool level), Persistence RDBMS gateway, PTech and ProtoSoft Design and Analysis (language level), and XVT and UIM/X (compatibility level).
Objectivity/DB is resold by Digital Equipment Corporation as DEC Object/DB, providing a multi-billion-dollar second source vendor. Over 50,000 end users are licensed in production use, with applications including real-time telecommunications, aerospace, defense, case, CAD/CAM, CIM, manufacturing, oil & gas, process control, transportation, multi-media, case, document management, financial analysis, and corporate information management. Platform support includes all Sun, all DEC (including VMS, alpha, OSF-1), HP/9000 series (both 68xxx and PA-RISC), IBM RS/6000, NCR 3300, SGI, Windows 3.1, and Windows NT.
On Schema Evolution (from original survey): In the just-released Version 2.0 (shipping Oct 92), schema evolution is supported via dynamic versioning of type-defining objects [ie. class versions -- SMC], and via a step-by-step approach that allows conversion of instance data via user-provided conversion methods. Also, a full dynamic type manager interface is available for doing fancier things.
Drew Wade Objectivity, Inc. 800 El Camino Real Menlo Park, CA 94025 USA firstname.lastname@example.org 1(415)688-8000 voice 1(415)325-0939 fax admin ass't: Vickie Clements (email@example.com) information: firstname.lastname@example.org
This document was translated by ms2html v1.8 on 01.06.95.