2. DBMS이야기 139

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 쓰레드수형태로 클라이언트수와 쓰레드수를 동일하게 해..

1. MongoDB 소개

MongoDB는?MongoDB의 고성능(high performance), 고 가용성(High Availability) 및자동 스케일링을 제공하는 오픈 소스 문서 데이터베이스입니다. Document DatabaseMongoDB에있는 레코드는 필드(Field) 및 값(Value)의 쌍으로 이루어지는 데이터 구조 문서(Document)입니다.MongoDB의 문서는 JSON 객체와 유사하며, 필드의 값은 다른 문서들, 배열(Array)들 및문서들의 배열(Array)을 포함 할 수 있습니다. 문서(Document 방식)를 사용하는 장점은 :- 문서(RDBMS의 Object)는 다수의 프로그래밍 언어로 기본 데이터 타입에 대응합니다.- 문서와 배열은 복잡한 조인이 포함될 필요를 줄일 수 있습니다.- 동적 스키마는 ..

08. CUBRID DB 체크하기

안녕하세요~! 12월의 마지막 주말은 잘 보내셨나요~? 올해의 마지막 세션은 큐브리드 DB 체크에 대해 알아봐요~ 1. DB 일관성 확인하기cubrid checkdb 유틸리티를 사용하면 인덱스와 다른 데이터 구조를 확인하기 위해 데이터와 로그 볼륨의 내부적인 물리적 일치를 확인할 수 있어요. 만일 cubrid checkdb 유틸리티의 실행 결과가 불일치로 나온다면 --repair 옵션으로 자동 수정을 시도해봐야해요 cubrid checkdb [options] database_name [table_name1 table_name2 ...]table_name1 table_name2 에는 일관성을 확인하거나 복구하려는 테이블 이름을 나열할 수 있어요-S, --SA-mode서버 프로세스를 구동하지 않고 데이터베이..

07. CUBRID 복구하기

안녕하세요~벌써 2014년 마지막 달이네요, 추운 날씨에 감기 안 걸리셨죠?이번 화에는 복구에 대해 알아보겠습니다 CUBRID 환경에서 수행된 백업 작업에 의해 생성된 백업 파일, 활성 로그 및 보관 로그를 이용하여 특정 시점의 데이터베이스로 복구하는 작업으로, 진행하려면 cubrid restoredb 유틸리티 또는 CUBRID 매니저를 사용합니다. cubrid restoredb [options] database_name 어떠한 옵션도 지정되지 않은 경우 기본적으로 마지막 커밋 시점까지 데이터베이스가 복구됩니다.만약, 마지막 커밋 시점까지 복구하기 위해 필요한 활성 로그/보관 로그 파일이 없다면 마지막 백업 시점까지만 부분 복구됩니다. 옵션 입력값 설명 기본값 -l 복구레벨 복구 레벨 지정 (0,1,2)..

postgresql 처리 순서도

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

MySQL 5.6 파티션 삭제시 Exchange Partition 기능 활용 방안

MySQL 5.6 파티션 삭제시 Exchange Partition 기능 활용 방안 [출처] 파티션 삭제시 Exchange Partition 기능 활용 방안 (in MySQL 5.6)|작성자 돌고래사육사 로그성 데이터를 파티션 테이블로 보관하는 경우가 많은데, 보관주기가 지난 파티션을 drop 하는 경우에 MySQL 에서는 전체 파티션에 테이블 락이 걸리는 문제가 있다. 물론 파티션의 물리적인 파일과 내부 메타 데이터 갱신 정도만 발생하기에 테이블 락 유지 시간이 길지는 않지만, 서비스 성격에 따라 문제가 되는 경우도 있다. MySQL 5.6 버전부터는 파티션 Exchange 기능이 지원되는데, 이 기능을 사용하면 테이블 락으로 인한 영향을 최소화하면서 파티션 삭제를 할 수 있다.테스트를 위해 하루에 32..