오랫만에 들른 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 에서 작성된 글입니다.
리눅스에서 NTFS로 디스크를 포맷할 일이 생길때가 있더군요. 이럴때는 ntfsprogs를 설치하면 됩니다.

ntfs-3g라는 패키지를 설치하면 NTFS 파티션을 마운트해서 읽기/쓰기를 할 수 있는데 ntfsprogs는 파일시스템을 NTFS로 포맷을 할 수 있게 해줍니다.

구글 검색을 하면 더 자세히 알아볼 수 있습니다.

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

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

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

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




iPhone 에서 작성된 글입니다.
Oracle 11g R2 RAC를 설치하는 중이다. 기술지원없이 대충 구글 검색으로 하고있다.
NAS : Openfiler ( Intel core i7 PC )
디비서버 OS : Oracle enterprise linux 5 64 bit ( Intel core i7 PC * 2 )
grid infrastructure 설치 계정 : grid
oracle 설치 계정 : oracle

그리드 인프라 설치 프로그램이 수퍼유저 계정이 아니라면서 종료되버린다. 젠장!!
스토리지 설정, 넷트웍 설정 등을 삽질해서 겨우 설치 단계까지 왔는데 중간에 종료되다니!!

구글링과 오라클 메뉴얼 정독으로 해결하려는데 시간이 모자라네.

iPhone 에서 작성된 글입니다.
여분의 PC를 이용해서 저렴하게 혹은 개발 및 테스트 용도로 NAS를 구축하려는 사람들에게 그리고 적어도 오라클의 OTN 문서등을 통해서 Oracle RAC를 테스트 용도로 구축하려는 사람들에게 낯익은 이름의 운영체제가 있다. 바로 Openfiler다.

Openfiler는 리눅스 기반의 NAS 운영체제다. 관리용 웹 인터페이스를 제공하며, 일반적인 x86기반 PC에 설치가 가능하다.

설치 후 HDD에 사용하지 않는 볼륨 그룹이 존재한다면 바로 ext3, ext4, iSCSI 등으로 공유를 할 수 있다.

다음에는 화면과 함께 좀더 친절한 사용법을 작성하려한다.

iPhone 에서 작성된 글입니다.

+ Recent posts