오랫만에 들른 PostgreSQL 홈페이지 첫 화면에서 15 버전이 정식 배포되었다는것을 알게 되었다.

Release note : https://www.postgresql.org/about/news/postgresql-15-released-2526/

 

PostgreSQL 15 Released!

**October 13, 2022** - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 15](https://www.postgresql.org/docs/15/release-15.html), the latest version of …

www.postgresql.org

WAL file 압축, Window function 성능 향상, json format의 로그 지원 등등 여러가지가 설명되어 있는데, 내 시선을 강탈한건 바로 "MERGE 구문 지원"

PostgreSQL 15 includes the SQL standard MERGE command. MERGE lets you write conditional SQL statements that can include INSERT, UPDATE, and DELETE actions within a single statement.

 

 Oracle로 DBA 생활을 시작해서인지 PostgreSQL에서는 merge 구문을 지원하지 않는 점이 참 아쉬웠었다. 그동안 PostgreSQL에서는 with 구문을 이용해서 insert와 update를 한번에 처리했었지만, 이제 다른 선택지가 생겼으니 잘 돌아가는지 테스트 해봐야겠다. 곧 테스트할 시간이 생기겠지... 지금은 안돼... 힘들다.

 

https://www.postgresql.org/docs/15/sql-merge.html

 

MERGE

MERGE MERGE — conditionally insert, update, or delete rows of a table Synopsis [ WITH with_query [, ...] ] MERGE …

www.postgresql.org

 

* MySQL 5.5.x 버전에서 테스트한 내용임!


Oracle에서는 테이블에 date형의 컬럼을 만들면서 default 값을 sysdate로 넣어주면, 명시적으로 null 값을 넣으려하거나 insert 문장에서 해당 컬럼이 빠져도 현재 시각이 입력되게 되어 있다. 이런 설정을 여러개의 컬럼에 적용할 수 있다는게 아주 당연한 일이었다. PostgreSQL도 마찬가지로 current_timestamp나 current_date 둥을 여러 컬럼에 default로 설정해 줄 수 있다.

하.

지.

만.

MySQL에서는 안된다.

DA#에서 기본값에 current_timestamp를 넣어줬더니 스크립트가 잘 뽑히길래 돌렸더니 에러 발생.

기본적으로 MySQL에서는 하나의 테이블에 하나의 timestamp 컬럼에만 current_timestamp를 넣어줄 수 있다고한다.

그러나 꼼수가 존재하니 아래 코드를 돌려보시길...


CREATE TABLE test

(

id INT NOT NULL,

regdttm TIMESTAMP DEFAULT '0000-00-00 00:00:00',

moddttm TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

)

;


INSERT INTO test(id, regdttm) VALUES(1, NULL);

INSERT INTO test(id, regdttm) VALUES(2, NULL);

INSERT INTO test(id, regdttm) VALUES(3, NULL);

regdttm에 null 값을 명시적으로 넣어주는 insert 문장을 실행하면 regdttm과 moddttm에 current_timestamp값이 들어갑니다.


SELECT * FROM test;


"id" "regdttm"                 "moddttm"

---------------------------------------------------------------

"1" "2014-07-23 17:36:05" "2014-07-23 17:36:05"

"2" "2014-07-23 18:49:52" "2014-07-23 18:49:52"

"3" "2014-07-23 17:36:24" "2014-07-23 17:37:06"




Tmax Day 2013 행사에 참석 중입니다.

예전에 비해서 데이터베이스 쪽 제품들이 짜임새있게 개발이 되는것 같습니다.
티베로6와 인피니데이터3.0은 꽤 쓸만한듯하네요.
자세한 참관기는 나중에 올리도록 하겠습니다. 일단 facebook.com/TiberoUsers 에서 현장 사진을 볼수 있습니다.

iPhone 에서 작성된 글입니다.
PostgreSQL에서 Oracle RAC와 같이 모든 노드에서 읽고 쓰기를 할 수 있는 클러스터를 구축하고자한다면 Postgres-XC를 검토하게 될 것이다. 물론 다른것도 존재하겠지만 이 녀석이 가장 좋아보인다.

관련 자료 검색 중에 PGXC-Tools라는걸 발견했다. Koichi suzuki라는 분이 만든 오픈소스 툴로 Postgres-XC를 운영하는데 유용한 스크립트/프로그램 모음이라고 한다.

웹사이트 : http://github.com/koichi-szk/PGXC-Tools

아래 사진은 github에서 툴에 대해서 설명한 부분을 캡쳐한 것이다.




iPhone 에서 작성된 글입니다.
카이로스는 메모리 기반 디비라서 빠르다. 그런데 이 메모리가 스왑되면 일반 관계형데이타베이스와 다를것이 없어지므로 카이로스가 사용하는 메모리는 스왑되지 않도록 해주는 것이 좋으며 이를 핀 메모리(맞나?) 설정이라고한다.

우선 설정 파일( kairos.properties )을 열어서 핀 메모리 설정값이 on으로 되어있는지 확인한다. 아마도 되어있을것이다.

su - (root 권한이 필요하다)

ln-s libcci.so /usr/lib64/libcci.so

카이로스 실행 파일이 있는 디렉토리로 가서 소유자를 바꿔준다.
chown root kairos
chmod 4755 kairos

여기까지 진행한뒤에 카이로스를 기동시키면 핀 메모리 설정이 잘 되었는지 메세지가 출력될것이다.

iPhone 에서 작성된 글입니다.

'IT 기술 > Database' 카테고리의 다른 글

Tmax Day 2013 참석  (0) 2013.09.10
PGXC-Tools : Postgres-XC를 좀더 편리하게  (0) 2013.06.05
PostgreSQL 9.3의 신기능 : Materialized view  (0) 2013.03.08
Postgres-XC 위키 이전  (0) 2013.02.19
PostgreSQL 9.2.2 Release!!  (0) 2012.12.14
PostgreSQL 9.3에서 선보일 새기능에 대한 소식이다.

아래 주소는 관련 내용을 볼 수 있는 Michael Paquier의 블로그 글이다.
http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-materialized-views/

흔히 오라클에서 M-View라고 부르는( 티베로도 동일한 이름이다. ) Materialized view가 드디어 PostgreSQL 9.3 버전에 추가 된다.

좀더 융통성있는 데이타 서비스( 개발자들에게 )가 가능해질듯하다. 쓸만할듯...

CREATE MATERIALIZED VIEW
ALTER MATERIALIZED VIEW
DROP MATERIALIZED VIEW
REFRESH MATERIALIZED VIEW
위의 명령어들을 이용하여 관리할 수 있다.

9.3 버전이 빨리 공개되길 바란다.

신기능들을 좀 더 자세히 공부해 봐야겠다.

iPhone 에서 작성된 글입니다.


오픈소스 데이타베이스 PostgreSQL을 기반으로 분산 처리가 가능한 cluster db를 만드는 Postgres-XC project 홈페이지에 갔다가 위키가 이전된걸 발견했다.
소스포지의 위키에서 아래의 링크로 바꼈다는 안내되어있다. 소스포지의 위키 서비스가 종료되어서 이전했다고 한다.

http://postgresxc.wikia.com/wiki/Postgres-XC_Wiki


iPhone 에서 작성된 글입니다.
드디어 PostgreSQL 9.2.2가 나왔습니다.
큰 문제들은 이제 다 정리된듯 합니다.

http://www.postgresql.org/about/news/1430/

iPhone 에서 작성된 글입니다.
지난번에 Postgres-XC 1.0.0에 대해서 글을 올렸는데 아직 문제가 좀 있다고 했었죠 이번에 1.0.1 버전을 테스트한 결과를 정리해서 올립니다. 짧게 얘기하면 "좋아졌다"입니다. ^^/


• 1.0.1 버전 개요
Postgres-XC 1.0.1은 PostgreSQL 9.1.5를 기반으로 만들어졌습니다.


• 지난버전 테스트 결과와 다른 점
1. 관리 툴
pgAdmin III 1.16.0 버전을 사용하면 오류메시지없이 접속됩니다. 한가지 아쉬운점이라면 dbms 버전 정보에는 PostgreSQL 9.1.5로 표시된다는 점입니다.

2. 트랜잭션 문제 해결
함수 내부에서 "select for update"로 데이터를 가져와서 다이나믹쿼리로 update문을 실행하면 일부 세션에서 데이터를 잘못가져오는 문제가 해결되었습니다.
1번 세션에서 begin 명령으로 트랜잭션을 시작한 후, 해당 함수를 실행한 뒤에 2번 세션에서 함수를 실행했을때 1번 세션의 트랜잭션이 종료된 후 update된 값을 "select fir update"로 가져와서 update해줍니다. 정상적으로 작동한다는 얘기입니다.
제 설명이 좀 복잡한가요? 회사에서 아이폰으로 작성하는거라 좀 시간도 부족하고 글 쓰기도 좀 힘드네요. 다음에 코드와 함께 집에서 다듬어서 적성하겠습니다.



iPhone 에서 작성된 글입니다.
Kairos mmdbms에서 공간 데이타를 추출하여 Kairos 혹은 이기종의 dbms에 적재하는데, ETL 툴을 사용하려하였으나 현재 검토 중이던 툴이 정상적으로 지원하지 않아서 kloader라는 Kairos 자체 툴을 이용하였다.

# kloader -h server_ip -p port_no -cp UTF-8
kloader> gisget -t table_name -shp output_dir/filename.shp ;
위는 추출할때 명령

위의 명령을 실행하면 세개(네개였었나)의 파일이 생성되는데 모두 scp 등을 이용하여 로딩할 서버로 전송한다.

마찬가지로 kloader를 실행한 뒤.
kloader> gisput -t table_name -shp intput_dir/filename.shp -mode append ;
대이타를 적재할때에는 "-mode"를 꼭 설정해야한다. 테이블에 존재하는 기존 데이타를 유지할지 지울지를 정해주는 것이므로 매우 중요한 파라미터이다.

iPhone 에서 작성된 글입니다.

+ Recent posts