2019/12 5

Greenplum - Backup and Recovery

- Backup and Recovery MPP 특성에 맞게, Backup도 Master들과 Segment들 각각 해주어야 한다. GP V5 이상부터는 gpbackup과 gprestore를 권장한다. gpbackup을 하게 되면 Master에 있는 각 데이터 Segment들의 catalog 정보를 backup하고, 이후 Segment들의 데이터가 backup된다. Master는 $MASTER_DATA_DIRECTORY/db_dumps/YYYYMMDD/ 폴더에, Segment는 /data#/primary/gpseg##/db_dumps/YYYYMMDD/ 폴더에 backup 파일들이 생기게 된다. gpdbrestore후에 통계정보를 업데이트하기 위해 Analyze를 실행하는 것을 권장한다. PostgreSQL에..

Greenplum 2019.12.13

Greenplum - Data manipulations

- Data manipulations INSERT, UPDATE 등 테이블의 데이터를 조작하는 것은 일반적인 DBMS와 유사하다. 다만 GP v4에만 분산키와 파티션키가 업데이트 되지 않는 제한이 있다. GP의 transaction은 BEGIN (혹은 START)로 시작되고, END (혹은 COMMIT)으로 commit된다. psql에서 transaction이 Autocommit되기 때문에, 유효한 구문은 자동적으로 commit된다. 기본적인 OLTP DBMS는 테이블을 실수로 DROP하게 되면 어딘가 DROP되기 전으로 돌릴 수 있는 기능이 있는데, OLAP DBMS인 GP는 그런 기능이 없다고 한다. 예전에 프로젝트에서 실수로 날라간 데이터들을 동료가 살린 기억이 있는데, 어떻게 한 것일까? 조금 더..

Greenplum 2019.12.13

Greenplum - Loading Data

- Loading Data Loading Options. INSERT / COPY (psql) / EXTERNAL TABLES & gpfdist protocol(GPDB) / GPLOAD (GPDB) 가 있다. INSERT와 COPY는 Master를 통해서 데이터들을 넣어준다. gpfdist / gpload는 ETL Host에서 넣을 파일을 웹서버스 형태로 띄우고, 각 Segment에서 필요한 데이터들을 ETL Host에 접속해서 해당 Segment에 분산된 데이터를 가지고 간다. COPY는 초당 십만건 정도, GPLOAD는 초당 몇십만건 정도의 데이터가 들어간다. COPY. COPY를 활용해서 데이터를 테이블에 넣으려면 COPY 넣을테이블이름 FROM '파일위치'; COPY를 활용해서 테이블의 데이터를..

Greenplum 2019.12.13

Greenplum - DDL

- DDL GP에선 CHAR 대신 TEXT나 VARCHAR를 써야 한다. INT / SMALLINT로 충분한 경우 BIGINT를 쓰지 않아야 한다. JOIN에 활용되는 컬럼들의 데이터타입은 같게 해야 한다. JOIN 되는 데이터타입이 다르면 형변환이 발생하는데 그때 INDEX, PARTITION 등이 타지 않을 수 있고 JOIN 자체가 안될 수 있다. CREATEA TABLE: Storage model Row oriented, Column oriented 방식으로 테이블을 저장할 수 있다. Row oriented는 Row 별로, Column은 Column 별로 파일을 저장한다. Row는 WHERE절에 Filtering하게 될 때 장점이 있지만 컬럼 별로 SELECT을 하게 되면 Column 방식에 비해 ..

Greenplum 2019.12.13

Greenplum - Fundamental Concepts

GP DB 관련 좋은 참고용 Blog: http://gpdbkr.blogspot.com/ - Greenplum Fundamental Concepts Greeplum Architecture 세상에 흐르는 데이터 양이 많아 지고 있다. 따라서 이를 처리할 수 있는 데이터베이스 서버의 성능을 올리는 것이 필요한데, GP에선 성능을 올리는 기본적인 방식인 Scale up(서버의 CPU 성능을 올리는 것과 같은)이 있지만 Scale out(병렬 Segment를 늘리는 것과 같은)도 있다. GP는 Master, Standby, 그리고 여러 Segment들로 구성된 구조다. Segment들을 적극적으로 활용하기 위해서, 데이터들이 적절하게 분배되도록 하는 것이 중요하다. Master는 시스템의 진입점이다. 모든 사용..

Greenplum 2019.12.10