We all like to get stuff for free. Not paying for something leaves money to spend on something else. So, when you come across something that is free it is hard to say "no"; the non-free alternative has to have a lot of value to win over "free". But what if you have a choice of "free"? What if there is more one "free" option, which one do you choose? When it comes to databases, there are several free options. First there are open source products. Everyone assumes that open source means "free". This is not quite accurate but more on that later. Then there are offerings from commercial database vendors like IBM, Oracle, and Microsoft. So, given that price is not a differentiating feature, how do you choose free data server that is right for you?
This is the question I get a lot. Given that I lead the team that provides one of these free data servers, I am hardly an unbiased observer. However, I decided to write a series of blog posts to explore the choices that are available and I am going to try to stay unbiased to the best of my abilities. In these series of articles I wanted to first look at the "free" offerings by commercial database vendors namely IBM DB2 Express-C, Microsoft SQL Server Express 2005, and Oracle Express Edition (XE). Later I will compare these to the open source offerings from MySQL and if I still have energy and persistence to PosgreSQL.
Since today we made a major announcement around DB2 Express-C and since DB2 is first in the alphabet order I will start with the IBM DB2 Express-C. DB2 Express-C is IBM's full function free data server that IBM has been offering since January 2006. The current version is version 9 (formerly known as Viper). I'd like to start with a couple of important facts about DB2 Express-C. First, DB2 Express-C really is free. There are no license charges of any kind and DB2 Express-C can be used free of charge for building applications, as well as deploying applications in production in your own organization. If you build software that you distribute to your customers, you can include a full copy of DB2 Express-C without paying IBM any money. This is why DB2 Express-C tag line is "Free to build, deploy, distribute ... No Limits". That brings me to the "No Limits" part and this requires an explanation. DB2 Express-C, unlike Oracle and Microsoft "free" products does not impose any limits on the amount of data that you can store in DB2. If you want to store 10 terabytes and you have enough disk space, you can go ahead and do that. In the world of free databases this is pretty unique. Another key point is that DB2 Express-C does not place restrictions on the number of instances you can have on a server. Each DB2 Express-C instance can have multiple databases; 256 databases is the maximum for a single instance. And, each database can have a maximum of 64000 active user connections. It is important to note that these maximums are not unique to DB2 Express-C and are identical to the DB2 Enterprise product. And last but not least, there are no time limits or time bombs of any kind; it is a perpetual license. So, practically speaking, DB2 Express-C has no limits, at least no limits imposed by its license. Why is this important? In the world of "free" products a common strategy is to hook customers with a free but limited offering and then use these restrictions and license limitations to drive users to purchase full function product. This class of "free" software is known as crippleware. Crippleware is very useful for getting comfortable and evaluating the software, especially complex software that requires long evaluation periods. However, adopting crippleware for long term mission-critical use on an expectation that it is free is rarely a wise decision. Crippleware producers are very good at restricting just the right set of capabilities to help you built a dependency for a long enough period to be hooked and yet have no choice but to move to often very expensive products. By not implementing any artificial functional restrictions or license limitations DB2 Express-C differentiates itself from both Microsoft SQL Server Express 2005 and Oracle XE. In my opinion, anyone looking to for a free database server product will find this particular aspect to be the main deciding factor between DB2 Express-C and Oracle and Microsoft free offerings.
DB2 Express-C does place a limit on the amount of resources it will use to accomplish its work and to deliver top level of performance. DB2 Express-C will use a maximum of 2 CPU and a maximum of 4GB of memory. However, it is important to note that DB2 does not stop working if more resources are available, it simply will not use additional resources to achieve higher level of performance. This is why we say that DB2 Express-C is optimized for servers with a maximum of 2 processors and 4GB of memory. 2 processors (each with multiple cores) and 4GB of memory are actually very generous resource allowances. Dual CPU, 4GB of memory servers are the sweet spot of the Intel/AMD server market today as they deliver the best value for the least amount of money. By comparison, both Oracle XE and Microsoft SQL Server Express 2005 will only use 1 processor and 1GB of memory. While today's multi-core processors can do significant amount of computing with single CPU, 1GB of memory is simply not sufficient for serious database applications.
While we are on the subject of server hardware, processors and memory, it is a good time to talk about 32 vs. 64 bit and about operating systems. DB2 Express-C is available in 32 and 64-bit versions for both Linux and Windows. The 64-bit versions are true 64-bit implementations and do not use Windows on Windows (WoW) or other emulation technologies. Linux support that DB2 Express-C provides is the broadest in the industry. Not only can you run DB2 Express-C on Linux on Intel and AMD servers, you can also deploy DB2 Express-C on IBM System p and System i servers running Linux on POWER. Windows users have a choice of using DB2 Express-C on Windows XP (including Home edition) and Windows Vista or on Windows Server 2000 and 2003.
Now that I have delved in to hardware and operating systems I want to come back to the features and capabilities. Earlier I mentioned that DB2 Express-C is built on Viper technology. Viper technology is the name for the hybrid relational-XML storage engine that DB2 9 introduced to the market. This is the key feature that sets DB2 Express-C apart from other DBMS on the market free or otherwise. If you are building applications and if you at all care about XML, you really ought to look at what DB2 Express-C has to offer in this area; here really is no equal. Sure, other vendors will claim that they have native XML data type in their offerings but people who know XML and understand pureXML (DB2 implementation) will tell you that there is just no comparison. DB2 Express-C support for XML is just and example of another key point; DB2 Express-C is exactly the same code as the higher end DB2 offerings such as DB2 Express, DB2 Workgroup and DB2 Enterprise. It is not some marketing trick or hacked up version -- it is the same code. This means that any application developed with DB2 Express-C will continue to work if you were to swap DB2 Express-C server for say DB2 Enterprise. No code changes, no recompile, not even configuration change is required. Just swap the server and get extra capability scalability and performance.
One of the things that the free version of DB2 Express-C does not provide is technical support. You can get assistance through the DB2 Express-C on-line forum but there is no guarantee of response time nor is there a promise of code updates or hot fixes. DB2 Express-C is not unique in this approach. All other free database products use the same methodology. Free means you don't get support; free means you are comfortable doing this yourself and relying on the good graces of he community to help you out if need arises. If you are putting your mission critical applications on something that does not have a support by a reputable vendor you are taking a big gamble with your application and possibly your career. IBM recognized that while free is great, some folks would actually like to be able to purchase support for the free DB2. This is why today IBM announced 12-month License and Subscription for DB2 Express-C. What does it mean? You get 12 months of IBM (not third party) 24*7 technical support in the language of your country (In Canada this means both English and French). You get regular quarterly updates (we call them FixPaks) and you get upgrade protection which means any new versions of the products that come during these 12 months are made available to you. Once the 12-month period is over, you can get the next 12 month or revert back to an unsupported version. The cost of this subscription is US$ 2995 per server. Notice that you do not have to figure out ham many CPUs you have in the server or how many cores each CPU has. It is all very simple, decide how many DB2 Express-C servers you will have and buy a subscription for each one. This is very similar to the model used by the open source companies i.e. allow you to use the product for free but charge for support. However, there are a couple of crucial differences. Open source companies do not provide indemnification. That's a big and scary word that is sure to make your company lawyer in to an uncontrollable shiver. What this means is that someone can make a claim that the free software you are using has their intellectual property and the open source company that provided this software will not be liable and will not defend you against such a claim. If you are working for a small outfit this is typically not an issue. But, if you are working for a large multinational or a cash rich start-up, you are automatically in the cross-sight of the patent trolls. Some open source companies will sell you indemnification but for substantially more money then their support agreement. DB2 Express-C license completely indemnifies you and your organization. When IBM ships product code to its customers, the pedigree and origins of every line of code is verified and all intellectual property work is complete.
Another key difference of the DB2 Express-C subscription is that not only does it deliver 24*7 support and regular product updates, it also provides extra function. One of the extra functions that it provides is data replication. Using this feature you can replicate data between multiple DB2 servers (not just DB2 Express-C). You also gain ability to deploy DB2 Express-C in a clustered environment to assure high availability. You can use just basic operating system and hardware clustering or, you can use the very slick High Availability Disaster Recovery (HADR) feature of DB2. If you want to learn more about DB2 Express-C high availability options see this flash demo. HADR is a really slick feature and you will not find anything equal to it for either MySQL or the Microsoft SQL Server. You could look at the Oracle Data Guard as providing somewhat similar function (but not quite) but you will be looking at US$40000 per CPU license charge. If you take in to account 24*7 support and data replication, US$ 2995 for a full function hybrid relational-XML server is an incredible bargain. To build a highly reliable database cluster of such database servers for US$ 5990 (both servers in a cluster need to have DB2 Express-C subscription) is an even bigger bargain. This type of highly resilient database clusters typically cost hundreds of thousand of dollars.
Hopefully this long post provided an overview of the DB2 Express-C offering. In the next post I will try to compare and contrast DB2 Express-C and Oracle XE and the one after that will deal with Microsoft SQL Server Express 2005. So come back and check this blog soon.