Monday, January 11, 2010

It's more than just Impedence mismatch!

Reflecting on the impedence mismatch today I was drawn towards the issue of scalability and web farms. RDBMS supports scalability in many ways such as federated databases and partitioning. An RDBMS application can be code for a single database and with small effort and no uncertainity be scaled out for use by a web farm.

Looking a dotNet or C++, the ability to handle stateless processing across a non-sticky webfarm really have no clean solution. A more important aspect is that if Object such as a "Book for Sale" changes it's collection of copies available for sale there is really no way that a concurrent object instance can discover this without the use of a database or proxy database. The concurrent instance may be on a different machine so having a global instance falls aparts.

Reflecting further it becomes apparent that OOP was designed for a single instance with items like parallel processing and distrubuted processing being afterthoughts, Early in my career I programmed with Simula, the father of C++, where instances were independent or tightly coupled. Databases were designed for multiple clients. C++ and Simula was single client.

The stateless non-sticky web farm is trivial for RDBMS to handle, but OOP really does not have a native infrastructure for handling this environment. There are a variety of kludges that can be done -- but none are inheritantly obvious. In short, there is not only an impedence mismatch, but OOP is unable to handle the AC voltage of the web. OOP is ideal for DC voltage.

No comments:

Post a Comment