All computer graduates must be familiar with a paper named DBMS (where we cramp about RDBMS, relational model etc). I am sure majority of you must have come across the book “Database System Concepts” authored by Silberschartz, Korth and Sudarshan. The book has one or two chapters on Object Oriented Database which most of use just skim through or doesn’t even bother to read. Even though the book only introduces the basic concepts… it was dumped deep in memory until I found db4o.
Db4o is a open source Object Database for Java and .NET. It provides a native object database engine that can be embedded into any application. The database like many other successful open source product is dual licensed. The free version is licensed under GPL. So what’s special about db4o?
In 1990s many non-native ODBMS make into market that was unsuccessful for technical and business reasons. ODBMS stores objects directly into database but this is not what we see now. We usually use RDBMS (Oracle, MySQL or SQL Server) and our programming paradigm (OOP) does not match up with RDBMS. Industry has provided solutions to reduce the complexity. One such example is Hibernate. But using these ORM (Object-Relation Mapper) does not solve the problem completely.
We now have pure ODBMS to solve these issues. Db4o works for both Java and .NET programming environment and claims to be 55x faster than Hibernate. The database is also very small and supports features like ACID transactions, replication system, data compatibility with RDBMS and very important; easy coding. The database also provides multiple querying system, has a GUI interface (ObjectManager) where users can browse, view, read, delete objects. You will also get database tuning tools so db4o is worth a look!
I did some code to have a feel the object database and found it very simple and straight forward. Db4o provides multiple ways to query and an interesting method is Query-By-Example. When we study DBMS as a paper during graduation, we concentrate on SQL and RDBMS; I think students should have a look at ODBMS and try it along with RDBMS.