전체 글 387

timescaledb 확장 모듈

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

docker run --shm-size

docker를 이용한 컨테이너를 만들 때, run 하위 명령을 이용한다. docker run --help 명령으로 도움말을 볼 수 있다. 엄청난 옵션을 제공한다. 그냥 인터넷 상에 소개하고 있는, 또는 그 도커 이미지 제작자가 알려주는 그 컨터이너 실행 명령은 지극히 최소의 '되기만 하면 되는' 가장 기본적인 소개다. 실무환경에서는 이보다 훨씬 복잡하다. 그 복잡함에 대응하려면, 반드시 한 번은 run --help 에서 알려주는 그 자질구레한 옵션들을 읽어보기는 해야한다. 그 대표적인 것인 --hostname 이나, --network 정도일터인데, (물론 도커 호스트와 유연한 관계를 위해, -p, -v 같은 옵션도 필요에 따라 중요한 옵션이기는 하겠지만) 공유 메모리를 사용하는 컨테이너인 경우는 꼭 기억..

redis 보안

redis 보안서버 실행일반 사용자가 실행할 것root 실행 금지 서버 실행 환경 설정 파일 접근 권한chmod og-rw 환경설정파일그룹 및 다른 사용자 읽기, 쓰기 금지 snapshot 기능을 쓰는 경우(자료를 디스크에 저장하는 경우) 서버 실행 전 해당 OS 계정 umask 값이 0066 으로 그룹 및 다른 사용자가 rdb 파일 읽기, 쓰기 금지할 것umask 0066 && redis-server redis.conf 외부 접속을 허락 하는 경우bind 0.0.0.0 설정을 한 경우는 반드시 requirepass 설정을 할 것, 기본값 사용 금지 - plain text 로 conf 파일을 OS 다른 사용자가 사용할 수 없도록 파일 접근 권한 조정 필수protected-mode no 설정 금지 redi..

redis 대량 데이터 입력

redis 대량 데이터 입력 이 글은 https://gist.github.com/Squab/52d42652719cc28451d7코드의 사용법에 대한 이야기입니다. 1. redis-cli --pipe 이야기 redis에서 자료를 입력하는 방법은 여러가지가 있습니다. 가장 간단하게, 일반 텍스트 파일에 redis-cli 에서 사용하는 명령 구문 형태로 자료 입력 명령을 쭉 입력하고, OS 파이프 기능을 이용해서, 표준 출력 내용을 redis-cli 쪽 표준 입력으로 보내서 자료를 입력하는 방법입니다. $ cat medi_code.txt HSET medi_code 100 의료보험 HSET medi_code 110 직장 HSET medi_code 120 지역 HSET medi_code 130 "공무원 및 사립학..

지리정보와 redis

redis geo... 명령어들 redis에서 지리 정보를 다루는 것은 딱 좌표(2차원 점)에 대한 것만이다. 여러 지리 정보를 다루는 다른 소프트웨어에 비교하면, 참 단순하다. 공식 홈페이지의 이 관련 명령어는 https://redis.io/commands#geo페이지를 살펴보면 된다. 국내 홈페이지인 redisgate에는 아직 다루고 있지 않는다. 그나마 joinc에서 간략하게 다루긴 한다. https://www.joinc.co.kr/w/man/12/REDIS/geo geoadd좌표 추가 geopos추가한 좌표 보기 geodist좌표간(점들 사이) 거리 구하기 georadius... 명령어들주변 좌표 찾기 실무에서 쓰일 예제 이야기는 다음에. - posted by 김상기

rdb 테이블을 redis로

관계형 테이터베이스 테이블을 redis로 옮기기 1. redis 자료형문자열, String: 일반적인 key - value, hash로 보면 된다. range, between 이런 것 없다. 그냥 오직 그 key 목록, List: 그냥 배열, push & pop 용, 순서가 색인, 중복된 value, 목록 이름이 key. 하나의 목록을 샤딩할 수는 없다.집합, Set:: 중복된 value를 가질 수 없는 집합 - RDB 인덱스의 value가 된다. insert = sadd, delete = srem , index key update = smove해시, hash: RDB의 테이블, key가 테이블이름, field가 Primary Key, value가 json 칼럼들값들, 하나의 해시는 샤딩할 수 없다.정렬..

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