Two Questions with db4Objects' German Viscuso
German Viscuso is director of community management at Versant, which makes the db4o local database that
we recently reviewed. Since db4o is a free, object-oriented databases that integrates easily with .NET applications, it made sense to ask German "Why an OO database?"
Peter Vogel: Why object instead of relational?
German Viscuso: Faster development and evolution of the code base, because no mapping between runtime objects and persistent storage is required. Faster runtime execution, because the relational Primary Key-Foreign Key (PK-FK) relationships are natively stored by [the] object database, which means they are resolved at runtime without CPU intensive JOIN operation. Storing the PK-FK relationship directly in the database is akin to creating the complex index overlays required in a relational database to speed JOINs. Object Databases (ODBs) are just a substantially more efficient way to store and retrieve data.
Object databases are good at dealing with complex, domain specific models. The JOIN operations of a relational database become unavoidable when the model gets complicated. If the model is sufficiently complex, there's no way to create performance-oriented single table mappings between objects and tables. You often end up with tertiary tables and even more JOINs -- this not only kills performance, it makes development difficult. Object databases allow you to avoid this completely by using pure object identity indexing from inside of database, transparent to the application developer.
PV: Is there still a place for relational databases?
GV: Yes, and there always will be. The relational database (RDB) is great technology for basic business data management and supporting ad-hoc queries in small to medium sized data environments. It's only when data gets complex and is domain driven that object databases show an advantage. When it comes to ad-hoc queries, the RDB is still the best solution -- until you pass some medium-sized data levels and move into terabyte-plus ranges. In that case, newer data warehouse solutions are clearly a better choice.
Still, if you're doing data analysis against large amounts of data using existing domain realationships, then ODBs show a significant advantage. That's why ODBs are used heavily in large scale modeling and simulation type applications like weather forecasting, defense analytics, financial risk management, online gaming, etc.
Then, of course, you have the truly massive, non-transactional, "mostly-read" space where Google FS and like technologies provide the only feasible solutions (given today's hardware). However, these application areas are outside that of the traditional database application space.
Posted by Peter Vogel on 08/03/2010