2. DBMS이야기/01. PostgreSQL 89

timescaledb 확장 모듈

PostgreSQL로 시계열 자료 다루기 전통적인 방법 일정 시간 간격으로 입력되는 원천 자료를 저장하는 테이블을 만들고, 그 자료량을 감안한 적당 크기가 되도록 하위 파티션 테이블을 만들고, 시간 간격별(1시간, 1일, 1주일 ...) 부분 집계 테이블을 만들고, 그 간격 주기로 집계작업을 위한 배치 작업을 만들고, 일정 기간이 지나면 오래된 자료가 지워지도록 하위 파티션 테이블을 삭제 배치 작업도 만들고, 원천 자료가 담기는 파티션 테이블의 하위 테이블들이 자동으로 추가 되도록 하는 트리거나 배치 작업을 만들어야 했습니다. 참 성가신 방법이었습니다. 시계열 데이터베이스 요즘 만들어지는 데이터베이스를 보면, 특히 '이 데이터베이스는 시계열 자료 처리에 특화 되어있다'이런 기능을 자랑하는 데이터베이스를 ..

pglogical 확장 모듈 소개

1. PostgreSQL 논리적 디코딩 소개http://postgresql.kr/docs/current/logicaldecoding.html 9.4 버전에서 새로 등장한 개념으로,트랜잭션 로그를 출력 플러그인을 이용해서 사용자 정의 형태로 변환하는 기능을 말합니다. 기존 복제가 트랜잭션 처리에서 먼저 기록한(write-ahead) 내용을 다른 서버로 그대로 보내서 그것을 재실행하는 방식의 스트리밍 복제였다면, 논리적 디코딩을 이용하면 논리적 개념으로 데이터베이스 복제가 가능해 집니다. 이 말은 대상 데이터베이스가 똑 같은 OS에, 똑 같은 버전의 PostgreSQL 서버여야 할 필요가 없으며, 심지어 MySQL이나 기타 다른 데이터베이스, 더 나아가 굳이 데이터베이스가 아니어도 복제가 가능하다는 것을 의..

PGCon 2016 참관기

