<서론>
최근 진행한 프로젝트는 쿼리대신 SP(Stored Procedure)를 이용했고, xml 파일에 별도에 쿼리를 작성하지 않았다.
내 개발 경력이 없다시피 한 수준이고 따라서 SP를 사용한 프로젝트가 처음이라, SP를 사용하면 어떤 장점과 단점이 있는지 이번 기회에 공부 겸 정리하고자 이렇게 블로그에 끄적여본다.
<본론>
1. SP란?
- SQL 명령문들을 마치 하나의 함수처럼 사용하기 위해 DB 내부에 저장된 쿼리의 집합이다.
2. SP의 장점
- 성능 측면
1. SP는 최초 컴파일 시 최적화되며 이후 DB에 캐싱되어 저장된다.
최초 컴파일 이후엔 다시 컴파일 하거나 최적화 되지 않는다. 즉 자주 사용하는 쿼리일수록 SP로 처리하는 것이 큰 성능 향상을 야기할 수 있다.
2. 네트워크 트래픽을 감소시킬 수 있다.
SP가 서버에 저장되기 때문에 쿼리가 필요할 때마다 쿼리를 전달해주지 않아도 되며, 필요한 매개변수만 던져주면 되기때문에 트래픽을 줄일 수 있다.
- 개발 측면
1. 개발 언어에 비의존적이다.
비즈니스 로직을 SP로 구현해 놓았다면 개발 언어가 바뀌더라도, 해당 DB에 SP를 호출할 수만 있으면 된다.
2. 유지 보수가 매우 편리해진다.(개발자 == 유지보수)
프로그램을 개발한 사람이 유지보수까지 하게 된다면 DB관련 작업을 할 때, SP만 수정해주면 된다. 비즈니스 로직도 SP로 구현했다면 WAS를 재기동할 필요 없이 SP만 수정하면 된다.
3. SP의 단점
- 개발 측면
1. 유지보수가 어렵다.(개발자 != 유지보수)
앞서 유지보수에 강점이 있다 서술했지만, 유지보수를 하는 사람과 개발한 사람이 다르다면 유지보수는 어려워질 것이다. 데이터 분석이 까다롭고 하나의 프로시저를 여러 곳에서 사용했을 경우 영향도 분석이 어렵다.
2. DB 확장이 매우 힘들다.
서비스 사용자가 많아져 서버의 수를 늘려야할 때, DB의 수를 늘리는 것이 더 어렵다. 또한, DB 교체는 거의 불가능해진다.
<결론>
SP에 대해 알면 알수록 얻는 것에 비해 잃는 것이 많은 것 같았다. 위 단점에 서술하진 않았지만, DB 자원이 상대적으로 더 비싼데, SP로 비즈니스 로직을 처리하면 당연히 개발 단가가 올라갈 수 밖에 없을 것이다. 또한 서비스 확장을 위해 서버의 수를 늘릴 경우, DB의 수를 늘리는 것보다 WAS의 수를 늘리는 것이 더 효율적이기에 최근 대부분의 개발에서 DB에는 최소의 부담만 주고 대부분의 로직은 WAS에서 처리할 수 있게 한다고 한다.
블로그 글을 쓰기 위해 공부하면서 SP를 사용하는 프로젝트를 앞으로 또 만날 수 있을까 생각이 들었지만, 그냥 이런 게 있구나 하는 심정으로 글을 정리한다.
ps. 틀린 부분은 지적해주세요.
<참초>
https://itability.tistory.com/51
https://okky.kr/article/396251
'IT 공부 > 이론 공부' 카테고리의 다른 글
[DB]프로시저 vs 사용자 정의 함수 (2) | 2019.04.11 |
---|---|
[DB]RAC, HA가 뭐지? (3) | 2019.03.20 |