관리 메뉴

nalaolla

AWS Redshift 개발 가이드-java (대용량 데이터 조회) 본문

프로젝트 개발정보

AWS Redshift 개발 가이드-java (대용량 데이터 조회)

날아올라↗↗ 2017. 12. 4. 22:50
728x90

AWS 서비스중  대용량 데이터를 쉽게 조회하기 위한 데이터 웨어하우스인 Redshift를 제공한다 

 Redshift 이해 : https://www.slideshare.net/awskorea/amazon-redshift-deep-dive

 

Redshift client용 설치 (DBVisualizer)

 02.DbVisualizer SQL Tool 사용 가이드

참고 : http://cloud.hosting.kr/amazon-redshift%EB%A5%BC-gettingstarted%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%B4%EB%B3%B4%EA%B8%B0/


Java에서 Redshift 연동하기 위한 방법은 아래와 같다 


Redshift 연동 


java 에서는 기존 mybatis framework를 활용하여 조회 가능하다 

필요한  라이브러리를  얻기 위해서 아래와 같이 pom.xml에 등록한다 

pom.xml

<!-- IAM 계정 없이 접속할수 있는 아래 최신 버전을 등록한다 -->
<dependency>
    <groupId>com.amazon.redshift</groupId>
    <artifactId>redshift-jdbc42-no-awssdk</artifactId>
    <version>1.2.10.1009</version>
</dependency>
 
 
 
 
<!-- repositories  안에 다음 repository를 등록한다 -->
<repository>
    <id>redshift</id>
    <url>http://redshift-maven-repository.s3-website-us-east-1.amazonaws.com/release</url>
</repository>


application.yml에 다음과 같이 접속 정보를 등록한다 ( port :  5439 를 사용하며 local에서 접속 가능함)


spring:
    datasource:
        driverClassName: com.amazon.redshift.jdbc42.Driver
        url: jdbc:redshift://b2olap.ctpcrhfknfj5.ap-northeast-1.redshift.amazonaws.com:5439/DB스키마명
        username: xxxxxxx  
        password: xxxxx



mybatis 설정 ( 기존 설정과 동일)


*Mapper.xml 에 query를 작성한다 

<mapper namespace="com.board.dao.RedshiftDAO">
    <select id="selectSystemScreenUseLog" resultType="com.board.model.SystemScreenUseLog">
        SELECT csco_id,
            sys_dvs_cd,
            user_id,
            menu_no,
            use_dttm,
            screen_no,
            rgstr_id,
            rgst_dttm,
            modr_id,
            modi_dttm
        FROM ltcmstdev.st_screen_use_log
        WHERE user_id = #{userId}
    </select>
 
</mapper>

Redshift는 PostgreSQL 쿼리를 지원하기 때문에  Oracle SQL문법이 거의 동일하다 

Redshift SQL 가이드 : http://docs.aws.amazon.com/redshift/latest/dg/c_SQL_commands.html

지원되지 않는 PostgreSQL 함수:  http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c_unsupported-postgresql-functions.html


DAO 작성 

@Mapper
@Repository
public interface RedshiftDAO { 
    public List<SystemScreenUseLog> selectSystemScreenUseLog(String userId) throws Exception; 
 
}


이하 mybatis  개발방법은 동일하다  

728x90