0. PostgreSQL 20주년 올해로 PostgreSQL이 세상에 나온 지 스물 돌이 되었습니다.마이클 스턴브래커 어르신의 postgres 프로젝트까지 거슬러가면 이보다 훨씬 더 오래되었겠지만, PostgreSQL이라는 이름이 등장한 지는 올해로 20년이 되었네요. 이 기념으로 PostgreSQL 커뮤니티에서는 위와 같이 포스터도 만들면서 자축하고 있습니다. 또한 올 해로 열 번째 열린 PostgreSQL 개발자 사용자 회의가 캐나다 오타와에서 열렸고, 제가 다니고 있는 회사 지원으로 이번에 같이 일하고 있는 동료와 함께 저도 참석하게 되었습니다. 이 글은 올 해 열린 PGCon 행사 참관 후기입니다. 1. PGCon 소개PGCon (http://pgcon.org) 행사는 PostgreSQL 개발자,..

pgcrypto 확장 모듈을 이용한 oracle DBMS_CRYPTO 패키지 이용하는 함수들 마이그레이션

1. pgcrypto 확장 모듈 설치데이터베이스 관리자 권한으로 해당 데이터베이스에 접속해서, CREATE EXTENSION pgcrypto쿼리문을 실행 기본적으로 해당 확장 모듈에 포함된 함수들은 public 스키마에 만들어짐 2. 기본 사용법 postgres=# \dx+ pgcrypto "pgcrypto" 확장 기능 안에 포함된 객체들 객체 설명 ------------------------------------------------------- function armor(bytea) function armor(bytea,text[],text[]) function crypt(text,text) function dearmor(text) function decrypt(bytea,bytea,text) fun..

pgbench를 이용한 데이터베이스 성능 검사

ᇂ1. 데이터베이스 성능이란일반적으로 tps 초당 트랜잭션 수로 이야기함문제는 트랜잭션의 정의가 모호함 2. PostgreSQL & pgbench pgbench 는 기본적으로 tpc-b type 트랜잭션을 제공함tpc-b type은 클라이언트 - 서버 환경의 구시대 유물이 되었음 3. 아직도 pgbench 가 중요한 이유그럼에도 불구하고, 데이터베이스 서버가 운영되고 있는 호스트의 하드웨어 사양과 postgresql.conf 설정을 최적의 상태로 만들어 갈 지표를 찾는데, 이주 편한 도구 임 4. 작업 방법최대 288 클라이언트까지 테스트할 계획임으로 pgbench -i -s 500 으로 자료를 초기화함 pgbench -T 600 -c 클라이언트수 -j 쓰레드수형태로 클라이언트수와 쓰레드수를 동일하게 해..

postgresql 처리 순서도

Postgresql의 처리순서도에 대해 알아보도록 하겠습니다. SQL을 입력하고 나면, Parser 라는 곳에서 postgresql에 맞는 언어와 문법인지 확인 (참조하는 테이블의 권한 여부 및 오타, 문법 등을 확인) 문법 확인 후, 특별한 문제가 없으면 SQL을 어떻게 실행지 계획을 세우게 됨 계획 세우는 곳이 Planner 이다. (사전에 정리된 통계정보를 가지고 어떻게 실행하는 것이 최고의 실행인지를 계획하는 곳) 일반 개발자들이 무시하는 곳이기도 하지만, 일반 개발자는 Parser만 되면 OK 라고 한다. 계획을 세우고 나면, 데이터 저장소로 부터 데이터를 가지고 옴 물론 메모리에 있는 경우에는 메모리로 부터 가지고 오게 된다. 메모리의 예를 들어보면 똑같은 SQL을 처음 시작할 때와 2번째 실..

훨씬 간편해진 Postgres 백업과 복구

훨씬 간편해진 Postgres 백업과 복구 (Postgres Backup and Recovery Just Got a Whole Lot Easier) 2014년 10월 20일, Jason Davis (October 20th, 2014 by Jason Davis) Postgres 는 최근 몇 년간 새로운 툴을 발전시켜왔다. 다행스럽게도, 만약 이 글을 읽는 당신이 Postgres 로 업무를 하고 있는 DBA나 시스템 관리자라면 당신의 업무환경은 훨씬 간편해질 것이다. EnterpriseDB (EDB) 는 최근 몇 주간 일본의 K.K Ashisuto 와 같은 고객들과 파트너사와 작업하며 우리의 새로운 EDB 백업과 복구 툴 (BART) 에 대해 많은 비용을 써왔고, 우리가 이번 주에 백업복구 툴의 첫번째 버전..

PostgreSQL PPAS Streaming Replication

PostgreSQL Streaming Replication 설명 : 스트리밍 복제 (Streaming Replication)은 PostgreSQL 9.0 이상에서 사용 가능한 복제 기능. Insert/Update/Delete, Create/Drop 가능한 1 개의 Master DB에 SELECT만 할 수 있는 여러 Standby DB에 복제하는 것 Standby DB의 변경 결과가 반영되기까지 약간의 지연이 있지만 비교적 지연은 적게, 마스터 DB에 영향 작은 복제 방식. 목적 : 1. 많은 SELECT Query의 Server 간 분산 2. Master DB 이상시 신속한 Fail over 3. Master DB의 Disk 장애에 대비한 실시간 Backup 9.0 에 비해 강화된 9.1의 기능 1. 동..

PostgreSQL PPAS 특장점 소개

PPAS 특장점 DynaTune PPAS에 대해 낯설거나 익숙하지 않은 사용자들을 위해서 Configuration parameter 값을 DB에 맞게 자동으로 조절해 주는 기능 입니다. 사용자가 두 가지의 설정 값만 수정을 하면, PPAS가 그 것을 토대로 하여 알고리즘을 생성해 Postgres의 parameter를 설정 해 줍니다 Query Optimizer Hints SQL Optimizer가 선택한 실행계획에 응용프로그램 개발자가 영향력을 행사할 수 있도록 허용합니다. PostgreSQL이 실행계획을 세웠을 때는 특정 쿼리가 맨 처음 실행되었던 시기라서 차후에 실행되는 경우의 대부분은 최적이 아닐 수 있습니다. 따라서, 빈번하게 작업이 발생하여 테이블 크기가 커질 경우에 Query Optimizer..

[PostgreSQL ADMIN] 정기적인 Vacuum 작업2

1.4. 실자료 지도 갱신 vacuum 작업은 실자료 지도를 갱신하는 작업을 한다. 실자료 지도(visibility map, vm)란 현재 작업 중인 트랜잭션들(또는 그 자료들이 변경 되기 전까지 이용할 미래의 모든 트랜잭션들)이 실제로 사용할 자료들에 대한 각 테이블별 지도다. 이 작업은 두가지 목적이 있다. 하나는 vacuum 작업은 이미 지도 정리 작업이 끝난 것에 대해서는 더 이상 그 작업을 하지 않는다는 것이다. 다른 하나는, 이 지도 정보는 인덱스 전용 쿼리들 - 더 이상 실제 테이블 자료를 검사 하지 않는 쿼리들 - 에 대해서 빠른 응답을 제공하는데 사용된다. PostgreSQL의 인덱스에는 실자료들에 대해서만 따로 모아서 그 정보를 제공하지 않는다. 즉, 어떤 자료를 해당 세션에게 보여 주..