An observation about database systems (relational and otherwise)
Phil recently posted about object databases and, as it is frequently the case on his blog, the comments section included some great feedback. Among the replies was a note from Daniel who pointed to db4o.
Db4o is a relatively newcomer to the object database scene and as a company has an interesting business model. If you want to use the product in a non-commercial way, there are no license costs (GPL license). Thats pretty nice. Of course any commercial usage does require proper licensing and fees.
So whats my observation you say. Well, Phil got me thinking and somewhere between my second and third cup of coffee I had a small epiphany. Languages and data access technologies change at a much faster rate than data storage mechanisms. There – thats it. You knew that already? I’m late to the party? Bummer! My grandmother had an old German saying for my incredible speed of comprehension:“ Wire was very cheap the year you were born” – meaning I have such a long wire for thought processing it takes me longer than the average geek to arrive at the same conclusion.
OK enough kidding around. Those of us working with Microsoft tools have been indoctrinated to a new data access methodology every 18 months or so. Just when the collective wisdom of the programming hive had caught up with one version – here comes a new one! First there were dynasets, then there were recordsets, then there was ODBC, followed by RDO followed by ADO which sat on top of OLEDB followed by ADO.NET which is about to get a big infusion of change with ADO.NET 3.0. Don’t get me started on all the people that I see bashing stored procedures these days who in years gone by argued endlessly that SP’s were the only way to deal with server databases and SP’s are faster than dynamic SQL etc etc. What Lemmings! . 
In all those years with all those changes the basic foundation of data storage at MS has remained the same. The foundation of data storage follows the RDBMS model mentioned by Phil.
Yes we had a bit of a hiccup for a few years while desktop databases were trying to come close to what server based tools could do. In the end though instead of any desktop system moving up-market and getting a version of its engine that could compete on the server, it was the server based tools that moved down-market (i.e. MSDE). But underneath it all, even while throttled versions of the server product were being released, the basic mechanics of dealing with data remained the same.
Of course there was that other unfortunate detour a couple of years ago when every database vendor had to add some sort of XML capabilities to their product in order to remain competitive. And for a while there I worked with people who wanted nothing more than to put XML into the database and retrieve XML out of the database. Whew what a mess! Talk about having a hammer and everything looking like nails. It took several years for that detour to sort itself out. Even the Product Manager for SQL Server had to spell out in several interviews that the XML capabilities of the product were intended to assist in getting bulk data in and out of the system between disparate data stores, and were not intended as a wholesale replacement for the tried and true methods of data access that had been used for years. Some of that confusion of course based on Microsofts philosophy of never meeting a large customer it didnt like. Hence it attempts to cover all the bases and have a tool that can be used in any number of ways. Whenever the company is critiqued for a given approach the corp communication for years has been “Thank you for the feedback, but your way is just one of many many ways that we cover and hence we do what we do and you dont have the whole picture. You can’t possibly know what all of our partners and vendors want.” Well, as developers we dont have to. We always look for the BEST way to accomplish a task and we expect our tool providers to do the same. Yes it can be difficult to determine the best way but you know something? When a company has billions in reserve – enough to buy entire countries of this world several times over, it does have the resources to find the best way. Period. That’s one of the things that allowed MS to beat IBM back in the day of the OS wars. But more and more MS is looking like General Motors.
The data storage technologies do not change as drastically as the languages and methods used to access it. I actually know a few programmers who turned into DBA’s because the rate of change was manageable in SQL Server.
I did notice a very interesting convergence that may get more coverage as time goes by. Take a look at the following query examples. Notice how the data in each case is retrieved via a code expression that, at least in the case of LLBLGen and Linq, gets turned into a proper SQL statement under the hood. The similarity is striking. So rather than attempting to address the object-table impedance by swapping out the backend, or diluting the market by introduing an “object sql server” (bad move) , the smart money provides an engine on top of the database that is capable of overcoming the mismatch between relational structures and object structures. Lets face it folks, 99% of all data storage in this world is based on RDBMS systems. Nobody wants to throw away that investment. And as Phil also alluded to in his comments, you can always use newer tools to code against legacy data storage.
db4o
IList <Pilot> pilots = db.Query <Pilot> (delegate(Pilot pilot) {
return pilot.Points == 100;
});
LLBLGen
_customerDS.FilterToUse =
new RelationPredicateBucket(CustomerFields.Country == “USA”);
Linq
Northwind db = new Northwind(connectionString);
Customer cust = db.Customers.Single(c => c.CustomerID == “ALFKI”);
Comments
Comment from Haacked
Date: 7/5/2006, 1:50 pm
Not to mention that the data organizational principles change even less, if at all. Regardless of the data storage technology, the abstract concept of how to organize data (normalized relational form) is founded on firm mathematical ground. So it’s not like we’ll see dramatic improvements to the 3rd or 5th normal form (6th normal form anyone?).
However, that’s not to say some new mathematical structure can’t be found, but if it were, it would be a paradigm shift and represent something truly new.
Trackback from Jason Haley
Date: 7/6/2006, 5:45 am
Interesting Finds: July 5, 2006
Comment from Christof
Date: 7/7/2006, 9:33 am
“99% of all data storage in this world is based on RDBMS systems.”
I disagree. Our market research in the embedded database space (storage being fully integrated with one’s product or application) showed that 50% of the developers write their own database because RDBMS are not well suited for zero-admin usage.
Examples are Boeing’s MMA aircraft, BMW’s future car control system, Seagate’s line of personal server products, the world market leader’s photocopier system and many more.
Many developers are not familiar with this space - and many companies in this space do not talk about it a lot, because using a product like db4o is part of their competitive advantage.
Furthermore, now, with the availability of small footprint, super lean and easy to learn db4o as an embeddable OO persistence, people use storages where they just didn’t use them before (or compromised on flexibility etc. by using flat file or serialization).
Examples are pharmaceutical companies, that cache their scientific object models on clients, because it is too slow to retrieve data from a central server. Or mobile enterprise solutions of partially connected devices (doorstep delivery systems). And so on.
With this powerful tool, forward-thinking developers can build more feature-rich products, more performant products, and refactor more easily.
I agree, RDBMS are very strong in server-centric environments, but they do a poor job in distributed, client-centric persistence scenarios. Together with db4o’s object-to-relational replication system (dRS), based on Hibernate, we bring the best of these worlds together.
Having said all this, obviously, I totally agree with your analysis about the trends of data access.
Christof, db4objects, Inc.
Comment from Thomas Wagner
Date: 7/8/2006, 6:35 am
Christof - of course I don’t have an exact number of the RDBMS penetration in the world. Hence 99% is used as a methaphore to indicate “a msjority”. Its my oversight not to have noticed that you specialize in embedded systems. Of course your numbers make a lot of sense there. And that also means you have a darn interesting product for that space. It might be fun to create a project that mimicks what you describe - embedded on one end and server based on the other. Thanks for the feedback!
Comment from Stuart Stirling
Date: 12/19/2007, 8:33 pm
Hi, just wondering if I could get permission to use this image on my website? http://www.wagnerblog.com/images/Lemmings_20_28Fortean_20Times_29_small.jpg
Thanks and waiting for your reply.
Stuart
Comment from Pwhndvve
Date: 8/10/2008, 8:48 am
Rimsky went legate left buy cytotec then announced estivities.
Comment from Anonymous
Date: 10/18/2008, 2:05 pm
like pic
Write a comment