{% extends "pages/about/press/presskit11/base.html" %}
{% block title %}PostgreSQL 11 Press Kit - Korean{% endblock title %}
{% block presskit_language %}- Korean{% endblock presskit_language %}

{% block presskit_content %}
<p>18 OCTOBER 2018 - 오늘, PostgreSQL 글로벌 개발 그룹은 세상에서 가장 진보적인 오픈 소스
데이터베이스의 가장 최신 버전인 PostgreSQL 11이 출시되었음을 알립니다.</p>

<p>PostgreSQL 11에서는 전반적인 성능이 개선되었습니다. 특히, 아주 큰 데이터베이스, 서버가
많이 바쁜 상황에서도 이전 버전보다 더 나은 성능을 보장합니다. 주요 개선 사항은 파티션 테이블 기능 개선,
트랜잭션 관리가 가능한 새 프로시져 개체 추가, 조회성 쿼리 병렬 처리 성능 개선, 자료 조작
작업(DDL 일부)에서도 병렬 처리가 가능해진 것, 쿼리의 표현식 처리를 더 빠르게 하는 Just-In-Time
(JIT, 실시간 컴파일) 짜깁기 기능이 추가된 것입니다.</p>

<p><a href="https://www.postgresql.org">PostgreSQL 글로벌 개발 그룹</a>
<a href="https://www.postgresql.org/developer/core/">코어 팀 소속</a> Bruce Momjian은
"우리 개발 커뮤니티는 아주 큰 데이터베이스를 잘 관리 할 수 있는 기능을 추가하는 데
중점을 두고 PostgreSQL 11을 개발했다. 더불어, PostgreSQL의 트랜잭션 작업 부하 성능은 입증되었으며,
PostgreSQL 11을 사용하면 대용량 자료 처리용 응용 프로그램 개발자들도 더욱 쉽게 작업할
수 있을 것이다." 라고 말했습니다.</p>

<p>PostgreSQL은 20년 넘게 이어오면서 오픈 소스 개발 분야에 이익을 주었으며,
개발자들이 선호하는 오픈 소스 관계형 데이터베이스가 되었습니다.
이 프로젝트는 산업 전반에 걸쳐 인정받아, DB-Engines의
"<a href="https://db-engines.com/en/blog_post/76">2017년 RDBMS</a>"로 소개되었으며,
<a href="https://sdtimes.com/sdtimes-100/2018/best-in-show/database-and-database-management-2018/">SD Times 2018 100</a>에도
소개되었습니다.</p>

<p>PostgreSQL 11은 2017년 10월 5일에 나온 PostgreSQL 10 이후 첫 메이저 배포판입니다.
PostgreSQL 11에 대한 문제점 수정판인 다음 버전은 PostgreSQL 11.1로 출시될 것입니다.
또한 다음 메이저 버전은 PostgreSQL 12로 출시될 것입니다.</p>

<h3 id="">파티션 테이블 견고성과 성능 향상</h3>

<p>PostgreSQL 11에서 해시 파티션 테이블을 지원합니다. 이제, 나열 list 파티션, 범위 range
파티션과 함께 파티션 키로 해시 키를 사용할 수 있게 되었습니다. PostgreSQL 11에서는
PostgreSQL 외부 자료 싸개 wrapper인
<a href="https://www.postgresql.org/docs/current/postgres-fdw.html">postgres_fdw</a>
모듈을 이용하는 외부 테이블을 파티션 하위 테이블로 사용하는 기능이 좀 더 좋아져서 분산 노드
자료 처리가 좋아졌습니다.</p>

<p>PostgreSQL 11에서는 이제 하위 테이블의 기본키, 참조키, 인덱스, 트리거를 상위 테이블에
한 번만 정의하면, 하위 테이블을 만들 때 자동으로 반영됩니다.
또한, 파티션 키로 사용되고 있는 값을 바꾸는데,
바뀐 자료가 새 파티션에 있어야 할 때 자동으로 해당 파티션으로 자료를 옮깁니다.</p>

<p>PostgreSQL 11에서는 파티션 삭제 처리를 새롭게 구현해서 파티션 테이블 읽기 성능을
높였습니다. 하나 더, PostgreSQL 11에서는 흔하게 사용하는 "upsert" 구문 - 없으면
insert, 있으면 update - 을 이제 파티션 테이블에서도 사용할 수 있습니다.
이렇게 해서, 응용 프로그램 코드를 단순화하며, 네트워크 전송량을 줄일 수 있습니다.</p>

<h3 id="-1">트랜잭션을 관리하는 프로시져</h3>

<p>개발자는 데이터베이스 서버 내에서 일련의 작업을 한 번에 하고자 할 때,
지난 20년간 PostgreSQL에서는 사용자 정의 함수를 만들어 사용해 왔습니다.
이 사용자 정의 함수는 그 함수 본문 전체 작업을 하나의 트랜잭션으로 처리하기 때문에,
그 안에서 일어나는 작업들을 쪼개서 개별 트랜잭션으로 처리할 수 없었습니다.
PostgreSQL 11에서는 이 개별 작업들의 트랜잭션 관리가 가능한 프로시져 개체를
새로 추가했습니다. 이로써 개발자는 더욱 나은 서버 측 프로그램 개발을 할 수 있게 되었습니다.
이 프로시져는 대량 자료 일괄 입력 작업에서 오류가 발생하면 예외 처리를 하고, 나머지는
정상 입력하는 작업을 하는 데 사용할 수 있습니다.</p>

