Database Data convert
아고..이런 프로그램을 올려도 될랑가요..
혹시 이런 기능을 제공해 주는 툴이 있나요? ^^
ㅎㅎ... Oracle이나 같은 경우는 PL-SQL등을 써서 사용할 수 있는데
이 기종의 데이터베이스 같은 경우
즉 아래와 같이 데이터베이스의 데이터가 전이되어져야 할 경우
Informix<->Oracle
Oracle<-->MySQL
Oracle<-->Sybase
Sybase<-->MS-SQL
변환작업이 어려웠슴다.
문제는 현재 그러한 일을 했어야 했는데 담당자의 요청이 있어
담당자에게 하루반나절이면 어떤 데이터베이스 컨버젼도 가능한
프로그램을 만들어주겠노라고 헛소리하고 월요일 화요일까지 해서 만든
허접쓰 프로그램임다.(업무때문에 화요일이 기한이었슴다)
시나리오는 이렇슴다.
1. 데이터베이스는 source와 target으로 나뉜다.
2. 환경설정만으로 어떠한 데이터베이스의 영역들을 다른 환경의
데이터베이스의 값으로 이동시킨다.
3. 환경설정에는 xml을 사용한다.
4. 배치모듈로 1000만건정도를 옮기는 데 반드시 30분이내로 완료하도록 한다.
(1000만건 30분이내면 초당 5000TPS이상을 내도록 유지)
가장 간단하게 만들어본 방법이며
우선 데이터베이스 정보, 설정되어질 애트리뷰트들은 소스테이블컬럼 및 데이터형과 매핑되어질 타켓테이블정보와
중간사이에서 매핑되어져야 합니다(CMP의 deploy-descriptor의 기본개념적용)
XML read--> Attribute 에 대한 Source java파일생성-->컴파일-->소스데이터베이스 로드--> 타켓에 addBatch()-->commit
순으로 이루어집니다.
급해서 마구잡이로 만들었습니다.
보구 함 소견이나 말씀해주심이 좋겠슴다..
Prepared세팅부분과 attribute검색 및 TableMapper정보들은
모두 reflection입니다.
요상한 점이 있더라도 너그러이들 이해해주시길..
p.s>패키지로는 아직 묶지 않았습니다..
- 이 프로그램으로 간단한 올려드린 코드는 완전소스는 아닙니다. 스트링형태의 character타입과 date타입이 있는 테이블의 컨버젼이 될수 있도록 작성했습니다.
당근 그 데이터타입들에 대해서는 잘돌아갑니다.
나머지는 숙제로 남겨드릴테니 채우실 수 있는 분들은 채워보십시오.빵꾸뚫어놨슴다.
이 프로그램으로 약 2500만건정도의 데이터를 move했습니다. 완성본은 나중에 javapattern아티클로.. ^^(테이블 컬럼변경은 약 6개 테이블에 지나지 않았음)