안녕하세요
새로운 사이트를 보게 됬는데
대부분의 쿼리 로직을 어플리케이션으로 구현하지 않고,
대부분 프로시저로만 구현을 해서 사용하고 있네요.
거의 오라클만 써봤고, EPAS, Postgresql 은 초보라서 그러는데
오라클의 경우 이렇게 개발하는 것은 성능 문제와 유지보수 문제로 지양하는 편입니다.
Postgres 계열의 경우 이렇게 개발하는 게 일반적인 건지요?
shared 메모리와 관련된 문제 등 성능 문제는 없나요?
저는 개발 13년차인데 db기반 으로 개발을 시작해서 인지
ms-sql/oracle 에서 biz로직을 모두 프로시저로 했습니다.
물론 PG에서도 프로시저(함수)기반으로 합니다.
개발언어는 c#/java 사용하구요... was는 iis/weblogic
성능 문제라고 말씀하시는데 대용량 조회 할때 was쪽에서 xml로 파싱하다가
was에서 out-of-memory리 발생해서 해당 로직을 오라클 프로시저에서 xml생성하는거로 변경했습니다.
shared메모리 문제라고 하셨는데 이건 개발자가 쿼리나 프로시저를 잘못 개발해서 그런거지 DB의 문제 일까요?
C#커뮤니티에서도 이 거로 몇번 얘기가 나왔는데 거기 관리자분은 (c#개발자 출신) 보통의 경우는 WAS쪽에 BIZ로직을 처리하고 속도나 성능에 문제가 있을땐 프로시저를 사용한다고 합니다.
물론 이분은 DB보다 C#을 더 잘하십니다. 본인이 잘 하는쪽에 비중을 두는게 맞겠죠?
p.s
말씀드린 c#커뮤니티는 www.csharpstudy.com 입니다.
"오라클의 경우 이렇게 개발하는 것은 성능 문제와 유지보수 문제로 지양하는 편입니다."
과연 오라클에서 프로시저로 개발하면 성능에 문제가 있을까요? ^^
보통 오라클 개발 프로젝트의 경우 비즈니스 쿼리 로직을 전부 PL/SQL 로 개발하는 것은 피하고 있습니다.
java 어플리케이션과 같이 쓰는 경우가 많은데 이 ibatis xml 을 사용하여 sql을 매핑하여 사용하는게 일반적입니다. 프로시저로 작성하는 부분도 분명히 있습니다. 하지만 모든 비즈니스 로직 부분을 프로시저로 작성하게 되면 차후 수정시에 연결된 모든 invalid 객체를 컴파일 해야 하는 등의 문제가 생기고, 개발자가 바뀌거나 하게 되면 유지보수 문제가 심각하게 발생합니다.
성능 문제는 cbc 입니다. 튜닝이나 어플리케이션 로직 수정, 바인드 변수 사용 등으로 피하는 방법은 얼마든지 있죠. 하지만 일반적인 방법을 말씀드린 겁니다.
답글에도 나와있지만, WAS 쪽에 BIZ 처리 로직을 두는게 일반적이긴 합니다.