본문 바로가기

Programming/Cloud

(9)
[Redshift]테이블 컬럼 정보 조회(컬럼desc, PK, 컬럼 사이즈 등) 안녕하세요. 잇킹 시도르입니다. 프로젝트를 진행하다 보면 문서 작성이나, 원천 시스템 분석을 위해서 테이블 스키마 조회를 자주 하게 됩니다. 이때 테이블 정보를 조회하기 위해서 각 DBMS들의 메타 테이블을 조회하는 쿼리를 자주 사용합니다. 오라클이면 ALL_TAB_COLUMNS과 같은 시스템 테이블이나 VIEW, MYSQL/MariaDB는 information_schema의 테이블을 이용해서 스키마 정보를 조회하기 위한 쿼리를 짜게 되죠. Postgresql을 기반으로 하는 Redshift도 마찬가지로 스키마 메타 데이터를 저장하는 테이블이 있으며, 데이터베이스 개발자 안내서를 확인해보니 시스템 카탈로그 테이블이라고 하네요. docs.aws.amazon.com/ko_kr/redshift/latest/d..
[Redshift]PK를 보장하지 않는 레드시프트 안녕하세요. 잇킹 시도르입니다. Redshift를 활용하면서 몇 가지 기존의 RDB와는 다른 점으로 인해서 문제가 종종 있습니다. 이번에는 제약조건 때문인데요. 바로 PK였습니다. PK(기본키)는 Unique Key + NOT NULL입니다. 당연히 PK를 지정했으니, Redshift 테이블에서도 이를 보장할 거라고 생각했는데요. 단위 테스트를 진행하다 보니, PK를 만족하지는 중복된 Row들을 발견할 수 있었습니다. 또 PK를 잘못 지정했는지 재확인하고 PK컬럼이 중복이 아닌 건가? 하고 또 확인하고 했었는데요. 결론은 Redshift에서 제약조건은 참고용일 뿐 보장하지 않았습니다. 제약조건은 실행 계획의 힌트로 사용되며, PK를 처리를 위해서는 애플리케이션이나 프로시저에서 처리해야 한다는 거였죠. R..
[Redshift][Amazon](500310) Invalid operation : relation already exists; 안녕하세요. 잇킹 시도르입니다. 오늘은 AWS의 Redshift에서 작업을 하다가 발생한 에러를 공유하려고 합니다. 구축 단계에서 개발을 하다 보면 테이블 변경이 잦습니다. 샘플 데이터를 넣었다가 삭제도 하고 테이블 백업도 하면서 개발을 진행하던 중에 테이블을 드롭 후 재생성하고 나서 PK를 지정하려니 다음과 같은 에러가 나더라고요. SQL Error[500310] [42P07] : [Amazon](500310) Invalid operatioin : relation pk명 already exists; 테이블 스크립트를 자동화해서 pk명을 pk_테이블명으로 하고 있어서, 해당 상황을 이해를 못했습니다. PK가 존재한다니.. 원인 파악을 못하고, 테이블을 다시 드롭하고 생성하고 PK 지정을 반복했는데 동일 ..
[AWS]S3 versioning 안녕하세요. 잇킹 시도르입니다. AWS 오브젝트 스토리지인 S3는 버저닝 기능을 제공하고 있습니다. 즉 업로드한 파일의 버전 이력을 관리하고 다시 복원할 수 있는 기능으로 glue 스크립트 관리 등의 목적으로 유용하게 사용할 수 있습니다. 1. S3 버킷 Tab 중에서 Proerties를 선택합니다. 해당 탭에서 Versioning이란 메뉴를 확인할 수 있습니다. 기본 옵션으로 Disabled가 되어있습니다. Versioning을 클릭해주세요. 2. 다음과 같이 메뉴가 바뀌며, Enable versioning을 선택하고 save를 클릭하세요. Versioning 속성이 Enabled로 바뀐 것을 볼 수 있습니다. Versioning 옵션이 Enabled가 되면 이제 해당 버킷은 버전 관리를 할 수 있습니..
[AWS]EC2 생성하기 안녕하세요. 잇킹 시도르입니다. 오늘은 AWS에서 EC2를 생성해보겠습니다. EC2는 AWS에서 제공하는 가상화된 서버입니다. VPC를 생성함으로써 네트워크를 준비했다면, 이제 애플리케이션 설치나 실제 개발할 환경 설치 등을 수행할 서버가 필요하겠죠? 그런 용도로 사용할 서버가 EC2입니다. 클라우드 서버인 EC2는 기존 온프레미스의 서버와 다른 점이 몇 가지 있습니다. 1. 자신의 입맛대로 컴퓨팅 자원을 쉽게 조절해서 생성할 수 있습니다. 삭제 또한 간단합니다. 2. 생성 시간이 짧죠. 버튼 몇 번 누르면 서버 하나가 생성됩니다. 기존에 서버 하나 추가하려면 몇 주가 걸리던 때를 생각하면 정말 편합니다. 3. AMI(Amazon Machine Image)라고 해서 생성한 EC2를 복사해서 이미지를 생성..