저장 프로시저에 대한 논쟁
  • DBA 입장 : "데이터베이스를 보호하는 것은 우리의 임무다"
    *개발자 입장 : "코드를 작성하는 것은 우리의 일이고, 그렇게 할 수 있도록 하는 것은 DBA의 임무다"
  • 공통된 목표 : 최종 사용자의 요구를 충족시키고, 성능이 우수하며 필요에 따라 확장이 가능하고 유지보수가 가능한 데이터베이스 애플리케이션을 가능한 한 효율적인 방법으로 구축하는 것


1.1. DBA와 개발자 역할

  • DBA : 데이터베이스 아키텍처, 데이터베이스 패치, 데이터베이스 동작 방식 등을 이해해야 할 책임(성공적인 백업과 복구)
  • 개발자 : 데이터베이스를 단순히 하나의 툴로 보는 프로그래머/분석가 대부분의 경우 인터페이스 디자인과 같이 데이터베이스와 무관한 일을 하는데 많은 시간을 보낸다.


1.1.1 DBA가 해야 할 것과 하지 말아야 할 것

DBA가 하지 말아야 할 것
  • (1)DBA는 자신의 주요 임무가 악의적인 개발자로부터 데이터베이스를 보호하는 것이라는 생가에서 벗어나야 한다.
  • (2)정당한 이유 없이 특정 기능을 금지시키지 않아야 한다.
  • 1)뷰 금지 : 성능에 악영향을 끼친다는 고정관념
  • 2)저장 프로시저 금지 : 문제가 SQL에 기반을 두고 있다면 성능이 나쁜 모듈을 쉽게 튜닝할 수 있다.
  • 3)버전 6 이후에 추가된 기능 금지 : 새로운 기능에 대해 확신하지 못하는 고참 DBA에게서 흔히 나타나는 현상
  • 4)N 릴리스의 새로운 기능에 대한 채택 기피 : 지역적으로 관리되는 테이블 영역이 전형적인 예


DBA가 해야 할 것들
  • (1)개발자를 지도할 수 있고 데이터베이스 지식을 전수해 줄 수 있는 누군가라고 생각하라.
  • (2)새로운 기능이 소개되면 이들을 평가하고 테스트하라.
  • (3)사실에 입각한 증거로 정책과 절차를 뒷받침하라
  • ex)"캐시 적중률이 99.9%이면 임무 완료다","테이블은 하나의 익스텐트(extent)에 존재하여야 한다"와 같은 성능 튜닝 신화


1.1.2 개발가자 해야 할 것과 하지 말아야 할 것

  • (1)DBA 주위에서 일하지 말고 그들과 함께 일하라.
  • (2)DBA는 개발자를 적대시한다고 추측하지 말라.
  • (3)DBA에게 이유를 설명하도록 요청하라.
  • (4)말하고 있는 것에 대해 확신을 가져야 한다.가설로 시작하고 테스트함으로써 이 가설을 증명하도록 노력