Time was that if you didn’t want to be sacked then you bought IBM. That IT department maxim became anathema in the 1990s when IBM looked like it was going to go the way of the American automobile industry. Despite having launched the personal computer revolution in the 1980s, IBM had become a seemingly uncontrollable, and out-of-control, leviathan – it was an organisation where very few people, least of all its executive, appeared to understand its direction, its customers or its products.
In recent years IBM appears to have managed to shake off its unwelcome old reputation. It even seems to have managed to pass on its peculiar lurgie to its nemesis Microsoft.
CouchDB
IBM now hangs around with tech hipsters. In fact it not only hangs around with the cool kids, it likes to trumpet the fact that it’s throwing large amounts of cash at them with its announcement that IBM is acquiring Cloudant.
Cloudant
Cloudant is a database-as-a-service (DBaaS) provider that proclaims to provide services for everything from big data, through web apps, and on to mobile platforms. It does this primarily by providing CouchDB instances. Cloudant is a major contributor of code to the open-source Apache CouchDB project and anyone who does that is alright with me.
IBM does have some history with CouchDB. The CouchDB creator, Damien Katz, was funded by IBM during its gestation, and the concepts underlying it were based upon his experiences with Lotus Notes, which IBM owned.
PouchDB
This week I’ve been experimenting with a sort-of off-shoot of CouchDB called PouchDB which is a Javascript database library. It has the API feel of CouchDB, it allows the creation and management of a database within the browser but, and this is the major plus point, it can replicate the data within that database with remote CouchDB instances (in fact, it can replicate with other PouchDB instances too) whenever internet connectivity is available. It’s untroubled if there is no internet connection available and when the connection returns, it starts replicating again. That replication can be pretty granular as it allows CouchDB filters to specify what should be replicated in either direction.
The use case that PouchDB solves for me is that of several hundred geographically diverse locations, with varying degrees of internet reliability, that need to keep their local data in sync with head office and pull down various bits of static data from head office, as and when it changes. Everything has to run inside a browser as the presence of a browser is almost the only technology constant that can be guaranteed throughout the organisation.
Sssshhh
As a developer I’m left to concentrate on the core business requirements as the resulting code, stripped as it is of almost all replication logic, is now relatively simple. But you probably shouldn’t mention that to the client when the final bill is presented.