Archive for October, 2006

On Integration: The vision of a single database

Before Web Services, there was CORBA. Before CORBA, there was DCOM. Before DCOM, there was RPC. Before RPC, there was BSD sockets. Before sockets, there were databases. And as it was in the beginning, so shall it too be in the end.

The only systematically successful strategy in the history of computing is databases. I have discovered more and more lately that integration using a database is well-defined (DDLs – a WSDL that works!), flexible (views and triggers can hide many old sins), well-supported (today, powerful Object-Relation Mapping tools should be de regur for any sensible project), and performant (sooner or later, you’re gonna hit the database anyway). Using modern database features it can be made secure and scalable as well. In the end, databases are the best thing since, well, since databases.

I want to write a series of blog posts detailing strategies I use and explore to make database integration work. For now, let me just share my vision with you: One huge enterprise database that appears flat to any application that uses it. All applications in the enterprise using the single database instance. This vision has many practical issues in terms of performance, security, maintainability and understandability. I will spend the blog posts exploring these issues.

First, though: Where is integration using databases applicable, and how does it relate to the main buzzword of the day, Service Oriented Architecture (SOA)?

Database-based integration is only applicable for applications that are not distributed across multiple organizations or distributed widely within the same organization. This is what we can call “application-to-application” (A2A), as opposed to “business-to-business” (B2B). For B2B, technologies associated with SOA are still going to be your best bet. Also, I would not use database integration from desktop clients (“2-tier architecture”). I am not sure whether this is just because everyone has been so excited about the 3-tier architecture for so long. Maybe you could make it work. However, I don’t much care for desktop clients, so I will leave this subject to someone else.

However, when the “services” are just internal services between different parts of my application portfolio, I think integration on the database layer is greately underused.

Comments (10)

Words fail me

“I really wish you’d stop using that word – I don’t think it means what you think it means.” (The Princess Bride – of course)

When my wife asked “are you a feminist,” I realized I don’t like words very much. To some people, “feminism” means women who dress like men, think pornography is destroying society and that all men are inherently evil. You know the type I’m talking about. To many others, including my wife, a “feminism” is “the radical notion that women are people”. I wish people stopped using the word “feminist”.

In an online debate, my brother called me a “utilitarist” (man, I can’t even spell the word). In his opinion, that is not a good thing to be – “utilitarianism” will “create a cold and heartless society”. I don’t know if I am a utilitarianist (or any kind of -ist), but I think a good society is one where people are happy and fullfilled – is that utility? A cold and heartless society is probably not a very successfull archievement from this point of view. I wish people stopped using the word “utilitarist” (if that is indeed how it is spelled).

Words, especially those naming complex ideas like “feminism”, “utilitarianism”, “software architecture”, “services,” “liberal”, “conservative”, “ethical”, “agile development” are short cuts. The ideas they try and describe are complex, and the words mean different things to different people. This means that it very easy (and fun) to fight over the issues, because you can just assume that you opponent means, for example “service oriented architecture means that local calls should be exchanged with web services”. This is a really stupid thing to think, so you can rightfully criticize him for the view when he says that “SOA is a good strategy for designing systems.”

And if you’re going to make up new words, at least use words that sensible people would be able to disagree with. Like “myopic software development” (if I may toot my own horn). More on this later.

I don’t like big words, though. It’s hard enough to reach agreement when I’m talking about the same thing as those I speak to. It’s damn near impossible when we talk about different things.

(PS: I apologize for the long quiet period. Exhausting month)

Comments (2)

Creative Commons Attribution 3.0 Unported
This work is licensed under a Creative Commons Attribution 3.0 Unported.