본문으로 바로가기

may 17 - 하나 풀면 또 나오고 또 나오고

category 개발/개발 Note 2018.05.17 10:40

may 17 - 하나 풀면 또 나오고 또 나오고

redshift로 데이터 웨어하우스 구축 하는 중인데 정글에서 길을 뚫으면서 가는 느낌이랄까? 나온지 얼마 안된 기술을 쓰는게 개발자로서는 부담이 많이 된다.

특히 데이터 웨어하우스 같은건 만드는데도 그렇게 많지가 않아서 더욱 그러하다. 노하우가 필요한 영역이다.


그래서 얼마 진행을 못해도 기운이 쭉쭉 빠진다.


지금까지 해결한 이슈는 아래와 같다.


1.aws에서 redshift인스턴스 띄우기

가장 쉬움. 그냥 클릭클릭 하면 뜬다. 근데 이거만 쉽다는거 ㅋㅋ


2.table만들기

레드쉬프트는 마땅한 gui툴을 못찾았다. 그래서 sqlworkbeanch라는걸 쓰는데 aws에서 이걸 써보라고 메뉴얼에 나와있다.

이걸로 create문을 써서 테이블을 만들었다. ㅋㅋ 아씨 요즘 시대가 어느땐데 ...ㅜㅜ




3.데이터 넣고 select시간 알아보기

레드시프트 장점이 대용량 그니까 row수가 300만개여도 그 로우들 sum계산 하는데 엄청 빨리 할 수 있어서 쓰는거다. 그래서 진짜 빠른지 알아봐야 한다.

그래서 데이터좀 넣어보려고 dynamodb에 있는 데이터 뽑아다가 파이썬으로 스크립트 짜서 밀어넣음.


여기서 이거 테스트 하는 코딩을 해야 했다는거 ㅋㅋ 테스트단계부터 ㅋㅋ


4.java jpa연결 되는지 확인하기

파이썬이 아니고 본 프로그램은 java를 쓰는데 java로 db액세스를 할 때 그냥 할 수 없잖아! 그냥 Connecion, ResultSet, Retrieve Result Set이런거 select문 그냥 때려박을 수 없자나 문명시대에 살면서. 그래서 jpa를 써야 하는데 이거 연동이 되는지도 봐야함.


다행히 됨. 그런데 누가 이쁘게 만들어놓은건 없고 그나마 git에 redshift jdbc driver사용해서 pom만들어놓은게 있어서 보고 하니까 붙긴 함 ㅋㅋ


5.insert할 때 id만들기

jpa를 쓸라믄 Entity mapping을 해줘야함. 이거는 크게 문제가 안됨. 그런데 insert할라믄 id가 있어야 하는데 redshift이 xx것은 한국에서는 잘 쓰지도 않는 포스트그리(postgre) Sql을 씀.

이건 auto increasement를 만들려면 table을 또 만들어야됨.


hibernate에 @GenerateValue(strategy = IDENTITY) 이런걸로 안됨 ㅋㅋ) AUTO, TABLE등 다른 옵션 다 안됨. 그나마 IDENTITY를 써서 db엔진에 위임 하는게 그나마 다음으로 넘어가는데 .save()를 하면 insert까지는 타는데 return값으로 해당 entity를 return하려고 하면 index가 있는 테이블을 뒤지는 쿼리를 jpa가 실행 하는데 이게 redshift에서는 그 쿼리 안에서 실행하는 function이 index가 저장된 table을 참조함.


아주 그냥 욕이 나옴. 그래서 id는 걍 uuid로 해서 app에서 만들어서 넣는걸로 했음.


어제 하루종일 고민했는데 퇴근하는 길에 생각남. 역시 인간은 퇴근을 해야됨 ㅋㅋ 캬 xx.



end.















댓글을 달아 주세요