http://jeremy.zawodny.com/blog/archives/002194.html
추상화의 장점을 다음과 같이 반박한다. 데이터베이스 계층을 추상화해야 한다는 사람들의 주장:
추상 계층을 잘 만들면 $this_database에서 $other_database로 이동하는데 덜 고통스럽다(쉽다).
절대 쉽지 않다. 어느 누구도 데이터베이스를 변경하는 것을 쉬운 일로 생각하지 않는다. "(데이터베이스) 전환이 덜 고통스러울 것이다"는 판타지다. 좋은 개발자는 개발하는데 가장 최선의 도구(데이터베이스)를 선택한다. 그리고 도구의 강력하고 유니크한 기능을 사용하면서 이점을 가진다. 모든 RDBMS의 공통 기능만 사용하는 것으로 제한한다면 자신과 클라이언트에 막대한 손해를 입히는 것이다. 이는 이렇게 말하는 것과 같다. "나는 Perl, C, PHP 공통 기능으로 제한하려고 해요. 왜냐하면 언젠가 언어를 바꿔야 한다면 덜 고통스러웠으면 하거든요."
애플리케이션이 개발, 배치 후에 데이터베이스를 교체하는 비용은 꽤 높다.
스키마와 인덱스를 변경하고 문법도 변경하고 최적화와 튜닝도 다시 해야한다.
데이터베이사의 힌트도 조정하거나 제거해야 한다.
mysql_foo()를 oracle_foo()로 변경하는 것은 문제점 중에서 가장 작은 부분이다.