<p><code>CREATE PROCEDURE</code> 명령으로 SQL 프로시져를 만들고,
<code>CALL</code> 명령으로 실행합니다. 현재 PL/pgSQL, PL/Perl, PL/Python, PL/Tcl 내장 프로시져
언어로 프로시져를 만들 수 있습니다.</p>

<h3 id="-2">병렬 쿼리 기능 향상</h3>

<p>PostgreSQL 11에서는 병렬 쿼리 성능도 향상되었습니다.
순차적 병렬 탐색 비용이 줄었으며, 파티션 테이블 대상 해시 조인 작업에서도
병렬 처리가 가능합니다. <code>UNION</code>으로 묶인 쿼리도 각 부분 쿼리가
병렬 처리를 할 수 없다면, 그것들을 각각 병렬 처리 합니다.
(모호한 표현 - SELECT ... UNION SELECT ... 인 경우 첫 SELECT 구문을 병렬 처리
못한다면, 첫 SELECT 전체, 다음 SELECT 전체를 각각 병렬 쿼리 작업자가 작업 함 - 옮긴이)</p>

<p>PostgreSQL 11에서는 여러 자료 정의 명령(DDL)에 대해서도 병렬 처리를 합니다.
<code>CREATE INDEX</code> 명령으로 B-tree 인덱스를 만들 때도 병렬 처리를 한다는 것은 주목할 만합니다.
<code>CREATE TABLE .. AS</code>, <code>SELECT INTO</code>, <code>CREATE MATERIALIZED VIEW</code>같이
테이블이나 구체화한 뷰를 만드는 쿼리도 병렬 처리가 가능해졌습니다.</p>

<h3 id="justintimejit">표현식 처리용 Just-in-Time (JIT) 짜깁기</h3>

<p>PostgreSQL 11은 JIT (Just-In-Time) 컴파일을 지원하여
쿼리 실행 중 특정 표현식의 실행을 더 빠르게 합니다. (이를 JIT 컴필레이션, 짜깁기라고 함)
PostgreSQL에서는 LLVM 프로젝트에서 제공하는 JIT 라이브러리를 이용하여,
WHERE 절에 있는 표현식, 대상 목록, 집계함수, 예측, 몇몇 내부 연산 등의 처리 속도를 높입니다.</p>

<p>JIT 짜깁기 기능을 이용하려면, 먼저, LLVM 관련 패키지들을 설치하고,
이 기능을 활성화 해서 PostgreSQL 서버를 만들고, 환경 설정 파일에서 <code>jit = on</code> 설정을 하거나
세션에서 <code>SET jit = on</code> 명령을 이용해야 합니다.</p>

<h3 id="-3">일반 사용자 경험 개선</h3>

<p>PostgreSQL 관계형 데이터베이스의 기능 개선은 사용자의 적극적인 반응 feedback과
PostgreSQL 개발자들의 많은 노력 없이는 불가능합니다. 다음은 이번 PostgreSQL 11 버전에
추가된 사용자 경험을 개선하는 많은 기능 가운데, 주요 기능 몇 가지입니다:</p>

<ul>
<li><code>NULL</code> 허용하지 않는 <code>ALTER TABLE .. ADD COLUMN .. DEFAULT ..</code> 작업에서
기존 테이블 전체 자료 다시 쓰기 하던 것을 이제는 속성 정보만 등록해서 처리 하는 것으로
성능을 개선했습니다.</li>

<li>"인덱스 커버링", 인덱스 관련 구문에서 <code>INCLUDE</code> 절이 추가되었습니다.
이 기능으로 B-tree 인덱스가 아니어도 인덱스 단독 탐색 성능을 높였습니다.</li>

<li>윈도우 함수에서, <code>RANGE</code> 모드에서 <code>PRECEDING</code>/<code>FOLLOWING</code> 구문 지원, <code>GROUPS</code> 모드 지원,
프레임 제외 기능이 추가 되었습니다.</li>

<li>PostgreSQL 명령행 인터페이스(psql)에서 "quit", "exit" 명령을 사용할 수 있습니다. 이렇게 해서
명령행 도구들이 좀 더 쉽게 종료할 수 있도록 했습니다.</li>
</ul>

<p>이번 배포판과 관련된 모든 내용은 아래
<a href="https://www.postgresql.org/docs/11/release-11.html">release notes</a> 페이지에서
자세히 다룹니다:</p>

<p><a href="https://www.postgresql.org/docs/11/release-11.html">https://www.postgresql.org/docs/11/release-11.html</a> (영문)</p>

<p><a href="http://postgresql.kr/docs/11/release-11.html">http://postgresql.kr/docs/11/release-11.html</a> (한글, 번역 예정)</p>
{% endblock presskit_content %}

{% block presskit_about %}
<h2 id="postgresql">PostgreSQL이란?</h2>

<p><a href="https://www.postgresql.org">PostgreSQL</a>은 수천 명의 사용자, 공헌자, 회사 및 조직의 글로벌 커뮤니티가
사용, 개발하는 세계에서 가장 진보적인 오픈 소스 데이터베이스입니다. PostgreSQL 프로젝트는 캘리포니아
버클리 대학에서 시작하여 30 년이 넘는 엔지니어링을 기반으로 빠른 속도로 계속 개발되고 있습니다.
PostgreSQL의 완성도 높은 기능들은 상용 데이터베이스 시스템과 거의 같으며,
확장성, 보안 및 안정성 측면의 한발 앞선 기능들은 더 뛰어납니다.
<a href="https://www.postgresql.org">PostgreSQL.org</a>에서 PostgreSQL에 대해서 더 살펴보고,
우리 커뮤니티에 참여해주십시오.</p>
{% endblock presskit_about %}
