What are the pros and cons of object databases? What are the pros and cons of object databases? database database

What are the pros and cons of object databases?


  • Familiarity. The administrators of databases know relational concepts; object ones, not so much.
  • Performance. Relational databases have been proven to scale far better.
  • Maturity. SQL is a powerful, long-developed language.
  • Vendor support. You can pick between many more first-party (SQL servers) and third-party (administrative interfaces, mappings and other kinds of integration) tools than is the case with OODBMSs.

Naturally, the object-oriented model is more familiar to the developer, and, as you point out, would spare one of ORM. But thus far, the relational model has proven to be the more workable option.

See also the recent question, Object Orientated vs Relational Databases.


I've been using db4o which is an OODB and it solves most of the cons listed:

  • Familiarity - Programmers know their language better then SQL (see Native queries)
  • Performance - this one is highly subjective but you can take a look at PolePosition
  • Vendor support and maturity - can change over time
  • Cannot be used by programs that don't also use the same framework - There are OODB standards and you can use different frameworks
  • Versioning is probably a bit of a bitch - Versioning is actually easier!

The pros I'm interested in are:

  • Native queries - Db4o lets you write queries in your static typed language so you don't have to worry about mistyping a string and finding data missing at runtime,
  • Ease of use - Defining buissiness logic in the domain layer, persistence layer (mapping) and finally the SQL database is certainly violation of DRY. With OODB you define your domain where it belongs.

I agree - OODB have a long way to go but they are going. And there are domain problems out there that are better solved by OODB,


One objection to object databases is that it creates a tight coupling between the data and your code. For certain apps this may be OK, but not for others. One nice thing that a relational database gives you is the possibility to put many views on your data.

Ted Neward explains this and a lot more about OODBMSs a lot better than this.