Objects & Databases in 1986: extended relational databases, persistent programming languages, OO databases, DBMS toolkits. O&D in 1996, what happened: DBMS toolkits and persistent programming languages never took off, OODBs also lackluster, object-relational “wrappers” (ORM) emerged, extended relational renamed to Object-Relational (ugh) and gained traction. Observations on why DB toolkits and OO databases didn’t take off, why OR databases and object-relational wrappers did. Brief aside on CORBA, OLE, COM/DCOM, Java. Predictions for O&D in 2006: OR matures, subsumes OODB. Challenges to get there: OR and OO query performance, more sophisticated clients (caching, splitting queries across cached client-side data and server data), parallelizing OR and OO, facades for legacy data, standardizing all of this.
Nothing too controversial in their review of the state of databases in 1986 and then 1996 (when the paper was written). I find it interesting to note that ORM was around in 1996. It feels like it took another ten years for Java to get any decent ORM but maybe the ORM they had in 1996 wasn’t quite Hibernate for C++. Points to the authors for predicting the demise of CORBA and for good reason: “years of database research has not been able to separate the majority of these services (e.g., indexing and transactions, or collections and queries) in a manner capable of providing anything approaching reasonable performance. … We expect such approaches will perform poorly and will ultimately fail as well.” Funny that they see Java mainly as an interesting way to support ADTs in the database server (as a database extension language). Though Oracle did that at some point, I don’t believe it is engendering comparisons to sliced bread. I think at the same time they decided they needed to tack an ‘i’ on their version number to make things more Internety.
“Prediction is very hard, especially of the future,” so I won’t dwell much on their predictions. They seemed to think OO would mature as an extension inside the RDBMS but it seems to have mostly died. Not many people are putting direct links between rows in their databases (versus using foreign keys), and we’re not writing SQL that involves object path expressions. Instead that stuff is all getting handled in more sophisticated ORM libraries (like Hibernate and Active Record) which handle the mapping to the relational model on the client side. Perhaps this is because a thousand client library writers can experiment and refine more rapidly than a handful of commercial DB vendors and a couple of schizophrenic open source projects. Also some of the need for OO has been replaced by XML, which albeit very different, does allow you to store a hierarchy of “objects” and extract attributes via path expressions.