9.5 버전이 나왔습니다.

이번 9.5 버전은 한 해를 넘겼습니다.
(그래야지, 그래야 PostgreSQL이지. 크크)

새 버전의 가장 주목 받은 기능은 UPSERT 라고 흔히 말하는 자료 입력 방식의 기능입니다. 유니크 키 기준으로 해당 자료가 중복되어 INSERT 할 수 없다면, UPDATE 구문으로 바꾸어서 기존 자료를 변경하거나 INSERT 작업을 무시하는 기능입니다.

다른 관계형 데이터베이스 시스템에서는 오래전부터 제공하던 기능이었는데, 이제서야 구현되었습니다.

브린(BRIN) 인덱스라는 새로운 인덱스를 제공합니다. 대용량 자료에서 btree 보다 성능이 낫다는 이야기가 있네요. 이는 얼마나 더 나은지, 도입해서 얻는 점, 잃는 점은 실무에 사용해 봐야 뭐라 말할 수 있을 것 같습니다.

대용량 자료에서 '대강, 대충'이 필요한 경우를 고려해서 TABLESAMPLE 이라는 예약어가 생겼습니다. 이 또한 잘 쓰면 멋진 기능일 것 같습니다. 꼭 대한민국에 사는 사람 가운데, 서울 사람이 10,331,847명(2015년 3월 5일기준)이라고까지 알 필요가 없는 경우가 알아야 하는 경우보다 더 많겠죠?

group by 절에서 rollup, cube 같은 예약어를 쓸 수 있게 된 것도 있는데, 이제껏 이것 없이도 잘 쓰셨던 분들은 이번 기회에 새 구문을 배워보는 것도 좋을 것 같습니다.

이런 여러 반가운, 신기한 새 기능들의 기분 좋은 소식과 함께,
새 버전에서는 최근 몇년 사이 있었던 메이져 버전 업그레이드와 달리 서버 환경 설정 쪽에서 제법 많이 바뀌었습니다. 즉, 데이터베이스 관리자라면 주의해야 할 부분이 제법 있습니다.

가장 먼저 checkpoint_segments 서버 환경 설정값이 사라졌습니다.
리눅스 환경에서 Out-Of-Memory(OOM) Killer를 위한 설정 방법이 바뀌었습니다. 기존 설정은 무시합니다. 신경 안쓰면 서버가 의도치 않게 재실행되기도 하겠죠.

응용 프로그램 개발자 입장에서 제일 큰 변경 사항.
연산자 우선순위가 표준 SQL로 바뀌었다는 점
(데이터베이스 업그레이드를 고려한다면, 아마 전수 검사를 해야할 듯)
일단은 operator_precedence_warning 환경 설정 값을 on으로 해 두는 것이 좋을 듯합니다.

늘 그래 왔듯이 당장에 중요 시스템에 바로 도입하는 것은 위험합니다.
PostgreSQL의 첫 메이져 릴리즈는 충분한 검증이 필요합니다.
기업 내에서 사용한다면, 먼저 중요하지 않는 서비스부터 먼저 도입해 보고, 기존 환경과 달라진 부분들을 충분히 확인하고 도입 하시길 권합니다.