We have a product that allows the persistent storage of CLOS objects. In fact, it is a full blown database system that offers a native Lisp API and a CLOS API. We feel this could be useful for people that are attempting to store CLOS objects persistently. If you feel it is appropriate, we would appreciate a mention in this section. Thanks, Randal Zoeller raz@itasca.com ITASCA ODBMS V2.2 Itasca Systems, Inc. 7850 Metro Parkway Minneapolis, MN 55425 sales@itasca.com (612) 851-3155 Sandy Miezwa (612) 851-3169 Introduction Itasca Systems develops, markets, and supports ITASCA, a distributed active object database management system and related tools. The initial research work for ITASCA occurred in the Object-Oriented and Distributed Systems Lab at the Microelectronics and Computer Technology Corporation (MCC) in Austin, Texas. The research was known as the ORION prototypes. The ITASCA Distributed ODBMS is a language neutral, full-featured, active object database that supports data access from various object languages. ITASCA allows clients to transparently access data that is distributed among multiple servers. ITASCA supports full dynamic schema modification that can be performed during any phase of the software lifecycle. Applications written in dissimilar and incompatible languages, such as C++ and CLOS, share objects through ITASCA. ITASCA stores methods inside the database, promoting reusability and maintainability. The only commercial ODBMS based upon the MCC Orion technology, ITASCA is considered by many to be the most feature-rich ODBMS on the market today. This overview describes release 2.2 of the ITASCA Distributed Object Database Management System. It describes how ITASCA functions, outlines its implementation features, and explains some of the system benefits. History of ITASCA ITASCA is based on a series of object database research prototypes. Work on these prototypes began in 1985 at the Microelectronics and Computer Technology Corporation (MCC) Object-Oriented and Distributed Systems Laboratory. MCC released the first prototype, ORION-1, in May, 1987, as a single-user system. MCC extended ORION-1 to the ORION-1SX prototype system and released it to the shareholder companies in April, 1988. ORION-1SX was a multi-user system with a multi-client, single server architecture. The third prototype, ORION-2, introduced a distributed, object-oriented architecture for a multi-user environment. MCC released the third prototype to shareholder companies in July, 1989. ORION-2 has a multi-client, multi-server architecture. Having met its objectives, MCC stopped all work on ORION at that time. Over five million dollars was spent for the three generations of prototypes. The ITASCA product is an extension and commercialization of the ORION-2 prototype from MCC. Itasca Systems has added major enhancements and features, improved the performance, and strengthened the code. It now runs on UNIX systems from multiple vendors. ITASCA is an industrial-strength, documented product, fully supported by Itasca Systems, Inc. Itasca Systems continues to develop tools and other products to work with ITASCA. Overview ITASCA employs a distributed architecture with private and shared objects spread across UNIX-based computers on a local-area network. The ITASCA model follows the object-oriented view that uniformly models any real-world entity as an object. Each object has a unique identifier along with a state and behavior. Attributes represent the state of an object. Methods (code) define the behavior of an object. A class object collects objects that share the same set of attributes and methods. Subclasses derive from existing classes. The resulting schema, or database definition, is a class hierarchy. Each subclass inherits all the attributes and methods of its superclasses. ITASCA supports multiple inheritance. A subclass may derive from more than one superclass. One of the breakthroughs of object-oriented technology is the reusability of code. ITASCA allows for the active management of both reusable code and data in an integrated system. Developers may write applications in C++, CLOS, C or Common Lisp. This means ITASCA is language neutral. Objects stored using one programming language can be accessed by other programming languages. It also means an application program need not be written in an object-oriented language. The ITASCA database management system has features belonging to most any database system. This includes persistent storage for data and schema, concurrency control and locking, transaction management, multiple security levels, and logging and recovery for both CPU and disk media failure. Additional features of ITASCA include dynamic schema modification, long-duration transactions, shared and private databases, distributed version control, distributed transaction management, distributed query management, distributed change notification, object migration, and an extensible architecture. Shared and private databases exist in a distributed environment in ITASCA. The shared database is distributed across workstations (sites) in a network. An ITASCA server controls the partition of the shared database at each site. ITASCA clients provide transparent access to the various partitions of the shared database. The architecture allows any number of private databases at each distributed database site. Data can move between private and shared databases. Private databases allow private data that is not shared with other users of the database. ITASCA stores the schema redundantly at each site to improve performance. The schema storage also includes code in the form of methods. Management of schema updates is automatic for all sites. This includes sites that were off-line during any changes. Automatic distribution of schema changes, including method code changes, simplifies database administration. ITASCA stores each instance of data in one site. The system or a user may move the data from one site to another to improve data locality. Access to moved data remains transparent. There is no need for a user or application to know the specificlocation of data in the ITASCA distributed database. ITASCA will automatically find the location of the data. This simplifies distributed application development. The developer can rely on ITASCA finding data in the distributed database. No single site acts as a master site, thus ITASCA's architecture has no single point of failure. ITASCA has neither a central data server nor a central name server. This is important for maintaining a database system with high availability in a networked workstation environment. ITASCA supports dynamic schema modification to create a flexible environment for changing or customizing a database system. Authorized users can add and remove attributes or change the subclass/superclass relationship at any time. Authorized users can also add or remove partitions of the shared database at any time. All this can be done interactively without affecting other parts of the ITASCA database at the time changes occur to the schema. There is no need to "bring the system down" or off-load/reload data to restructure the database. Dynamic schema modification can significantly reduce maintenance costs. It also is useful in environments where change to data definitions are normal or relatively frequent. ITASCA has a sophisticated security authorization technique tied to the class hierarchy. It supports both positive and negative authorizations at any level in the class hierarchy. For example, granting access to all objects but one requires only two authorizations: a global grant followed by a specific denial. Authorization extends to classes, instances of classes, attributes, and methods. Also, inheritance of authorization reduces the work of database administration. Long-duration transactions allow users to check objects out of the shared, distributed database into their private databases. Users can then change the objects in the private databases without affecting the shared database or other users. These changes can be committed to the private database. Then, at any later time, the user can check the updated object or objects back into the shared database. ITASCA supports version control of objects. A new version of an object promotes the original or parent object to restrict further changes to the parent. ITASCA also supports alternate versions such that multiple versions can have the same parent. Promoting an object version to a released status restricts any deletion of the object. ITASCA uses generic versions to dynamically reference the most recent or default version of an object without any intervention by a user or application. Change notification in ITASCA is either flag-based or message-based. Flag-based notification will identify an updated object upon querying the object for such information. It is a passive notification scheme. Message- based notification, on the other hand, is an active notification scheme. It will execute a method (or code) upon an update or other change to an object. Such methods can send mail messages or invoke other methods or programs. Memory management in ITASCA uses both page and object buffers. ITASCA has a traditional database page buffer scheme that contains pages with multiple objects. Desired objects move from the page buffer to an object buffer. The object buffer then provides ITASCA with enhanced in- memory performance because it contains only frequently-referenced objects. ---------------------------------------------------------------- Randal V. Zoeller raz@itasca.com (612) 851-3154 Itasca Systems, Inc., 7850 Metro Parkway, Minneapolis, MN 55425 ----------------------------------------------------------------