We are in the early stages for putting a design for a big business application that will have multiple modules. One of the requirements is that the application should be database independent, it should support sql server, oracle, mysql and DB2.
From what I have read on the web is that database independence is a very bad idea, it would result in a hard to maintain code,database design with the least common features in all supported DBMSs, bad performance and bad scalability. My personal gut feeling is that this is the most feature ever that could increase the development cost and time exponentially with complexity. The code will be dreadful.
But I cannot persuade anybody to ignore this feature. The problem is that most data on this issue are empirical data, no numbers to support the case. If any one has any numbers supported data on the issue I would appreciate it.
One of the possible design options is to use Entity framework for the database tier with provider for each DBMS. My personal feeling is that writing sql statements manually without any ORM would be a must since you have no control on the sql generated by entity framework and a database independent scenario will need some sql tweaking based on the DBMS the code is targeting, and I think that third party entity framework providers will have a significant amount of bugs that only appears in complex scenarios that the application will have. I would like to hear from anyone who had an experience with using entity framework for database independent scenario before.
Also one of the arguments discussed in the team is to support one DBMS (sql server for example) in the first iteration and then add support for other DBMSs in next iterations. I think that since we will need a database design with the least common features this development strategy is bad, since we need to know all the features of all databases before we start writing code for the first DBMS. I need to hear from you about this point too.