Monday, August 17, 2009

What Database is the best Database?

Quite often I see blogs that compares couple of databases and in the end they end up selecting a best database. I always wonder about the objective of such blogs because to me database is nothing but a solution to facilitate storing and retrieval of data in a structure manner. I am not going in to the details of structure data because that is a science in itself. The scope of this blog is limited to the fact that databases are used to store and retrieve information. So in my opinion the real question is not a blanket statement asking for what is the best database but the real question is about what database is best for particular kind of environment/application?
We all know database is just the part of an entire solution and it has to fulfill the very specific requirements of an application and this statement alone can guide us to the answer. We are living in a very evolved database era there are so many options to choose from and many companies are focusing/including various feature in their database solution. Take example of Mysql it has multiple database engine and it will be unfair to say it is best or worst database without going into the details of very specific need of it. It all depends on what is the expectation and how it is going to be used. Its default engine is MyISAM that is a good candidate for read only non transactional data but for anything else it could be the worst choice. So it just highlights the need of little more contextual diligence and purpose while choosing the best database. Similarly another open source database postgres focuses more on data integrity and transactional consistency. Many expensive database solution like oracle are taking the challenge to a completely different level they are not only investing in the RDBMS solution in fact they have started to manage each aspect of data right from storage to its performance. Their Automatic storage management and Auto tuning DB is very popular for quite some time. Even postgres offer such functionality to some extent and Mysql’s InnoDB has evolved quite a bit too. So the point is there are so many choices and so many specific feature that one really needs to drill down to the actual intent of the application in defining and selecting a best database. I would also like to mention that in the end even choosing a best database for your application is not enough. One also can’t ignore the investment in the engineering resource needed for it. It is becoming increasingly important with lots of available open source option. Since its open source so how well it works will pretty much depends on engineers who designed it and it’s not such a bad thing. Who else can do more justice to your application other than them? At InMobi we are using multiple databases and they being used because of their merit and specific contribution to solve a particular application problem.So we don't have a best database at InMobi but every application in InMobi has a database that makes most sense for it. I hope my blog will help people to solve the epic database selection problem in more contextual way and by asking right questions.

No comments: