24 May 2004

When I talk about databases and how they relate to applications, I've found it useful to distinguish between two styles of database: ApplicationDatabase and IntegrationDatabase. The difference between the two lies in whether the database is controlled and encapsulated within a single ApplicationBoundary.

I've found that in discussions about how databases are managed, often people assume that one of styles is being used - if different participants assume different styles then the discussion can quickly get very confused as the two styles imply very different assumptions about database management. Certainly in the database and data management communities, people tend to assume that databases will be IntegrationDatabases. This has been the working assumption of many years of the database community. Increasingly, however, this assumption has been questioned. Integration databases end up with interfaces that have a large surface area and limited abilities to separate interface from implementation. The resulting links between applications and databases end up being brittle and thus difficult to change.

The recent rise of Service Oriented Architecture seems to mean very different things to different people, but one plausible thread is a rise of autonomous applications with their own ApplicationDatabase that communicate through service interfaces - effectively replacing shared database integration with rpc or messaging based integration. I'm very sympathetic to this view, particularly favoring integration through messaging - which is why I encouraged the development of EIP. In this view of the world the integration database is no longer the default assumption.

So my principal point is this: beware of the difference between the two database styles and take it into account when you are discussing issues of database management.