본문 바로가기
조회 수 661 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
대학교 2학년때 데이터베이스를 배우면서 교수님이 하신 말씀 중에 "프로그램을 짤 때 가급적 데이터베이스 서버내에서 돌리면 좋다." 라고 하신 적이 있다. 
당시에는 그게 무슨 소리인지 이해할 수가 없었다. 
 
병원 프로그래밍, 뭐 다른 SI업계도 마찬가지겠지만 환경이 모두 다르기 때문에 같은 유형의 프로그램이더라도 병원마다 환경이 다르고 사람이 다르기 때문에 어쩔 수 없이 소스코드가 달라진다. 그 중 하나가 데이터베이스 쿼리.. 쿼리가 코드안에 있게 되면 즉 하드코딩되어 있다면 당연히 이것때문에 라도 병원 별로 코드가 달라지게 된다. 
 
솔루션 내부에서 사용되는 쿼리는 달라질 것이 없으므로 본 요지에서는 병원과 솔루션 간 인터페이스에 대해서 이야기 해보자. (다른 SI업계도 마찬가지겠지? 어딜가나 이기종간의 시스템 인터페이스가 가장 솔루션화 하기가 어렵다. 솔루션화가 되지 않는다면 고객 수가 늘어날 때마다 관리포인트가 많아지고 내부유지보수 비용이 늘어난다.)
 
인터페이스 라고하면 상호간 Select(1)해서 로컬 Select(2)한 후, Insert(3) or Update(4)이다.
많아봐야 쿼리는 6개 ~ 8개
 
방안1. 하나의 트랜잭션을 프로그램에서 돌리고 이 쿼리를 밖으로 뺀다. (INI, XML 등의 파일형태로)
  장점: 젤 편하다. 
  단점: 한계가 있다. Select 컬럼개수가 달라질 경우? T_T
 
방안2. Select할 컬럼을 각각 설정이 가능하도록 하고 Insert/Update할 컬럼과 매핑하는 부분을 모두 설정할 수 있도록 프로그래밍 한다. 
  장점: 한계는 없다. 
  단점: 배보다 배꼽이 더 커진다. 프로그래밍 뿐만 아니라 설정하는 사람도 분명 복잡하다고 느낄 것이다. 
 
방안3. 스토드 프로시저 사용
  장점: 코드가 짧아진다. 같은 DB일 경우 궂이 프로그램으로 돌릴 필요도 없어진다. 
  단점: 병원 DB가 다양하기 때문에 DB별 프로시저를 죄다 만들어야 한다.
코드가 오픈이 된다. (암호화 하면 될지도)
병원에서 DB를 오픈하지 않는 경우 못한다. 가끔 보안상의 이유로 DLL만 주는 경우도 있다. 
 
필자는 방안1을 주먹구구식으로 개발할 때 사용하고 시간이 나면 방안3을 사용한다. 방안2는 비추.. 생각은 했는데 막상 그런 프로그램을 보니 이해하기가 어려웠다.  
 
인피니트에 있을 때 분당제생병원에서 LG CNS가 하는 방식을 보고 깨작깨작 조금 적용하고 1300 패키지 준비하면서 완전히 개발방식을 틀어버렸었다. 방안3을 구현하기 위해서 말이다. 그때 아마 나 때문에 고생한 사람들이 많았을 것 같다. 뭐 프로시저는 내가 어느정도 다 짜긴 했지만... 
그 결과물은 내 인피 마지막 프로젝트 였던 아주대병원이었다. 그때 예상대로 유지보수도 맺지 않고 프로시저들 수정도 거의 하지 않은채 지금까지 잘 돌고 있는 것 같다. 
 
코드에서는 프로시저만 호출하면 되기 때문에 엄청나게 가벼워지고 단순해졌다. 프로시저를 이해하지 못하고 배우기를 꺼려한다면 물론 이 방법을 원치 않는 사람도 많을 것이다. 

알림터

엔조이데브 쥔장의 알림터입니다.

List of Articles
번호 분류 제목 날짜 최근 수정일 조회 수
21 쥔장소식 Visual Basic 6.0 13년차 경력자의 노하우 2014.12.11 2016.07.19 5450
20 쥔장소식 2012-01-29 스팀게임 보유목록 file 2012.02.01 2018.07.03 3409
19 쥔장소식 대구 출장갑니다. 2012.01.26 2013.04.18 3188
18 쥔장소식 깔쌈한 레이아웃에 치명적 단점이... 2012.01.27 2013.04.18 3166
17 쥔장소식 석사논문 학교도서관 제출 완료!! 2012.06.29 2013.04.18 2849
16 쥔장소식 MVVM 패턴에 대한 잔상 2013.04.29 2013.04.29 2836
15 쥔장소식 6월 25일 의미부여.. file 2012.06.07 2018.07.03 2827
14 쥔장소식 악.. VS2012... file 2013.04.02 2018.07.03 2774
13 쥔장소식 살떨리는 마소메일을 받다. (Azure관련) file 2013.07.01 2013.07.01 2563
12 쥔장소식 우울한 날 ~ 구글에서 내이름을 검색하다 발견 2013.05.03 2013.05.03 2510
11 쥔장소식 까면 깔수록 어려워지는 양파같은 웹 프로그래밍 2013.04.23 2013.04.23 2461
10 쥔장소식 아 드뎌 실마리가........ 2013.04.24 2013.04.24 2436
9 쥔장소식 로컬로는 잘된다. + 애저배포 및 바인딩완료 2013.04.25 2013.04.25 2393
8 쥔장소식 이것저것 취미생활이 변경되네.. 2013.08.12 2013.08.12 2319
7 쥔장소식 우울한 날 ~ 여수로 달리다. file 2013.05.28 2018.07.03 2280
6 쥔장소식 새로운 프로젝트 진행 중 2014.04.18 2016.07.19 1412
5 쥔장소식 VB와 C#의 차이 file 2014.12.15 2016.07.19 1394
» 쥔장소식 프로그램 코드 < 데이터베이스, 당신은? 2014.06.08 2016.07.19 661
3 쥔장소식 쥔장이 생각하는 객체지향(OOP) 개발방법론 2015.02.02 2016.07.19 280
2 쥔장소식 근 2년만에 글을 쓰네요. 2020.06.08 2020.06.08 150
Board Pagination Prev 1 2 Next
/ 2