Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

New Features of CMT 2013.08_kr


1. 데이터 변환시 사용자 정의 클래스 지원

DB에서 지원하지 않는 함수를 적용하거나 별도의 로직을 삽입하여 컬럼별로 데이터를 변경하면서 마이그레이션할 수 있습니다. 사용자 정의 자바 클래스를 아래와 같이 생성합니다. 주의할 점은 public Object convert(Map<String, Object> recordMap, String columnName) 메소드가 꼭 있어야 합니다.

아래 예에서는 com.cubrid.SHA256 클래스에 convert() 메소드를 정의를 했습니다.

 

package com.cubrid;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

public class SHA256 {
    public Object convert(Map<String, Object> recordMap, String columName) {
        String raw = (String) recordMap.get(columName);
        return md5(raw);
    }

    public static String md5(String text) {
        try {
            if (text == null) {
                return "";
            }

            byte[] digest = MessageDigest.getInstance("SHA-256").digest(text.getBytes());
            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < digest.length; i++) {
                sb.append(Integer.toString((digesti & 0xf0) >> 4, 16));
                sb.append(Integer.toString(digesti & 0x0f, 16));
            }

            return sb.toString();
        } catch (NoSuchAlgorithmException nsae) {
            return null;
        }
    }
}

Eclipse의 Export > JAR file에서 정의된 클래스를 jar로 패키징 합니다. 만약, 작성한 클래스가 3rd-party 라이브러리를 사용해야한다면 이들 라이브러리에 포함된 필요한 클래스도 모두 추출해서 포함되어야 하므로 Export > Runnable JAR file를 사용합니다.

3rd-party 라이브러리 사용 예:

main() 메소드를 추가합니다. Eclipse에서 실행 스크립트를 자동 생성하기 위한 용도이며 내용은 비어 있어도 됩니다. 예제에서는 테스트 코드를 넣었습니다. com.cubrid.commonlib.CryptoUtil 클래스를 external 라이브러리에서 import 합니다.

 

package com.cubrid;

import java.util.HashMap;
import java.util.Map;

import com.cubrid.commonlib.CryptoUtil;

public class SHA256 {
    public Object convert(Map<String, Object> recordMap, String columName)
            throws Exception {
        String raw = (String) recordMap.get(columName);
        return CryptoUtil.sha256(raw);
    }

    public static void main(String args[]) throws Exception {
        Map<String, Object> rmap = new HashMap<String, Object>();
        rmap.put("col", "column value");
        String res = (String) new SHA256().convert(rmap, "col");
        System.out.println(res);
    }
}

 

main()을 넣었으므로 Run As > Java Application로 실행해서 Runnable JAR file을 실행할 환경을 구성합니다.

위의 과정으로 SHA256 - cmt-udf-class라는 것이 만들어졌는데, Export > Runnable JAR File 메뉴로 다음처럼 export 합니다.

다음은 위와 같은 절차로 Export된 jar 파일입니다.

 

4단계 객체 맵핑에서 컬럼을 선택해서 "컬럼 데이터 변환 클래스" 항목에 "jar파일명:패키지명.클래스명" 형태로 입력합니다. 아래에서는 sample.jar:com.cubrid.SHA256 으로 입력했습니다.

 

 

2. 실패한 데이터만 다시 마이그레이션

대상으로 온라인 CUBRID 데이터베이스로 선택하고 실패한 데이터가 있을 경우 "마이그레이션 재실행" 버튼을 클릭하면 실패한 데이터만 마이그레이션 할 수 있는 옵션이 출력됩니다. 마이그레이션 툴킷 내부 로그에 저장되어 있는 실패한 데이터를 이용해서 다시 입력을 시도하게 됩니다.

 

 

3. 사소한 UI 개선

3-1. 대상 출력이 파일(csv, sql, CUBRID dump 등)이면 이들 파일이 출력되는 위치를 아래와 같이 보여주면서 클릭시 해당 경로를 바로 열어줍니다.

3-2. 마이그레이션명(실행일시) 빨리 찾기 및 정렬, 마이그레이션 상태 출력을 지원합니다.

comments powered by Disqus
Page info
viewed 1396 times
translations en
Author
posted last year by
newpcraft
Contributors
updated last year by
View revisions
tagged
Share this article