When I first started working, we had to work with (and code for) DBase and FoxPro databases. Now, I’m not sure what the whole category was called – flat databases? non-relational databases? pre-relational databases? I have no idea :p But then I did learn about RDBMS or relational databases and about SQL queries – OK, the latter part is not quite true, I’d learned SQL queries with DBase IV and FoxPro but you get the idea … I learnt about tables, schemas, queries, views, procedures etc. Now I hear that there are new kinds of databases being talked of: post-relational databases and OODBMS or object oriented databases.
I guess it is only an evolutionary step and that it was bound to happen sooner or later but I find myself fascinated by OODBMS. On one hand, I wonder if they will ever take hold and come to be widely used like the RDBMSes of today – Oracle, SQL server, Sybase etc. On the other hand, I simply want to get to grips with them and start playing just for the sake of working with them :p But before I get into that, you might be wondering what an OODBMS is and how it differs from an RDBMS? I probably am not the best person to explain the difference but let me try 🙂 An RDBMS basically stores its data in the form of tables of records (or rows) and records which are made up of fields (or columns). If you need to represent some sort of a relationship between data in one table and the data in another table, you usually use a key field and if you really want to normalize things (now I won’t even get into a description of it – just accept it as good database design philosophy if you don’t know about normalization <g>), you’ll probably end up with a separate table for the relationship as well. Now with an OODBMS, data is represented in the form of classes and (here is the good part) you can actually define methods for the classes to manipulate the data contained within! What’s more, since your data is represented as properties of the class, you can have other properties which are references to a different class or a collection to represent relationships with other data. I am not sure whether I explained it well enough but to me it seems a much more elegant solution – but that’s probably because I am a programmer and I can think in terms of classes :p
Incidentally, I’d done some work along similar lines to access Oracle data using an object framework written in Java for one of my employers and I was startled to find that I had basically written something like an OODBMS system emulator for my particular case 🙂 Anyway, I stumbled upon not quite an OODBMS (because they call it a post-relational database) by accident when I clicked on a banner ad at SourceForge for Cache. I was fascinated by the ability to work with data as classes and am actually looking into how well Cache works because their site says that you can access Cache data from Java, C/C++, VB, Delphi etc. I intend to test it out (since they have a free download) with Delphi and see how well it works and they might actually have a convert if it works well 🙂