* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download 6.11 Platform Support
Survey
Document related concepts
Oracle Database wikipedia , lookup
Extensible Storage Engine wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Serializability wikipedia , lookup
Functional Database Model wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Relational model wikipedia , lookup
Clusterpoint wikipedia , lookup
ContactPoint wikipedia , lookup
Concurrency control wikipedia , lookup
Transcript
OODBMS Comparison Comparison of Object Oriented Database Systems By Ali Barfatani: Poet & GemStone sections David Buchanan: Versant section & Conclusion Matthew Buchanan: Objectivity & ObjectStore Sections Mark Downing: Jasmine section & Introduction Napier University, Edinburgh -1- OODBMS Comparison Table of Contents 1.0 1.1 1.2 1.3 1.4 ABSTRACT .............................................................................................................................. 4 PURPOSE ..................................................................................................................................... 4 METHODS .................................................................................................................................... 4 OBJECTIVES ................................................................................................................................ 4 DISCUSSION ................................................................................................................................ 4 2.0 INTRODUCTION .................................................................................................................... 5 3.0 LITERATURE REVIEW ........................................................................................................ 6 3.1 COMPARISON OF FOUR OODBMS, PETER KUENG, INSTITUTE OF FRIBOUG RUE FAUCIGNY 2, SWITZERLAND. ..................................................................................................................................... 6 3.2 OBJECT DATABASE, AN ODMG APPROACH, RICHARD COOPER................................................. 6 3.3 THE JASMINE OBJECT DATABASE MULTIMEDIA APPLICATIONS FOR THE WEB, SETRAG KHOSHAFIAN, SURAPOL DASANANDA, NORAYR MINASSIAN ....... ERROR! BOOKMARK NOT DEFINED. 3.4 OBJECT-ORIENTED DATABASE SYSTEMS, ELISE BERTINO, LORENZO MARTINO......................... 7 3.5 JASMINE OBJECT DATABASE WEB SITE ....................................................................................... 7 3.6 EVALUATION OF OBJECT-ORIENTED DATABASE SYSTEMS, C. HUEMER, G. KAPPEL, S. RAUSCHSHOTT, W. RETZSCHITZEGGER, A MIN TJOA, S. VIEWEG, R. WAGNER ................................................ 8 3.7 OBJECTSTORE TECHNICAL OVERVIEW ....................................................................................... 8 3.8 OBJECTIVITY/DB TECHNICAL OVERVIEW ................................................................................... 8 3.9 DATABASE MANAGEMENT SYSTEMS: RELATIONAL, OBJECT-RELATIONAL, AND OBJECTORIENTED DATA MODELS, L. BERGHOLT, J. STEEN DUE, T. HOHN, J. LINDSKOV KNUDSEN, K. HJERRILD NIELSEN, T. SONNE OLESEN, E. HAHN PEDERSEN ............................................................... 9 3.10 THE JASMINE OBJECT DATABASE MULTIMEDIA APPLICATIONS FOR THE WEB, SETRAG KHOSHAFIAN, SURAPOL DASANANDA, NORAYR MINASSIAN ............................................................... 9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 6.0 6.1 6.2 6.3 6.4 VERSANT VERSION 6.0...................................................................................................... 10 BACKGROUND ........................................................................................................................... 10 ARCHITECTURE ......................................................................................................................... 10 RECOVERY ................................................................................................................................ 10 CONCURRENCY ......................................................................................................................... 10 SCHEMA EVOLUTION ................................................................................................................ 11 VERSIONING .............................................................................................................................. 11 PROGRAMMING LANGUAGES .................................................................................................... 11 PERSISTENCE ............................................................................................................................. 11 TOOLS ....................................................................................................................................... 11 QUERY SUPPORT ....................................................................................................................... 11 LEGACY SUPPORT ..................................................................................................................... 12 PLATFORM SUPPORT ................................................................................................................. 12 JASMINE ................................................................................................................................ 12 BACKGROUND ........................................................................................................................... 12 ARCHITECTURE ......................................................................................................................... 12 RECOVERY ................................................................................................................................ 13 CONCURRENCY ......................................................................................................................... 13 SCHEMA EVOLUTION ................................................................................................................ 13 VERSIONING .............................................................................................................................. 13 PROGRAMMING LANGUAGES .................................................................................................... 14 PERSISTENCE ............................................................................................................................. 14 TOOLS ....................................................................................................................................... 14 QUERY SUPPORT ....................................................................................................................... 14 PLATFORM SUPPORT ................................................................................................................. 15 GEMSTONE........................................................................................................................... 15 BACKGROUND ........................................................................................................................... 15 ARCHITECTURE ......................................................................................................................... 15 RECOVERY ................................................................................................................................ 16 CONCURRENCY ......................................................................................................................... 16 -2- OODBMS Comparison 6.5 6.6 6.7 6.8 6.9 6.10 6.11 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 SCHEMA EVOLUTION ................................................................................................................ 16 VERSIONING .............................................................................................................................. 17 PROGRAMMING LANGUAGES .................................................................................................... 17 PERSISTENCE ............................................................................................................................. 17 TOOLS ....................................................................................................................................... 17 QUERY SUPPORT ....................................................................................................................... 18 PLATFORM SUPPORT ................................................................................................................. 18 POET/FASTOBJECTS ......................................................................................................... 18 BACKGROUND ........................................................................................................................... 18 ARCHITECTURE ......................................................................................................................... 18 RECOVERY ................................................................................................................................ 19 CONCURRENCY ......................................................................................................................... 19 SCHEMA EVOLUTION ................................................................................................................ 19 VERSIONING .............................................................................................................................. 19 PROGRAMMING LANGUAGES .................................................................................................... 19 PERSISTENCE ............................................................................................................................. 19 TOOLS ....................................................................................................................................... 19 QUERY LANGUAGE SUPPORT .................................................................................................... 20 PLATFORM SUPPORT ................................................................................................................. 20 OBJECTIVITY/DB................................................................................................................ 20 BACKGROUND ........................................................................................................................... 20 ARCHITECTURE ......................................................................................................................... 21 RECOVERY ................................................................................................................................ 21 CONCURRENCY ......................................................................................................................... 21 SCHEMA EVOLUTION ................................................................................................................ 21 VERSIONING .............................................................................................................................. 22 PROGRAMMING LANGUAGES .................................................................................................... 22 PERSISTENCE ............................................................................................................................. 22 TOOLS ....................................................................................................................................... 22 QUERY SUPPORT ....................................................................................................................... 23 LEGACY SUPPORT ..................................................................................................................... 23 PLATFORM SUPPORT ................................................................................................................. 23 OBJECTSTORE .................................................................................................................... 24 BACKGROUND ........................................................................................................................... 24 ARCHITECTURE ......................................................................................................................... 24 RECOVERY ................................................................................................................................ 24 CONCURRENCY ......................................................................................................................... 24 SCHEMA EVOLUTION ................................................................................................................ 24 VERSIONING .............................................................................................................................. 24 PROGRAMMING LANGUAGES & INTERFACES ............................................................................ 25 PERSISTENCE ............................................................................................................................. 25 TOOLS ....................................................................................................................................... 25 QUERY SUPPORT ....................................................................................................................... 25 LEGACY SUPPORT ..................................................................................................................... 25 PLATFORM SUPPORT ................................................................................................................. 25 10.0 RESOURCES ......................................................................................................................... 26 11.0 CONCLUSION ....................................................................................................................... 26 12.0 BIBLIOGRAPHY .................................................................................................................. 28 12.1 REFERENCE TITLES ................................................................................................................... 28 12.2 WEB RESOURCES ...................................................................................................................... 28 -3- OODBMS Comparison 1.0 Abstract 1.1 Purpose The aim of this study was to determine the features of an OODBS with respect to the Object Database Management Group (ODMG) specifications and compare and contrast the functionality of the features within current Object Oriented Database Systems. 1.2 Methods We initially performed a literature review of available journals, articles, web resources and reference books. We then compiled a list of thirty-five OODB systems of which we selected six systems to compare based upon their market share, their current availability and Vendor support. The systems selected were Gemstone, Poet, ObjectStore, Objectivity/DB, Jasmine and Versant. We then compiled a list of criteria, which we applied to each database in turn. 1.3 Objectives 1. Gather and distinguish relevant information by performing a comprehensive literature review. 2. Consolidate the information to establish which systems are available today and distinguish systems that are no longer supported. 3. Select the systems for comparison. 4. Produce a list of criteria to compare the systems against. 5. Apply our selected criteria against each of the selected systems to produce a report that will highlight the particular features of each individual system. 6. Provide a reliable up to date resource to develop a presentation for the OODB module. 7. Further develop our understanding of OODBMS products and vendors. 1.4 Discussion Each of the systems analysed within this report implement the functionality set out within the ODMG specifications. Each system however implements the specifications differently and incorporate enhanced features depending on the market the products are aimed at. -4- OODBMS Comparison 2.0 Introduction We selected six databases from a list of thirty-five systems that we compiled through our literature review. To select the systems for the comparison we initially used market share to distinguish the most popular products. However after further analysis we discovered two of the systems o2 and ITICASA are no longer supported by vendors and have become discontinued. For this reason we introduced two further criteria: vendor support and availability of the system. Gemstone Versant Object Store Poet Jasmine, Objectity/DB and Others Figure 2.1 – OODBMS Market Share Of the six systems featured Gemstone was the first to appear in 1987. Gemstone was one of the first stages of Object Oriented Database Management System (OODBMS). The early versions of OODBMS were created to support a persistent language and were used on standalone systems. They were based on proprietary language and did not use an industrial standard platform. 1989 saw the emergence of the second stage of development in OODBMS with databases such as Objectivity, which was developed in 1988 along with Versant. The second stage in the development saw the use of client server architecture and joint platforms: C++, X Windows and Unix workstations. August 1990 saw the third major stage in the development of OODBMS such as Versant and Poet. These OODBMS were defined as Database Management Systems (DBMS), which supported advanced characteristics such as version support and had a Data Definition Language/Data Manipulation Language that was object orientated and computationally complete. Since the late 1990s Versant have shifted the product focus towards the object orientated database system providing a tightly integrated e-commerce solution. Jasmine appeared -5- OODBMS Comparison in 1997 with all of the major functionality expected of an OODB as it moved from a research system to a commercial system. The ODMG Group has effectively become the international standard for Object Orientated Database Systems. The members are responsible for setting the direction of Object Orientated Database Management Systems, such as specifying the object query language and the object definition language. Out of the companies that we are investigating the following companies are members. Poet Software Corporation Objectivity .Inc Reviewer Members Computer Associates Versant Corporation After selecting our systems. We used the resources we had compiled to select a list of criteria to use as our basis of comparison between the systems. The criteria selected were: 3.0 Architecture / Schema Recovery Concurrency Persistence Schema Evolution Versioning Programming Languages Support Tools Query Support Legacy Support Platform Support Literature review 3.1 Comparison of Four ooDBMS, Peter Kueng, Institute of Friboug Rue Faucigny 2, Switzerland. This article was an update on a previous paper (Comparison of ten ooDBMS) by the same author and is in fact two papers that compare eight OODBMS. The comparisons were very informative and helped us choose some of our criteria for our comparisons. The paper, however, was published in 1997 and is now dated. Noticeably o2 was included in the comparison; this product is no longer available, and other systems such as Versant had progressed to newer versions resulting in the actual technical content being unreliable. 3.2 Object Database, An ODMG Approach, Richard Cooper. Chapter 16, A Survey of other OODBMS products, provided us with information regarding the OODBMS vendors who were contributing to the Object Database Management Group at the time of publishing. The author provided information regarding the different approaches of vendors and the technical differences between their products. This resource helped us to -6- OODBMS Comparison develop a template for our comparisons. The book however published in 1997 was out of date. The author focussed heavily on o2 and the actual systems compared have progressed over the last five years making some of the technical content unreliable. 3.3 Object-Oriented Database Systems, Elise Bertino, Lorenzo Martino This book was published in 1993. One of biggest limitations of this book is its age. The comparisons the book provides are brief and not very in-depth, and many of the systems compared are no longer around. The other section of the book that did not focus on fundamental explanations object orientated terminology briefly explained the object orientated database historical background. However, we found the authors use of generations confusing, as shown in the following reference: ‘The first third generation products, Itasca, was lunched in August 1990, only a few months after the second generation OODBMS.’ This reference is taken from the book, Object-Oriented Database Systems written by Elosa Bertino and Lorenze Martine from Chapter 1 Section 1.5, titled A look at the Past, page 9, 3rd paragraph. This section misinterpreted the use of generations to stand for Generation Languages such as 4GL. Apart from that we found it an interesting overview on the historical development of Object Orientated Databases. The biggest criticism of the book is that it only provides a brief overview of the subject. 3.4 Jasmine Object Database web site URL: http://www3.ca.com/Solutions/ProductOption.asp?ID=3008 This web address above was the only location on the Computer Associates website where Jasmine Database information was available form. We would initially expect that that the Computer Associates website to have been more in depth and to have a detailed information covering all aspects of the Jasmine database. The product offered section of the website led us to the databse product description. The document provides a brief business oriented description of some of the database’s features, however, it shows the Jasmine database in a positive light with no critical comparison with other existing object orientated database. In our opinion it would have been of greater interest if they had explained in further detail. The follow bullet point is referenced from the second page at the bottom of the column on the left hand side. Administrative Tools: Full backup and recovery services are provided; these can run off-line or while the database is operating. The Browser includes graphical screens that simplify data administration tasks -7- OODBMS Comparison The reference above is an example of the level of detail in the product description. 3.5 Evaluation of Object-Oriented Database Systems, C. Huemer, G. Kappel, S. Rausch-Shott, W. Retzschitzegger, A Min Tjoa, S. Vieweg, R. Wagner This paper, published in 1994, provides a framework for evaluating OODBS’s. The aim of the paper is to provide an evaluation catalogue, with 20 sections, each with about 25 sub criteria, resulting in over 500 questions, although the catalogue is not included in the paper. However, for the purposes of this report, the paper was a good starting point for defining the criteria that we used for the comparison, which we derived from the 20 sections provided in the paper. The paper assumes a certain amount of knowledge from the reader, and so doesn’t go into much detail of the meaning behind many of the criteria. Instead, it highlights the relevancy of each criterion, for example: Query Optimization addresses the efficient execution of queries. Our investigations in this section mainly focus on the use of the above mentioned features (indexes, clustering) as well as the management of the query optimizer (tuning and interrogating). While the first part of the paper was relevant to this report, it should be said that 21 out of its 26 pages were dedicated to methods for benchmarking OODB’s, an area that is far beyond the scope of this report. However, we found the paper to be a helpful and informative source of information on the process of evaluating an OODBS. 3.6 ObjectStore Technical Overview This is a technical manual providing an overview of the features of ObjectStore. It was created in 1997, but according to the developers, there have been no major enhancements in the database that invalidate any of the information in the manual. This was the only reliable, up-to-date source of information on ObjectStore that was freely available. It is lacking in information in what could be considered key areas – persistence, for example. However, it is reasonably unbiased for a manufacturer-produced technical overview, and highlights features would not be considered advantageous. 3.7 Objectivity/DB Technical Overview This is a technical manual very similar in style to the ObjectStore technical overview. It provides a very comprehensive overview of Objectivity/DB’s capabilities, frequently illustrated with examples. -8- OODBMS Comparison 3.8 Database Management Systems: Relational, Object-Relational, and Object-Oriented Data Models, L. Bergholt, J. Steen Due, T. Hohn, J. Lindskov Knudsen, K. Hjerrild Nielsen, T. Sonne Olesen, E. Hahn Pedersen URL: http://citeseer.nj.nec.com/bergholt98database.html The comparisons of existing systems in this document we found interesting, however it is clear to see that the document is not recent as it includes information on o2, which was discontinued two years ago. We also found inaccurate information in the criteria breakdown, for example: 8.2.6 Versioning of Data POET does not seem to offer versioning of data. This fact is inaccurate as POET clearly does support versioning of data. The authors of the document review Jasmine, although this is the only occasion where we found a comparison between Jasmine and other OODB’s. 3.9 The Jasmine Object Database Multimedia Applications For The Web, Setrag Khoshafian, Surapol Dasananda, Norayr Minassian This book provides detailed technical insight into to the Jasmine databases. The intended audience is Jasmine database administrators and Jasmine programmers. Unfortunately there are no comparisons of other existing object orientated database systems. The authors made no attempt to cover issues regarding schema evolution or versioning. Chapter 8 covers persistence, but the author does not discuss the issues of Jasmine persistence in programming languages like C, C++, or ActiveX. Even though the book did not cover all of the areas required it was a valuable resource, as the available information about Jasmine is extremely limited even at the Computer Associates website. We felt the conclusion was just a summary of the main points that could be deduced from reading the chapters. -9- OODBMS Comparison 4.0 Versant Version 6.0 4.1 Background The Versant corporation, based in California USA, developed their flagship product, the Versant Object Database Management System in 1988 and have concentrated their business on the OODB market ever since. Versant OO technology is used by over 650 companies including British Airways and the USA Department of Defense. Versant currently supplies two main products. Versant enJin, which acts as a middleman between E-Commerce Application and Relational Database servers to improve the system performance by incorporating OODB technology. Versant Developer Suite, which is an Object Oriented Database Management System and is the focus of this report. 4.2 Architecture Versant is based on the Client Server architecture and incorporates the logical management of objects rather than physical representations such as pages. Each object is assigned a unique object identity, which facilitates distribution and replication while maintaining integrity. The Object level architecture provides fine granular locking to maximize concurrency. The Versant architecture supports Multi-threading and Multi session clients. The location of the objects is transparently managed by the system and caching is used to store objects to improve performance. Versant uses an “automatic failover” system for distributed systems where two or more server nodes are automatically synchronized to maintain functionality whenever there is a server failure. The Versant system allows for 65,000 databases per network each storing up to 281 tera-objects. Each object can be of unlimited size. Versant uses a clustering architecture, where the clusters of objects are constantly maintained by the system and embedded objects are contained within parent objects, which avoids the use of fragmentation. 4.3 Recovery A dual logging feature manages recovery where both physical and logical logs are maintained by the system. A roll forward mechanism is used to recover the database when an inconsistent state occurs. The system rolls back to a desired point and committed transactions stored within the logs are then reapplied to the database. 4.4 Concurrency Versant provides different levels of locking. Locking can be set at the object level but can also be applied to classes or instances. Persistent locks support long transactions, which are often necessary in OODB systems. Short locks are also provided for shorter transactions as well as “nolocks” for optimistic locking. The Versant system also provides the functionality to allow users to define their own locks. The system avoids deadlock problems by automatically denying locks that would result in a deadlock situation. Nested transactions are supported while the check in/check out mechanism establishes a persistent lock on objects to allow long transactions to complete. - 10 - OODBMS Comparison 4.5 Schema Evolution Schema evolution is handled dynamically so the database does not need to stop while the changes are being made. Version 6 supports Online Schema Evolution, which dynamically manages simple and complex changes to the schema. 4.6 Versioning Versioning graphs are used to facilitate version management. From each version a relationship is maintained which allows its parents and children to be accessed. Configurations can also be managed which control transient, working and released versions. 4.7 Programming Languages Versant supports Java and C++. The Versant Java Interface (VJI) enables Java objects to be stored and shared between applications without mapping and provides complete transparent persistence. Versants C++ Interface allows the transparent persistence of objects. It also supports C++ pointers, which allows objects to be retrieved at the object level resulting in very high performance. 4.8 Persistence Versant’s C++ and Java Interface provide transparent persistence of objects where the application model is an exact representation of the data model. Persistent C++ objects are created and destroyed using standard constructors and destructors. Persistence is set at the class level and is also set by inheritance. Persistence in Java is set by reachability, which means any objects that are not reachable from the persistent root are not made persistent. Persistence can also be set using the GUI provided by Versant. 4.9 Tools Administration console GUI which facilitates: o The stopping, starting and creation of databases o Configuration of locking within the system o Management of Users o Monitoring of transactions within the system o Database tuning XML Toolkit to allow objects to be imported and exported as XML objects to allow objects to be exchanged by different OODBMS Object inspector which allows users to browse the schema graphically Graphical Query builder 4.10 Query Support Versant ODBMS provides two query engines 1. Versant Query Language (VQL) – Queries are performed server side and support complex navigation, cursors and parallel queries - 11 - OODBMS Comparison 2. Standard Query Language (SQL) – This engine has ODBC and JDBC support to allow current reporting tools to generate ad hoc queries against the VDS 4.11 Legacy Support Versant / M from Version 5.0 has been superceded by the SQL engine stated above which incorporates ODBC and JDBC support to provide multi database support to ensure databases such as Oracle and DB2 can communicate with and query the OODBMS. 4.12 Platform Support Hardware HP 9000 700/800 IBM RS/6000 Operating System HP-UX 11.0 AIX4.3 Windows 2000 and NT 4.0 Red Hat Linux 7.1 Solaris 2.8 Intel Pentium PC Sun SPARC 5.0 Jasmine 5.1 Background Jasmine became a commercial system 1997. It was initially created by Fujitsu Limited and Computer Associates International Inc as a joint research project. Computer Associates is a member of the Object Management Group (ODMG). Jasmine incorporates object orientated and multimedia technology along with web centric applications, to provide a tightly integrated solution for e-commerce and web applications. 5.2 Architecture Jasmine is able to support client and web based applications and able to run on a heterogeneous network. The object-orientated database is designed to manage a large variety of multimedia file types. To make effective use of network resources, Jasmine uses cached classes and instance objects that are intelligently cached along with techniques like incremental access of multimedia data and data compression. To simplify population of multimedia items into the database all the user requires to do is drag and drop the item. To increase efficiency of Jasmine, simple tasks can be delegated to automated agents. The goal that Jasmine aims for is to allow users to create applications with very little or programming work. Jasmine supports both single and multiple inheritance, and it also supports one to one, one to many and many to many relationships between objects and classes. Jasmine has three main class families that are systemCF, mediaCF and sqlCF. These class families provide the foundation for Jasmines functionality and methods for storage. - 12 - OODBMS Comparison 5.3 Recovery Jasmine uses database log files for non-catastrophic failure such as rolling back a transaction. Journaling is used in the event of catastrophic failure such as media failure. Journal files are backups of the entire database. Journaling however does not include backing up of multimedia files. Facilities within Jasmine allow full and partial backups to be done either online or offline. The database can also perform incremental backups of the database. The database log files use a circular log file to maximise use of storage space. The logs can also be used to help roll forward to the last processed transactions after the restoration of the database from journal files. To restore information from a backed up copy of the database this will require the Jasmine server to be shutdown while a restore takes place. Object versioning and locking are used in transaction recovery, for example if a deadlock was detected. 5.4 Concurrency Jasmine uses a combination of object locking and versioning for concurrency control. Jasmine supports a total of five locking granularities as listed below: Database Locking – When the database is locked it will block all other applications from accessing the database, so only administrative applications such as archiveDatabase and restoreDatabase are allowed to perform database locking. The database’s loading and unloading utilities require the server to be shutdown. This effectively has the same effect as locking. Store Locking – When an application obtains a lock on a store this prevents any other applications from being able to access the store. Users cannot perform a store lock. Stores are essential to the Jasmine database as all of the Jasmine family classes are created in a store. Stores are used to increase performance of family classes. Class Locking – Users are able to perform class locking that will result in an entire class being locked. That in turn will result in the whole table being locked at the storage level. An example of when class locking is used is when a user does a query on a class that does not use an index. Page Locking – Page locking is done automatically, and is performed on an index page. Object Locking – this is used by all user applications.. The object lock is placed on the index id for the instance of the object. Jasmine can be configured to handle lock escalation. If a resource is locked by a transaction the second transaction will normally wait. Jasmine will check to ensure no deadlocks will occur before granting a write lock. Jasmine’s readonly transactions do not lock any objects; this means that read-only transactions in Jasmine are performed much faster than transactions that require write-locks. 5.5 Schema Evolution Jasmine is capable of handling the implementation of a class evoked during the lifetime of the database. 5.6 Versioning Jasmine supports versioning of objects that is essential for concurrency control, which is common in most object orientated database applications. An - 13 - OODBMS Comparison example is if an update ODQL transaction is performed, a new version of the specified object is created and in doing this it creates a second version of the object. The new updated version of the object is not exposed to other transactions until the transaction has been committed. 5.7 Programming Languages Jasmine supports Visual C++ 4.2 or higher and equivalent visual interface versions of Java. The following languages are supported by Jasmine. Java C++ C ActiveX 5.8 Persistence Class definitions are created in Java, and then they are loaded in to the database, Jasmine cannot modify the class definitions. Jasmine is used to store objects that are created by the Java application. Jasmine has two methods of developing a persistent class: Map existing Jasmine classes onto Java classes. The mapped classes are persistent-capable. Using these classes, the new Java classes are persistencecapable and can be developed and deployed. The second approach is to pre-process the Java classes with the Java persistent pre-processor (JPP) to generate the class definitions in Jasmine. JPP also generates augmentations to the Java classes. Once the Java classes are compiled with a Java compiler, the compiled copy of the code uses persistent Java libraries. The now persistent objects are managed by Jasmine. 5.9 Tools Jasmine comes with a range of development applications for both developers and database administrators, which are listed below. WebLink provides web-database connectivity along with extending the HTML standard with the use of special tags that allow database access and update statements. One key advantage of WebLink is that is can process multiple user requests. Jasmine Studio combines integrated tools for both database design and administration utilities through a graphical user interface. Jasmine supports ActiveX and Code Components, which means that Jasmine can be accessed by other existing development tools such as Microsoft Visual Basic. Jasmine also supports Java based application development tools. 5.10 Query Support Jasmine does not implement Object Query Language (OQL) or Object Definition language (OLD) which is defined in the ODMG standard. Instead Jasmine uses (ODQL) Object Database Query Language, which unlike most query sub-languages is computationally complete. Jasmine’s ODQL encompasses - 14 - OODBMS Comparison Schema definition, which allows the user to define classes and properties of classes Method definition, which allows embedded ODQL to be implemented in method bodies. Queries, as ODQL has a declarative complex object query sub-language Procedural constructs, as Jasmine’s ODQL query sub-language includes powerful programming control constructs such as variables loops and conditional branches. ODQL can use single and multiply inheritance. It also supports the creation and management of indexes. The ODQL query language can be run with the use of an interpreter or it can be embedded in to the host program such as C/C++. Jasmine supports automatic deadlock detection; upon detection of deadlock Jasmine rolls back the involved transactions. 5.11 Platform Support Hardware Intel Pentium PC Sun SPARC 6.0 Operating System Windows 2000 and NT 4.0 Solaris 8 GemStone 6.1 Background GemStone is an OODBMS based on the research carried out at Oregon Graduate Institute. It was produced by Servio-Logic of Braverton in 1987 and was one of the first OODBMS that became commercially available. 6.2 Architecture GemStone uses a three-tier client/server distributed architecture. Application processing comprises a middle layer between the user interaction process and the process that maintains the object store. GemStone is built around a highly scalable, disk-based multi-user object execution engine. The GemStone Server provides transaction services for reliable, fault-tolerant 24-hour-a-day, 7-day-per-week information system operations supporting thousands of users across multiple corporate databases while allowing development and use of distributed business applications. The importance of GemStone architecture is that it reduces the amount of network traffic without overloading the server. This architecture speeds up processing by placing the application code with the data storage if lots of data is to be used or placing it with the user’s process if many changes are to be made to a small amount of data. There are two main processes active in GemStone: The Stone and the Gem. - 15 - OODBMS Comparison The Stone process is responsible for: Co-ordinating access to the object store Synchronizing activities and ensuring consistency while processing requests for transactions Carrying out allocation of object identifiers, object pages and object locks The Gem process: Manages Smalltalk programs and object storage Retrieves objects from object stores developed using any of the GemStone interfaces Provides the user with a consistent view of the object store Locates objects on pages and transmits them to and from Stone Manages user’s GemStone session Controls the execution of GemStone Smalltalk methods A host machine runs a single Stone process serving multiple Gem processes. The Gem process responsible for object access may be configured to be local to the object store to eliminate network overhead. It can alternatively be configured as a remote process to take advantage of network processing power. 6.3 Recovery Any authorised user can perform recovery operations. Using replication, backup and logging mechanisms Gemstone achieves network or hardware failure recovery. The user can perform full or incremental backups employing transaction logs. The first step of restoration after a disk or system failure is a full backup. Using log files then provides the user with the facility to restore the object store to the last transaction commission. Transaction logs perform a roll forward to bring the database back to the last committed transaction prior to the error. 6.4 Concurrency Transaction mechanism controls concurrency within GemStone. Each GemStone session manages a local copy of the object store and adds changes made to the end of a transaction. This process is called optimistic locking. The drawback is that if other users have committed changes to the same data the locking mechanism is not automatically carried out. However, to make sure that changes are committed, users are permitted to lock an object that has not been previously locked. 6.5 Schema Evolution - 16 - OODBMS Comparison The two products, GemStone/S and GemStone/J deal with schema evolution in different ways. GemStone/S can migrate instances from one version to another within the same class history. By default, data is mapped to the new version if the variable name is the same, although this can be customised. GemStone/J does not support schema evolution in the same sense as the other databases covered in this report. In order for updates to be made, the entire application has to be redeployed to end-users. 6.6 Versioning Again, GemStone/S and GemStone/J deal with this in a different way. GemStone/S maintains a class history for every object, even if the object only has one version. GemStone/J does not allow multiple versions of objects. 6.7 Programming Languages The GemStone system was originally designed around Smalltalk80, but the initial systems were delivered in Opal. However it was clear that this was really persistent Smalltalk and the system is now known as “GemStone Smalltalk”. GemStone Smalltalk is one of the systems that is supported by the ODMG. 6.8 Persistence Objects are made persistent in GemStone by using a connector that is a kind of persistent root and then using reachability from connectors. GemStone maintains a GemStone server version of any classes of persistent objects, therefore there is always a pair of classes: one class for the programming context and an equivalent class for the database context. These classes are automatically maintained, meaning that if a Smalltalk class is created and an object of that class becomes persistent, then a GemStone class for the object is automatically created. GemStone has a dynamic garbage collection mechanism that automatically recovers space used by objects that are not referenced any more. 6.9 Tools GemStone user interface and administration support tools include functions such as: Setting user privileges Class management Performance monitoring Backup Its development tools include: Configuration tool Facility to inspect the state of objects Interactive debugger - 17 - OODBMS Comparison Browsers for classes, session and transactions Class versions Symbol lists System connections 6.10 Query Support GemStone maintains connection to Oracle and Sybase relational systems via gateways. It updates data automatically to keep GemStone and external copies synchronized. Other standards such as OLE are supported too. GemStone supports CORBA services and the IIOP (Internet Inter-ORB Object Request Broker Architecture (CORBA)) protocol for object interoperability with other systems, and Smalltalk can be used with relational database access methods such as SQL and ODBC. 6.11 Platform Support Hardware HP 9000 700/800 IBM RS/6000 Intel Pentium PC Operating System HP-UX 11.0 AIX4.3 Windows 98, 2000 and NT 4.0 Solaris 2.6 Solaris 7 Solaris 8 Sun SPARC 7.0 POET/FastObjects 7.1 Background BKS Software, a German company that subsequently changed its name to POET software, developed POET in 1991. Poet Software is now based in California USA and provides an OODBMS called FastObjects. POET has been one of the members of ODMG from the early days. POET Object Server Suite provides database management solutions v6.0 in full compliance with ODMG 3.0 API Standard. 7.2 Architecture The architecture of POET is based around the client/server architecture. Query processing is performed on the server to reduce client side processing. POET communicates within a network using objects. - 18 - OODBMS Comparison 7.3 Recovery POET incorporates a roll forward recovery mechanism using logs. POET also supports an external backup facility, which allows the database to be backed up while clients still use the database. 7.4 Concurrency Concurrency control is managed by using nested transactions and locks that are held on objects preventing reading, updating or deleting and object by unauthorized users. Programmer can install functions (using POET’s distributed event notification system) activated when a particular event (such as storing, deleting or unlocking of data) involving an object takes place. 7.5 Schema Evolution POET manages schema evolution by storing all versions of a class within a data dictionary. When classes are have been modified POET updates all objects of the particular class. 7.6 Versioning Versioning in POET is managed by an event notification system that can be used in combination with a check in check out facility. This allows cooperative working to be performed on POET. 7.7 Programming Languages Poet Software object database technology for Java and C++ applications is called FastObjects. The main target of this technology is telecommunications and network management. FastObjects j2 is designed for embedded real-time Java applications, and FastObjects e7 is designed for embedded C++ and Java applications. Poet’s FastObjects t7 is an object database-management system developed for multi-tier C++ and Java applications. It is designed to be scalable and offers superior runtime efficiency with complex data models. 7.8 Persistence Poet provides persistence in Java through the JDO, which incorporates transparent persistence. Persistence in C++ is provided using inheritance, where the pre-processor looks for a persistence keyword in the class definition. 7.9 Tools POET Developer’s Workbench is an integrated development environment that allows the user to: Create and edit programs - 19 - OODBMS Comparison Run POET’s pre-compiler Build databases Browse and edit class declarations and the objects in a database Run OQL queries POET Administrator’s Workbench provides the tools needed for database administration including: On-line backup Database creation Creating database versions Regenerating the indexes, or updating the database format to a new version of POET POET sever administration includes: Upgrading the server to permit more users Examining which users are accessing the server Shutting down the server User administration includes: Controls such as database protection 7.10 Query Language Support POET system provides full querying facilities including an ODBC driver and OLE compliance, but in early days it did not seem possible for POET to access relational databases. POET also provides two other querying facilities: OQL and extended C++ 7.11 Platform Support Hardware HP 9000 700/800 Operating System HP-UX 11.0 Windows 2000 and NT 4.0 Linux Solaris 2.6 Solaris 7 Solaris 8 Intel Pentium PC Sun SPARC 8.0 Objectivity/DB 8.1 Background Objectivity was founded in 1998 in Mountain View, California. Their product, Objectivity/DB, was first released in 1990. The database is used in the telecommunications, Internet infrastructure, manufacturing, government and scientific markets, and their clients include Hewlett Packard, NASA, and Ericsson. The most recent release is version 7.0. - 20 - OODBMS Comparison 8.2 Architecture Objectivity/DB has a distributed architecture, which allows the system to be configured as a centralised client/server system, or as a multi-tier system. The configuration can be changed without requiring alterations to existing applications. Data is transferred in pages. 8.3 Recovery Objectivity/DB has an inbuilt recovery mechanism, which in a lot of cases can recover transactions automatically, for example if am application process is interrupted or a process crashes. If this mechanism fails, then Objectivity/DB has a tool called Automatic Recovery, which can recover from application failures, local and remote server host failures, and lock server host and process failures. There is also a separate tool provided called oocleanup, which can rollback transactions and release locks in a database using the journal. 8.4 Concurrency Objectivity/DB has a number of features to allow concurrent access: Flexible transaction model, which supports transactions of any duration Multiple readers, one writer, which allows users to view the most recent state of a locked object Object-level versioning, which allows users to selectively operate on specific versions of objects Hierarchical locking, which controls, read/update access to objects Lock waiting, which allows an application to wait for a specified time for an object to come available, and Active deadlock detection across databases, which warns users of potential deadlock situations 8.5 Schema Evolution Objectivity/DB supports online schema evolution, which allows schema updates to be made without taking the database offline. The schema evolution process works by only updating ‘affected’ objects, i.e. objects whose definitions have changed. The administrator has great control over how the affected objects are updated. The following types of changes are possible: Logical changes Class member changes Association and reference changes Class changes Inheritance changes The administrator can set objects to be updated immediately, or through a choice of two deferred updated processes. The first of these allows each affected object to be updated only when it is accessed. The second allows the administrator to specify a group of objects that will be updated when a member of the group is accessed. - 21 - OODBMS Comparison 8.6 Versioning Objectivity/DB offers either linear or branch object versioning, with the ability to specify a default object. Linear versioning means that each time an object is altered, a new version is created. Branch versioning allows a hierarchical structure of versions of objects, and allows different changes to an object to be tracked simultaneously. 8.7 Programming Languages Objectivity has 4 different language interfaces: Objectivity/C++, Objectivity for Java, Objectivity/Smalltalk, and Objectivity/SQL++. The C++ interface supports ANSI standard C++, with a persistent implementation of the Standard Template Libraries (STL). The Java product provides full Java supports, which is compliant with the ODMB 2.0 standard. The product features a single process model, which allows the client to run in the same process as the Java Virtual Machine. Objectivity/Smalltalk provides full ODMG-93 1.2 complaint Smalltalk binding. Objectivity/SQL++ provides a standard SQL interface to allow interoperability with existing systems. The product supports SQL3 object extensions, which supports Objectivity/DB’s object modelling capabilities. 8.8 Persistence C++ Objects have to be specified as persistent. Persistence is achieved through inheritance from a class supplied with the database. This follows the ODMG guidelines for persistence in C++. Java Objects can be made persistent in two ways: implementing a persistent interface, or deriving from a persistent class. These methods make the object persistence capable, but the object will not be written to a database immediately. The application must first run an operation called clustering which assigns an object storage space in a database. The object is then written to the database when the transaction that created the object commits. Smalltalk Objectivity/Smalltalk supports persistence through reachability. Objects can be made persistent by reaching them from another object. This follows the ODMG guidelines for persistence in Smalltalk. 8.9 Tools Federated Database Tools Database Tools Lock Server Tools Backup and Restore Tools Advanced Multithreaded Server Tools Troubleshooting and Recovery Tools - 22 - OODBMS Comparison Deployment Tools 8.10 Query Support Objectivity/DB offers powerful object traversal tools. These include retrieval through application-defined names or links from other objects, scanning of storage objects for one or more specific objects, or traversal of the entire database. Objectivity for Java and Objectivity/C++ both support a predicate query language, which is embedded in the code itself. This language allows retrieval of objects using simple arithmetic, logical or relational operators. Objectivity/Smalltalk has in-built iterator methods which allow storage objects to be scanned for a particular object. In addition to this, Smalltalk has it’s own iterators which may also be used. 8.11 Legacy Support The Objectivity/SQL++ product provides legacy support. Objectivity/SQL++ allows ANSI SQL89 and SQL92 to be used on Objectivity/DB, and also provides an interface for SQL++, and Microsoft’s ODBC interface. 8.12 Platform Support Hardware Compaq Alpha AXP HP 9000 700/800 IBM RS/6000 Operating System Tru-64 UNIX 4.0 HP-UX 11.0 AIX4.3 Windows 98, 2000 and NT 4.0 Red Hat Linux 6.1 IRIX 6.5.9 Solaris 2.6 Solaris 7 Solaris 8 Intel Pentium PC Silicon Graphics Sun SPARC - 23 - OODBMS Comparison 9.0 Objectstore 9.1 Background Object Design Inc. was founded in 1988 in Burlington, Massachusetts, for the purpose of developing Objectstore. Their largest market is in the telecommunications industry, with customers like British Telecom, Cisco Systems, and Siemens. They currently have 4000 customers worldwide. The most recent release of ObjectStore is version 6.0. 9.2 Architecture Objectstore features a distributed cache-forward architecture, which divides the processing between the clients and the server. The server manages key processes such as backup and recovery, storage, locks and deadlock detection, and failover and replication. The client manages storage allocation, access to database objects, and transaction management. The client also performs queries over collections of objects. The server is multi-threaded, which means much greater performance when dealing with multiple users. This allows support for native OS asynchronous I/O, where available, which means a single process can manage multiple I/O requests at the same time. The server also supports multiple processors. 9.3 Recovery Objectstore features transaction logging, which captures all transactions before they are written to disk. In the event of a server crash, the transaction log is used to bring the databases restored from backups to the point before the crash. Objectstore uses a two-phase commit to ensure that consistency is maintained on distributed servers. 9.4 Concurrency Objectstore uses Multi-Version Concurrency Control (MVCC) to allow clients to read objects even if they are locked for writing. MVCC can be applied selectively to individual databases, or to entire servers. 9.5 Schema Evolution Objectstore uses various utilities to allow simple changes to be made to the schema, like adding or removing members. For more complex changes, a schema evolution interface is provided, which allows for more complex changes to be made. The schema evolution process runs in a batch, and locks the database while it is updating the schema. 9.6 Versioning Objectstore supports branch versioning, which allows multiple versions from one object. These versions are managed using a version graph. Multiple versions of one object can be merged at a later point, although the user must manually initiate this process. - 24 - OODBMS Comparison 9.7 Programming Languages & Interfaces Objectstore provides standard C/C++ and Java programming interfaces, and also an ActiveX interface for integration with Microsoft Visual Basic, InterDev, and Internet Explorer. 9.8 Persistence Objectstore supports persistence through named roots. An object is defined as persistent when it is created. Persistent objects are held in persistent root object collections. 9.9 Tools Objectstore provides three tools for managing a database. They are Inspector, Performance Expert, and ObjectForms. Inspector is a visual tool that allows developers and administrators to examine schema and examine and edit data in a database, using a visual representation of the database. It also has a visual query editor. Performance Expert is a tool that simplifies the process of collecting performance statistics from databases and server. ObjectForms can automatically generate dynamic web-page forms based on the content of the database. It allows a web-based front end to a database to be created easily. 9.10 Query Support Objectstore provides support for complex queries embedded in the application. The query language supports arithmetic, logical and relational operators. 9.11 Legacy Support Using a tool called DBConnect, it is possible to provide interfaces between Objectstore and a variety of popular database systems, such as Oracle, Sybase, SQL server, and any ODBC driven database system. 9.12 Platform Support Hardware Compaq Alpha AXP HP 9000 700/800 IBM RS/6000 Operating System Tru-64 UNIX 4.0 HP-UX 11.0 AIX4.3 Windows 98, 2000 and NT 4.0 Red Hat Linux 6.1 IRIX 6.5.9 Solaris 2.6 Solaris 7 Solaris 8 Intel Pentium PC Silicon Graphics Sun SPARC - 25 - OODBMS Comparison 10.0 Resources We accomplished our main objectives by primarily performing a comprehensive literature review, compiling the information and distinguishing the relevant data from out of data sources. Then using the information gathered we selected six of the systems based on three criteria, market share, current availability and vendor support. We then compiled a list of criteria to compare each of the systems. Each system was then investigated using the criteria selected and the results documented. This report is a consolidation of information from vendors, reference books and articles available on the web. Gathering the information proved to be more difficult than was first imagined, this was due to several factors: 1. The majority of reference books were out of date. Many of the titles available are now out of print. Any system comparisons included within the OODBMS titles had been carried out in 1997 or earlier, which meant the systems compared were not the same systems that are available today. 2. Information available from the Vendors sites although invaluable was certainly biased. No real comparison data was available from the sites nor any information regarding features that were better or different in other products. White papers available from the sites were basically adverts for the Vendors product and quite often gave no real in-depth technical detail. 3. OODBM systems are very expensive and choosing the right product is essential in business. This has resulted in several companies setting up as specialist consultants where information regarding OODBMS comparisons and benchmarks costs several thousand pounds. The information freely available on the web was limited to older material circa 1997, which as with the reference titles was invaluable but had to be checked to make sure it was not out of date. 4. Two of the systems featured within many sources, o2 and Itasca have been discontinued and are no longer supported by any vendors. The o2 system in particular is the focus of many articles and books and forms a large part of the literature available. 5. The Journals we had access to provided many articles regarding features of OODBMS but provided very little information on actual system comparisons. 11.0 Conclusion OODBMS are specialist products and are geared to a small portion of the database market. Some of the systems, noticeably Versant and Jasmine are aiming their products towards the e-commerce market. Versant provides products that enhance the efficiency of e-commerce sites by providing OODB functionality in conjunction with existing relational systems. Jasmine however provides enhanced multimedia capabilities and four-tier web architecture to provide efficient e-commerce solutions. Jasmine supports advanced automation of repetitive tasks with use of agents. It also has a computationally complete query language and advanced GUI capabilities for inexperienced users. Gemstone is the oldest of the systems compared and therefore is a more - 26 - OODBMS Comparison proven solution. Gemstone with its three-tier architecture seeks to provide a more efficient networking solution. Poet’s design has been oriented around maximising performance and claims to retrieve objects ten times faster than other databases. Poet has been targeted at C++ and Java developers for use with relatively small amounts of data. Objectivity and ObjectStore are both been influenced by the telecommunications industry and are geared to provide Internet and telecommunications solutions. A general weakness of all our systems is that OODBS systems cannot handle very large amounts of data due to the overheads associated with OODB systems. The comparisons of the object-oriented databases were based on the functionality of the systems rather than benchmark tests such as performance, reliability or usability surveys. In order for us to come to a conclusion of what is the best system from our investigations, it would be necessary for us to have information regarding the results of benchmark tests and the requirements of the tests that were carried out. Also in a selecting a system the customer’s requirements would have to be taken in to consideration such as required functionality, reliability and security. - 27 - OODBMS Comparison 12.0 Bibliography 12.1 Reference Titles Title ISBN The Jasmine 1-55860494-4 Object Database Object 1-85032-294-5 Databases an ODMG Approach Object0-201-6243439-7 Oriented Database System Author Khoshafian, Dasananda, Minassiam Cooper, R Publisher Morgan Kaufmann Elisa, Bertino, Lorenzo, Martino Addison-Wesley Thompson 12.2 Web Resources URL http://citeseer.nj.nec.com/99957.html http://www.objectivity.com/DevCentral/Products/TechDocs/pdfs/techOvervie w6.pdf http://www.objectivity.com/DevCentral/Products/TechDocs/Datasheets/ http://www.objectivity.com/DevCentral/Products/TechDocs/pdfs/SchemaEvol utionWP.pdf http://www.objectdesign.com/htm/object_wp_forms.asp Technical overview on ObjectStore, available on request from [email protected] http://www.versant.com/ http://www.knowvo.com/jasmine/oodatabases.html http://www.knowvo.com/jasmine/oodatabases.pdf http://www.castlesoftware.com.au/Whitepapers/BuildingDatabase.pdf http://www.castlesoftware.com.au/Whitepapers/JasmineTips100.pdf http://www.odmg.org http://industry.java.sun.com/javanews/stories http://industry.java.sun.com/solutions/products/by_product http://www.fastobjects.com/FO_Corporate_Homepage_a.html http://galaxy.uci.agh.edu.pl/~vahe/products.htm http://www.odmg.org/membership/memberpages/Reviewer/memberpageversa nt.htm - 28 -