In the early life of a project, there is always this time where the question of the day becomes: And now, what database should we use? (Of course, this is assuming that there is a choice possible.) This is at time where our decision is often unfortunately influenced by preconceived ideas. Our preference for databases we have already used in the past, our opinion of open source software, or our experience with SQL and XML technologies are all biases that will overly contribute to our final decision.
In an effort to get past personal biases, let's look at databases from a different perspective, and focus for a moment on these two fundamental properties of every database:
- What is the license? (Is it a commercial or an open source database?)
- What is data format? (Is this a relational or XML database?)
Now that we have those properties in mind, let's look at them in terms of benefits and drawbacks. Specifically, let's see how they impact cost and risk:
- Commercial vs. open source: Obviously commercial software can't beat open source on the licensing cost. However commercial software tends to have longer track records, and better scalability than open source software, which reduces risk.
- Relational vs. XML: Relational databases are deployed everywhere: the relational technology is mature. On the other hand XML databases are widely deployed in some verticals but lag in maturity compared to relational databases. Will the database handle the load? Will the project or company behind this database still be there 5 years from now? Those are all questions that don't find a clear answer for most XML databases, which is a factor of increased risk. On the other hand, storing data as XML documents accelerates development and makes applications more flexible.
The trade-offs are typical: with increased risk come greater rewards (and lower cost). Think about what differentiates you from the competition:
- Is licensing cost per CPU is an issue? Are you going to deploy your solution on a large number of servers? If it is think about open source. Otherwise a commercial database might be the safest option for you.
- Do you need a great amount of flexibility? Will the format of data your application will work on change frequently? If this is the case, an XML database might be the right choice for you. Otherwise a relational database should do just fine and you will be able to choose amongst a number of industry proven databases which will reduce risk.
Now the choice is yours!