Here are answers to frequently asked questions about object database management systems (ODBMSs):
- What are the benefits of using an object database management system (ODBMS)?
- When should you use an ODBMS?
- Can you provide examples where ODBMSs are used production applications?
- Can ODBMSs handle large databases?
- Are there any barriers to using ODBMSs?
- Will ODBMSs replace RDBMSs?
- Can object databases and relational databases co-exist?
- How do ODBMSs compare to object-relational mapping products?
- Does it make sense to use an ODBMS in a web server?
- What are some good sources of information on ODBMS technology?
- I hear that it's hard to get people with sufficient skills to work on ODBMS projects
- Why aren't there any public ODBMS benchmarks?
A. From my perspective, there are two primary benefits in using this technology. Both benefits reflect a basic idea -- when you use an ODBMS, the way you use your data is the way you store it. The first benefit can be found in development. When you use an ODBMS, you will write less code than if you were writing to an RDBMS. The reason for the smaller amount of code is simple -- when you are using Java or C++ -- you won't have to translate into a database sub-language such as SQL, ODBC, or JDBC. You will be writing in the programming language. The result is less code. In many cases, this code be as much as 40 percent less. The corollary to this is that any data structure that you can imagine in Java or C++ can be stored directly without translation in an ODBMS. This is an important thought. You can store very complex data structures directly in an ODBMS.
The second benefit, which is related, occurs in production. If you are working with complex data, an ODBMS can give you performance that is ten to a thousand times faster than an RDBMS. That's because when the data is read off the disk, it is already in the format that Java or C++ uses. No translation is needed. The range in performance gain depends on the complexity of your data.
A. The advice that I give my clients is really pretty simple. Use an ODBMS when you have a business need for high performance on complex data. But, what does that mean exactly? Briefly, when you meet a business need, you either make or save some money. High performance, in the context of an ODBMS, means that you literally could see a performance improvement of between ten to a thousand times in comparison with an RDBMS. And finally, you can be sure that you have complex data if your data looks like a connected graph, such as a bill of materials or a schema that has many intersection entities. For example, lets say you have an automated stock trading application. The application receives a live feed of stock data. It uses that information with a historical database (trust me, this database has complex data) and applies an algorithm that determines if any action should occur based on the live feed. The faster the database search is, the shorter the elapsed time between receiving data from the live feed and determining the appropriate action. Assuming the algorithm is correct, this means the stock trading application will either be making more money or losing less money. In other words, this is an example where there is a business need for high performance on complex data.
A. Here are a few examples of ODBMSs in use in production applications:
- British Airways uses the Versant Object Database for its Origin and Destination (O&D) Revenue Management System. The O&D Revenue Management System is used to maximize revenue from British Airways' worldwide route networks and alliances.
- bioMérieux uses FastObjects to store and retrieve complex information from blood tests. Specializing in the in vitro diagnostics sector, bioMérieux designs, develops, produces, and markets diagnosis systems for medical and industrial applications.
- Siemens utilizes GemStone Smalltalk technology as an object cache and backbone for their CONDIS system, which manages network and system infrastructures in real time using object technology. Siemens is a value added reseller of the GemStone Smalltalk object cache. CONDIS first went into production in 1999 and Siemens has since completed at least fifteen projects for customers such as the Swiss Railways, City of London, Telecom Argentina, and the Austrian energy transport network operators.
- The db4o object database played a key role in improving the performance and scalability of Seagate Technology's redesigned Mirra Sync and Share Personal Server. The Mirra Sync and Share Personal Server is a data access and management solution that enables small businesses, home offices, and connected families to automatically back up and protect their digital data, remotely access it over the Internet with full encryption, synchronize files among multiple computers, and share digital content.
- Sprint PCS uses Qualcomm CDMA (Code Division Multiple Access) technology, which uses the Objectivity/DB ODBMS.
- Starwood Hotels and Resorts Worldwide, Inc. uses the ObjectStore ODBMS as an integral part of their online reservations system. ObjectStore dynamically accesses existing enterprise databases and caches data as ready-to-use objects in-memory for real-time use.
- Partners HealthCare based in Boston has developed and deployed nearly 800 clinical and administrative applications using InterSystems’ Caché and Ensemble products, including a longitudinal medical record that provides a single view of each patient’s clinical and demographic data drawn from systems throughout the Partners HealthCare network, A physicians’ order-entry system that resulted in a 17% reduction in adverse drug reactions throughout the hospital, saving as much as $10 million annually when it was initially rolled out, and a wireless electronic medication administration record system built on Caché that integrates six major enterprise applications and other systems, using Web Services, to provide a closed medication management loop that eliminates adverse drug events and improves clinician productivity.
- Objectivity/DB is the integration platform for both the U.S. Air Force’s Network Centric Collaborative Targeting (NCCT) system and the U.S. Navy’s Cooperative Engagement Capability (CEC) system. NCCT is a network-centric architecture that horizontally integrates airborne and ground assets to detect, locate, track, and target objects on the ground. Objectivity/DB stores and manages vast amounts of disparate information collected through the NCCT system, enabling data fusion from geospatial and sensor data from the NCCT sensor network. Similarly, CEC is a network-centric warfare system that shares radar data between participants to precisely track airborne targets, providing combat identification on airborne tracks and engagement-quality information to all participants. CEC is fielded on several E-2 aircraft, cruisers, destroyers, amphibious ships and aircraft carriers. Objectivity/DB provides a reliable, scalable repository for the wide range of complex data types found in these types of applications. Objectivity/DB’s distributed processing system architecture, with no single point of failure, provides the robustness necessary for mission-critical performance. Also, take a look at this blog entry.
These are just some examples. Many more exist.
A. Yes. In fact, one of the largest database that I have ever heard of is in production using an Objectivity ODBMS at Stanford Linear Accelerator Center (SLAC). As of March, 2002, SLAC stored 500 terabytes of production data using Objectivity/DB. The production data is distributed across 100 on-line servers. SLAC uses Objectivity/DB for its flagship research project named B Factory, which includes the PEP II accelerator and the BaBar particle detector. More information.
A. Here are some possible barriers:
- Lack of Familiarity: Most programmers understand RDBMSs. Many do not understand ODBMSs.
- Inertia: It is easier to use what you know.
- Technology Fear: It is scary when you do not know what is inside ODBMS technology.
- Business Fear: Most of the ODBMS vendors are small companies. Is this risk worth the technological benefits?
I am sure some of these barriers might make sense to you. Nevertheless, if they incapacitate you, it is difficult to try new things. Sometimes new things are good things. So my suggestion is that you should become familiar with the technology if your business could benefit from high performance on complex data.
A. That is highly unlikely. Someone once told me that, "Data tends to stick where it lands." There are many applications built on existing RDBMSs. It's difficult, if not impossible, to move off those databases. That would be unrealistic. Where you primarily see ODBMSs is in new development. In these cases, someone has figured out how to use high performance on complex data to meet a business need. And you often see ODBMSs working side by side with RDBMSs.
A. Absolutely and this is what you usually see. Typically, people using object databases carve out the part of their IT systems that need high performance on complex data. They then will do other processing, such as back office analysis, using an RDBMS. Often the object database data is transferred to the relational database during quieter processing times. I like to characterize this as database diversity -- using the right tool for the right purpose. For some examples, take a look at Architectures Using Databases in the Middle Tier.
A. First, let's look at the similarities. Object database management system products and most object-relational mapping (OR mapping) products let you program in Java or C++ without the use of a database sublanguage such as embedded SQL, ODBC, or JDBC. That part of the development cost is comparable. The main difference between the two occurs in the use and storage of the data. OR mapping products require you to map the object model to a relational model, which requires additional development and can sometimes be a significant performance hit in production. That's because the way the data is stored is different from how it is used. The term for translating data from storage format to application format and back is "impedance mismatch." This may be familiar to you. In situations where high performance on complex data is required, impedance mismatch can create performance problems. Also see Object-relational mapping articles.
A. Yes, many websites are currently using ODBMSs. With the projected growth in XML use, it will become more compelling to consider an ODBMS for a website. The reason is that XML is basically an object model. So, for storing and getting object data, you can't beat an ODBMS on performance. In addition, you will have reduced development costs because you won't need to translate the XML into some other storage model. That means that XML plus an ODBMS will make for a high performance website. Add to this the plans for using XML as a means for business to business transactions and you can see why some people see XML as the killer application use for ODBMSs. Also see XML database articles.
A. There are several good books. They include:
- Object Technology: A Managers Guide, Second Edition, David A. Taylor, ISBN 0-201-30994-7
- Object Databases in Practice, Akmal B. Chaudhri and Mary E. S. Loomis, ISBN 0-13-899725-X
- The Object Database Handbook: How to Select, Implement and Use Object-Oriented Databases, Douglas K. Barry, ISBN 0-471-14718-4
- The Object Database Standard: ODMG 3.0, ISBN 1-55860-647-5
A. Finding good people is an industry-wide problem and should not be a reason not to use any particular technology.
The primary skill needed to work on an ODBMS is the ability to develop an object model and to program in an object programming languages. Those skills, however, are not unique to using an ODBMS. You need them for an O-R Mapping project as well or even to write an object program.
A. The fact is that there aren't any useful public benchmarks for and type of database product. The reason has to do with the licensing of database products which usually prohibits publishing any benchmarks.
For some background on the problems with creating useful comparison benchmarks, take a look at the August 1999 issue of PC Magazine, "The Test That Wasn't," on page 29. The column also explains why even the public TPC-C benchmarks are not useful in selecting a database product. The column ends with advice that is similar to what I tell my clients: "If performance is important to your database application, we strongly encourage you to run you own tests to help you choose the most suitable product."
More on the general topic: Object Database Articles
- Object-Oriented Database Management System (OODBMS) Definition
- When an Object Database Should Be Used
- Caching for Object Database Management Systems
- Architectures That Use Object Database Products
- Everyday Uses of Object Databases
- ODBMS Myths
- Object Database Problems?