개발자

SQL 프로시저, 함수는 어떤때 쓰세요?

2024년 03월 08일조회 186

안녕하세요 백엔드쪽 공부중인 아저씨 개발자입니다. 백엔드에서 책이나 강의로는 접하기 어려운게 Sql 프로시저나 함수더라고요. 아... 배치도 추가.. 현역에서 잘 쓰시는분들은 SQL 프로시저에 함수를 어떤때 쓰시는지 궁금합니다... 안쓰는 회사도 잇나욤? 감사합니다

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

김도열님의 프로필 사진

이유는 간단합니다. "비즈니스 로직은 DB에 있으면 안된다" 저는 이 말을 처음 들었을 때가 2004년이었고, 실제로는 그 이전부터 있어온 이야기입니다. 그런데 여러 개발 프레임워크가 발전해 오면서 이 주장은 계속 힘을 얻어 왔죠. 그리고 지금은 대다수가 당연한 것으로 받아 들입니다. 다시 스토어드 프로시저로 돌아오면, 스토어드 프로시저는 다양한 Query문을 하나의 로직으로 캡슐화합니다. 여기서 사람들은, DB에 비즈니스 로직이 있으면 안되는데 스토어드 프로시저를 쓰면 이 원칙이 깨진다고 생각하는 겁니다. (개인적으로는 동의하지 않는 주장입니다.) 그래서 오래된 회사이거나 새로운 프레임워크로의 전환이 늦은 조직이 아니라면, 대부분 스토어드 프로시저나 함수는 RDB를 관리하거나 일부 배치 작업을 처리하는 제한적 용도로만 사용합니다. 또는 아예 사용하지 않는 경우도 많습니다. 하지만 예외도 있습니다. 첫 째로, MS SQL Server를 사용하는 환경입니다. MS는 오래전부터 스토어드 프로시저 사용을 권장해 왔고 최적화가 잘되어 있습니다. 공부에 필요한 스토어드 프로시저 교재도 내용이 충실하고 다양하죠. 예전에는 주로 온라인 게임에 많이 사용되었습니다. 둘 째로, 현업에서 스토어드 프로시저를 프레임워크 수준으로 잘 사용하는 조직입니다. 이 경우는 백엔드 서버가 RDB의 테이블 에 직접 액세스하는 것이 아니라, 프로시저를 추상화 레이어로 사용하게 됩니다. 이렇게 하면 백엔드 서버와 RDB의 결합도 (Coupling)가 극단적으로 낮아집니다. 그 결과로 백엔드 코드에 영향을 주지 않고 RDB를 자체적으로 리팩토링하고 별도로 배포할 수 있어서 변경에 유연한 서비스를 만들 수 있습니다. 지금 자바와 스프링을 공부하고 계신다면 아마 스토어드 프로시저를 접할 기회는 없을 것으로 생각합니다. 다만 RDB를 설계하고 SQL로 무엇을 할 수 있는지는 깊이 있게 공부해야 한다고 생각합니다. JPA도 결국은 SQL을 대신 만들어 주는 것이라.. 결국 시니어로 가는 과정에서 RDB에 대한 깊이 있는 지식은 필수적이기 때문입니다.

김병규님의 프로필 사진

김병규

작성자

아이스크림에듀 안드로이드 개발자2024년 03월 09일

도움되는 말씀 감사합니다. 실제 사용 사례 찾아보기가 이 부분이 찾기 어렵더라고요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!