One of the reasons I was finally inspired to finish that JavaDB piece I just wrote (after starting the homework for it in January) was because a ZDNet reader recently contacted me regarding a two year old piece I wrote that asked whether or not Sybase and iAnywhere were the go-to guys for database synch. Even though some would lead you to believe otherwise, reliable connectivity isn't that ubiquitous and it's for this reason that I have said and still believe that synch is still king.
Sure, it's cool to run a CRM application like Salesforce.com in nothing but a browser (which I'm just now starting to experiment with in order to keep track of the attendees to Mashup Camp and my correspondences with them). But what do you do when the connection is down? Or when Salesforce or whatever you have to connect to is down? It's actually no wonder that there are a bunch of different ways that Salesforce data can be synchronized to client software like Outlook, iAnywhere's Sales Anywhere, MindJet, and other third party solutions that can keep running if connectivity to the mothership is lost (or that Salesforce's sforce users are looking for advice on the matter).
With Salesforce, I'm playing with Outlook connectivity. But for the most part, my preference is to work through the browser in a connected mode. If I'm not connected, then I just wait. But there are other developers of enteprise applications -- like the ZDNet reader who wrote to me -- that can't wait. Gary (not his real name) is on looking at sending as many as 2000 people into the field with handheld and notebook computers that need the ability to replicate with some back end database. Dating back to that piece I wrote a couple of years back, iAnywhere's (a subsidiary of Sybase) SQL Anywhere solutions has been one of the industry's leading contenders for database driven applications where such replication is a requirement. He wanted to know what I'd say today if I wrote the same story.
Well, for starters, I was remiss in not mentioning IBM's DB2 Everyplace. Although I can't find her e-mail, an IBM engineer that was working on DB2 Everyplace wrote to me at the time to say that IBM offers many of the same features in DB2 Everyplace that iAnywhere offers with SQL Anywhere. The chief selling proposition of iAnywhere's solutions over the other leading solution I looked at -- Microsoft's SQL Server -- was the platform flexibility on both ends of the pipe. On the client-side, iAnywhere's database solutions support Linux, Palm, and Java in addition to the requisite collection of Microsoft's OSes (Windows XP, Windows CE, Windows Mobile, etc.). On the server side, iAnywhere has the same flexibility, supporting a variety of *nixes in addition to Windows. To keep things as lightweight as possible for my application, I didn't want an entire Windows Server. I just wanted a stripped down old Linux box that could handle the load of a light database.
IBM's DB2 Everyplace is similarly operating system agnostic on both end of the pipe.
One area of interest to Gary (and I'm guessing others) is cost. And here, things get a bit tricky because there's some dog wagging that goes on when it comes to pricing. At first blush, iAnywhere's offerings come across as being very expensive. For example, according to the company, after a 25 percent volume discount, at $119 per client, a 2000 seat deployment of iAnywhere's client-side database will run Gary around $178,000 in licensing costs. In contrast, DB2 Everywhere and Microsoft's client-side versions of SQL Server are free. So, the answer is obvious? Right? Well, not quite. You still have to synchronize to a central database server and that's where the gotcha is. For example, according to Microsoft's How To Buy page for SQL Server Mobile:
[It's free] provided that they operate in stand-alone mode. In stand-alone mode, the device does not connect to or use the resources of any SQL Server system not present on the device. Licensing Considerations Customers Running SQL Server 2000 SP3a, SQL Server 2000 SP4, and SQL Server 2005...Customers connecting SQL Server Mobile to a SQL Server database must ensure that they have appropriate licensing for the mobile devices with which they are connecting. Customers can use either the Server plus User or the Processor licensing model. The Server plus User licensing model requires a Client Access License (CAL) for each additional device connecting to SQL Server. The Processor model enables an unlimited of devices to connect to SQL Server.
According to Microsoft's pricing page, the CAL for each user once they're connecting back to a central SQL Server is $162 (note, I'm not even including server pricing here). Just supposing Microsoft gives Gary the same 25 percent discount that iAnywhere is giving, the total client-side cost is $243,000. Gary asked about Oracle too. I pinged a contact at Oracle and got no response but researched pricing and found that, at around $100 per user for Oracle Lite (which also very OS agnostic), Oracle offers client side pricing that's actually a bit less expensive than iAnywhere's pricing. But then, depending on what kind of deal you can cut with Oracle, the company may end up making up for the difference in its server pricing.
And what of IBM? Based on actual pricing data that's available from IBM's Web site, two things are clear: First, even though IBM is also operating system agnostic on both ends (server and client), the only supported synch configuration is when you connect IBM to IBM (the same goes for Microsoft and Oracle). Second, it's clear from IBM's Web site that once you start synchronizing to a server, not only does the cash register ring on the DB2 Everyplace Express client side ($65 at a minimum), there are also specific products (DB2 Everyplace Sync Server and DB2 Everyplace Sync Client) that may drive the price up before you're synching with a server.
Again, prices will vary. Big deployments like 2000 mobile users are the types of deployments that vendors love to have notched on their belts and my bet is that they'd all wheel and deal to close such a bid. So, is there a way to really get away free? Whereas Oracle synchs with Oracle, IBM synchs with IBM, Microsoft synchs with Microsoft, and iAnywhere can synchs with all of them (yes, out of the box), none of them synch (out of the box) with the free databases like MySQL. Can you get it to work? Sure. Will it be painful? Yes. Synchronization is sensitive stuff. You're probably better off in a supported configuration than not.
So, as it turns out, free isn't exactly free. The idea behind giving away the handheld databases is to get you working with them and developing with them and liking them. But once you need to attach them to something, in true wag the dog fashion, you'll need to get your wallet out.
Finally, it does seem to me like there's a gap for some open source stack outfit like SpikeSource or SourceLabs to fill here. For example, in addition to developing and supporting whatever code is necessary to free up synchronization of commercial mobile databases with central open source-based database servers, they could also stretch that effort to cover synchronization between JavaDB and any database. Hmmmm.