건수 많은 데이터 정합성 체크및 저장
jackalredi 수험생

답변 채택시 : 100코아

답변 1 추천 0 조회 4744 2014.04.11

안녕하세요


그동안 몇건 안돼는 DB건수들만 처리하다가 이번에 꽤 많은 양의 데이터를 처리하는 일을 맡게 되었는데요

각각의 프로세스를 나눠서 처리 하는게 나은지 궁금해서 질문 몇가지 드려봅니다.


일단 테이블이 A, B, C, D 이렇게 4가지가 있고 마스터 A와 B가 1:n 으로 엮여 있고 C 와 D는 B와 1:n 관계로 각각 묶여 있을때

총 4개의 테이블들에 대한 필드의 정합성 체크를 하면서 정합성 결과에 대한 UPDATE가 건별로 일어 납니다.

이때 UPDATE는 테이블 C에 한해서만 이뤄지며 정합성은 전체 테이블의 모든 항목에 대해 이뤄집니다.

결론 적으로 A,B,C,D 테이블의 모든 항목의 정합성 체크를 C테이블에 특정 항목에 UPDATE가 일어나는데요

이 업데이트 결과 즉 정합성 체크 결과에 따라서 다른 테이블로 INSERT가 발생합니다.


간단하게 요약하면 A, B, C, D 테이블은 템프테이블이고 이 테이블들에 들어 있는 데이터에 대해 정합성 체크가 이뤄 지며

정합성 체크 결과에 따라 본 테이블에 INSERT가 발생합니다.


제일 많이 일어날땐 50만건으로 봤을때 정합성 체크및 UPDATE, INSERT 처리를 프로시져 및 함수에서 한번에 전부 하는게 나을지아니면

정합성 체크 및 UPDATE와 본 테이블에 INSERT하는 프로세스를 나누는게 나은지....궁금합니다.

그냥 단순 CRUD만 있다면야 고민이 안돼겠는데 정합성 체크를 해야 한다는 점에서 망설여 지네요..ㅠㅠ

그렇다고 해서 정합성 체크를 할때 복잡한 로직이 섞여 있고 그런건 아닙니다.

다른 테이블과 조인을 해서 값이 어느정도 일치 하는지만 보는건데요


고수님들의 많은 관심 부탁드리겠습니다.

댓글 (0)
목록 답변등록
건수 많은 데이터 정합성 체크및 저장
jhmyung 2014.04.25

질문의 내용이 명확하지는 않습니다 만, 

요약해 보면,   A,B,C,D 테이블을 잘 조인하여 최종적인 결과 집합 ( Update 또는 Insert할 집합)을 만들고 이를 

최종 타겟 집합과 비교하여 Update 또는 Insert하는 요구사항인 것 같습니다. 


이러한 상황에서는 두개의 작업을 별개로 하는 것이 두개의 작업을 하나로 하는 것보다는 항상 불리합니다. 

즉, 하나의 작업으로 수행하는 것이 유리하다는 말입니다.   이것을 위해서 MERGE 문을 활용하실 수 있습니다. 

물론 4개의 테이블을 조인하는 데에 비효율이 없어야 합니다. 그리고 최종 타겟 테이블과의 조인 또한 비효율이 없어야 하구요.. 

MERGE 문에 대한 자세한 내용은 DATOR에서 검색해 보시면 많은 글 들이 있습니다. 


댓글 (0)