비즈니스로직구현 자바와 프로시저 0 17 2,322

by 달라쏭 [어플리케이션관련] [2016.12.21 13:33:14]


저같은 경우 대부분 핵심모듈은 프로시저/패키지로 끝내는 편인데.

주위에선 불만들이 들리네요(유지보수등)

여러분들의 경험으로 비추어진 장담점은 어떤게 있으신지 궁금합니다..

감사합니다.

 

by jkson [2016.12.21 13:42:31]

개발자 입장에선 유지보수가 저는 오히려 쉬운 것 같은데..;

배포 시간 제약 따로 없는 것도 장점이고..(물론 서버가 하드하게 일하는 중에 빌드하면 안 되겠지만요.)

db쪽으로 call 많이 안 날려도 되니 좋고..

DBA 입장에서는 생성된 object 관리를 해야하니 어려운 것이겠죠. 예를 들어 테이블 컬럼 추가하면 관련된 프로시저 다시 컴파일해줘야 하는 등..

버전 관리도 어렵죠. 지정된 날짜나 수정사항 있을 때 백업 안 해놓으면 단 며칠간이야 살려낼 수 있겠지만 시간이 오래 지나버리면 수정 전에 어떤 내용인지 알기 어려워지니까요.

저는 단점보다는 장점이 많다고 생각합니당ㅋ


by jkson [2016.12.21 15:23:58]

버전 관리에 대해서는..

주기적으로 backup해주는 게 좋지만 잘 안 하시죠.

user_source 테이블 트리거가 가능하다면 변경시마다 변경 내역을 특정 backup 테이블에 insert해도 좋을 것 같은데.. 트리거 생성이 안 되더군요. 원래 안 되는지 제가 잘못한 건지 모르겠지만..

변경시마다 backup은 불가하지만 job으로 하루에 한번 내용 변경이 있는 source에 대한 백업은 가능하니 이런 방법 사용해보시는 것도 괜찮을 것 같습니다.


by 달라쏭 [2016.12.21 15:29:18]

"내용 변경이 있는 source에 대한 백업은 가능하니..."

이거 좀더 상세히 알려주시면 안될까요. 잘 이해가.. ^^


by 우리집아찌 [2016.12.21 15:40:08]

트리거 걸려도 수정될때마다 insert 되면 쓰레기 값이 너무 믾을듯


by jkson [2016.12.21 15:40:12]

백업용 테이블 만드시고

create table 백업테이블
as
select sysdate backupdt, name, type, line, text from user_source where 1 = 2

해당 백업테이블의 최종 날짜 text와 user_source의 text가 달라지면

백업테이블로 insert 요런 내용입니다.

 


by jkson [2016.12.21 15:41:40]

아찌형님 - 대부분 최종본으로 운영에 업로드하니까 의미없는 수정이 아닌 이상 쓰레기 값은 아니지 않을까요?


by 우리집아찌 [2016.12.21 15:44:36]

아 개발db만 생각했다 ㅎㅎㅎ


by 달라쏭 [2016.12.21 15:56:10]

감사합니다. 활용해 봐야겠네요 ..ㅎㅎ


by 우리집아찌 [2016.12.21 14:23:10]

형상관리가 어렵고 유지보수할 개발자가 이해도가 떨어지는 경우 힘들어합니다


by 달라쏭 [2016.12.21 14:32:37]

버전관리및 유지보수가 가장 큰이슈라고 생각됩니다만.

성능처리및 속도 등에선 우월하지 않나요?

게대가 만약 저희같은 케이스는 '주문' 이라는 액션시 

3~4개의 테이블에 INSERT

2개 테이블에 UPDATE

커서와 FOR문을 이용한 INSERT , UPDATE

익셉션시 로그테이블 INS 1개 등 

수만은 테이블에 적재및 UPDATE 가 일어나는데 

자바로 처리할때  위 트랜잭션 관리및

익셉션(사용자 정의 익셉션 포함) 발생시 롤백및 관리등은 어떻게 처리할건지.

그게 좀 궁금하네요..

 


by 마농 [2016.12.21 15:17:25]

로직 처리는 DB 단에서 하는게 여로모로 좋습니다.
무서운 거는 개발자가 실수로 소스를 날려먹는 거죠.


by 달라쏭 [2016.12.21 15:37:07]

한번 그런적이 있었습니다.. 컴파일을 잘못하는 바람에  ...x됐다.  

개발기란걸 안순간.. 생명연장의꿈을 이룰수 있었습니다.


by jkson [2016.12.21 15:45:21]

달라쏭님 그럴 땐 sys 계정 로그인 하시고

select text

from dba_source as of timestamp to_timestamp('2016-12-21 15:00:00','yyyy-mm-dd hh24:mi:ss')

where name = '프로시저명' order by line

이렇게 해당 내용 가져와서 살려낼 수 있음당

딱히 제가 날려먹어서 이런 내용을 아는 건 아닙니다..ㅋㅋ;


by 달라쏭 [2016.12.21 15:52:10]

ㅎㅎ  이거 예전에 커밋 이전 데이터 확인하는 방법 찾다가 본적있습니다.

프로시저에등에서도 통하나 봐요 .감사합니다 ㅋㅋ

근데 이거 시간제한있지않나요? 세시간정도로 알고있었는데.ㅎㅎ

 


by jkson [2016.12.21 15:57:50]

특정 시간 지나면 사라지지요. 그래서 backup을 주기적으로 하는 것이구요.


by 우리집아찌 [2016.12.21 15:42:34]

형상관리 툴있는곳에 가본적이 있는데 프로시져를 운영기에 올릴려면 서류쓰고 난리나서 그냥 java에서 하라는 곳도 있었음


by 미스틱매니아 [2016.12.22 13:59:15]

프로시저/패키지를 이상하게 만들어서 부하주는게 아닌이상( 굳이 DB단에서 다 끝내겠다고 말도안되는 JOIN 쓰고 함수 쓰면서 가공한다던지 등) 프로시저/패키지가 오히려 관리하기 편한거 같은데요. 만에하나 뭔가 잘못되는 케이스 나왔을때 JSP 컴파일 하고 올리고 WAS 재기동 하는 시간이랑 프로시저 리컴파일 하는거랑 리스크 비교하면 후자가 압도적이죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입