본문 바로가기

프로N잡러14

[GPDB] 8. Functions Internal Function now() vs timeofday() - now, current_timestamp : 1개의 transaction 내에서는 값 동일 - timeofday, clock_timestamp : 1개의 transaction 내에서 값 다름 (참고) 기본 함수들 SQL Functions CREATE FUNCTION public.clean_customer () RETURNS void AS 'DELETE FROM dimensions.customer WHERE state = ''NA''; ' LANGUAGE SQL; SELECT public.clean_customer (); clean_customer ----------- (1 row) Retuning Set CREATE FUNCTION.. 2024. 1. 9.
[GPDB] 7. Data Manipulation Language(DML) Managing data Updating data 일반적인 db update 문과 유사 ORCA 를 사용하는 경우에만 distribution key 컬럼 update가 가능함. - 기존에는 distribution key & partition key로 지정된 컬럼 데이터 update 불가. - (참고) gpdb 내부에서 사용하는 2가지 optimizer : legacy(postgres) + ORCA(gp customizing) update 내부 동작 : delete(삭제 마킹) + insert(새로운 row 추가) # postgres 내부 동작과 동일 Removing data Delete - 내부적으로는 실제 삭제x, 삭제됐다고 마킹 → 이후 vacuum 작업 시 재사용 . vacuum (기본 옵션) : .. 2024. 1. 9.
[GPDB] 6. Loading Data INSERT (병렬처리x, master 거침) - 일반적인 db 에서 지원되는 insert 문 - 적은 수의 row를 진행할 경우 사용 - INSERT INTO SELECT FROM COPY (병렬처리x, master 거침) - postgreSQL 명령어로, 명령어 1번으로 모든 row 를 load 함. - file 이나 standard input에서 table로 데이터를 넣을 때 사용 더보기 COPY 모든 데이터는 Master 를 통해 load 됨 Master 를 거쳐 처리되기 때문에 한꺼번에 대량의 데이터를 다루기엔 어려울 수 있음 (병렬처리x) COPY mytable FROM '/data/myfile.csv ’ WITH CSV HEADER; COPY 'select * from mytable TO '.. 2024. 1. 9.
[SQLD] 자격증 정보 & 기출문제 웹사이트 SQLD 란? SQL 개발자(SQLD, SQL Developer)가 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는지를 평가하기 위한 자격증 https://www.dataq.or.kr/www/sub/a_04.do 데이터자격시험 SQL(Structured Query Language)은 데이터베이스를 직접적으로 액세스할 수 있는 언어로, 데이터를 정의하고(Data Definition), 조작하며(Data Manipulation), 조작한 결과를 적용하거나 취소할 수 있고(Transaction Con www.dataq.or.kr 자격증 시험 주요 내용 및 배점 - 총 2과목으로 구성되어.. 2024. 1. 9.
[SQLP] 기출문제 웹사이트 SQLP 를 준비할 때 유용한 기출문제 사이트입니다. 이동 시간에 핸드폰으로 간단히 풀어볼 수 있으니 참고해서 틈날 때마다 보시고 합격하시길 :-) https://quizeey.com/sqlp-professional SQLP - 국가공인 SQL전문가 기출문제 - Quizeey SQLP - 국가공인 SQL전문가 기출문제 CBT 문제은행 제공 수많은 SQLP - 국가공인 SQL전문가 기출문제가 준비되어 있습니다. quizeey.com 2024. 1. 9.
[GPDB] 5. Storage Optimization Tablespace Tablespaces sit atop filespaces interacting with the underlying filesystem A filespace can support multiple tablespaces default tablespace : pg_default, pg_global 주요 명령어 Partitioning 논리적으로 큰 테이블을 작은 부분으로 나누는 것으로, query performance 향상에 도움이 됨. - 전체 테이블에서 distribution key 를 통해 segment 별 접근양을 줄이고, segment 내에서 파티션을 통해 더 축소 (아래 그림 참고) 주요 쿼리 조건으로 빈번하게 사용되는 키를 partition key 로 사용하는 것이 좋음. - 분산.. 2024. 1. 9.
[GPDB] 4-4. Data Definition Language(DDL) : Indexes, View, Sequence Indexes GP 의 경우 DW 환경(비정규화 모델)으로 인덱스를 최소화 하는 방향으로 사용 B-tree, Bitmap Index, Partial Index 등 종류 있음 ​ View 특정 쿼리들을 저장하여 데이터를 볼 수 있도록 만들어둔 object 복잡한 쿼리를 숨겨 간단한 쿼리로 조회 가능하며, 데이터 업데이트는 불가 (각 테이블에 접근하여 업데이트 가능) CREATE VIEW TOPTEN AS SELECT NAME, RANK, GENDER, YEAR FROM NAMES, RANK WHERE RANK < '11' AND NAMES.ID = RANK.ID SELECT * FROM TOPTEN ORDER BY YEAR, RANK; ​ Sequence 중복되지 않도록 값을 생성하는 object 좀더 빠.. 2024. 1. 9.
[GPDB] 4-3. Data Definition Language(DDL) : Data Types Data Types postgresql 기반의 data type 모두 사용 최소한의 공간을 차지하도록 컬럼 데이터 타입 지정 join 에 사용하는 컬럼의 경우 동일한 data type + 동일 자릿수 사용 권장 - table1(col1 int, col2 int), table2(col1 char, col2 char) 인 경우 > 값이 같아보여도 컬럼 타입이 다르면 local join 불가. - table1(col1 char(10)), table(col char(20)) 인 경우 > 값이 같아보여도 컬럼 길이가 다르면 local join 불가. (각각의 컬럼 내 공백을 포함하여 hash 값을 만들기 때문에 다른 값으로 인식) - table1(col1 bigint), table(col smallint) 인 경.. 2024. 1. 9.
[GPDB] 4-2.Data Definition Language(DDL) : Distribution Distribution GPDB 모든 테이블은 Distribution key 에 의해 분산되어 sdw 에 저장됨. 1개~여러개 컬럼이 Distribution key 로서 사용됨. high cardinality 를 가져야 함. 분포(skew 가 없도록)와, local join 을 고려하여 설계 필요. PK 나 UK 가 있다면, 분산키는 반드시 그 중에 하나의 컬럼이라도 포함해야 함. (중요!) 분산 방식 ① Distributed by (column) - hash distribution - 명시되지 않았을 경우, 해당 테이블의 PK(PK 존재할 경우)나 1번째 컬럼(PK 존재하지 않을 경우)으로 사용됨 - 자주 join되는 테이블은 select 하였을 때 같은 segment 내에서 처리(local join).. 2024. 1. 9.
[GPDB] 4-1. Data Definition Language(DDL) : Table Table 1) Column & Data Type 적절한 data type 지정 - text, varchar > char - int, smallint > bigint table join시 동일한 data type 사용 constraint - check, not null, unique, primary key, foreign key (외래키는 허용되나 강제되지 않음, 없다고 봐도 됨) ​ 2) Storage 방식 Heap - Row 기반 적재 방식 - 빈번한 update 가 이뤄지는 경우 사용 (가공 처리 등) - row lock 지원 (GPv6 부터 지원) Append-Optimized - Row 기반, Column 기반, 압축 지원 방식(옵션에 따라 70~95%) - 조회 중심의 테이블인 경우 사용 - .. 2024. 1. 9.
[GPDB] 3. Role & Access (인증, 권한 관리) Role login 속성을 넣으면 user, login 속성이 없으면 group OS user, group 과 연관 없음. default superuser role : gpadmin role에는 db, schema, object 에 대한 access 권한이 주어짐 [종류] ① user role - login 가능한 일반 유저 - default 속성 : NOSUPERUSER, NOCREATEDB, NOCREATEROLE, INHERIT, NOLOGIN --create role CREATE ROLE ~ WITH LOGIN RESOURCE GROUP adhoc; --alter role ALTER ROLE ~ WITH CREATEDB; ② superuser - gpadmin 과 동일한 admin 정도의 권한 -.. 2024. 1. 9.
[GPDB] 2. DB Instance (DB, Schema) 1) Database Greenplum instance 안에 여러 개의 DB 생성 가능 DB 간 데이터 share 불가 자동으로 생성되는 default DB - template0 : 내부적으로 template0에서 1로 복사되서 생성됨. (건드릴 일 없음) - template1 : 모든 db가 생성될 때 template1 을 복사하여 생성됨. (여러 db를 생성할 경우 활용) - postgres --create db CREATE DATABASE ~ $ createdb --drop db DROP DATABASE ~ $ dropdb --alter db (rename, assign a new owner, configuration change..) ALTER DATABASE ~ 2) Schema table/vi.. 2024. 1. 9.