PostgreSQL 17: 새로운 시대를 여는 주요 업데이트와 개선 사항

대부분의 PostgreSQL 릴리스에서는 주로 4~8개의 주요 기능이 주목받습니다. 하지만 최신 PostgreSQL 17은 다릅니다. 8개의 주요 기능만 있는 것이 아니라, 여러 핵심 분야에서 수십 개의 지원 기능이 추가되며 큰 변화를 가져왔습니다. 이러한 개선은 PostgreSQL 기여자 커뮤니티의 성장이 있었기에 가능했습니다. EDB 부사장이자 PostgreSQL 전도사인 Bruce Momjian은 새로운 개발자들이 참신한 관점과 혁신적인 아이디어를 가져왔으며, 이러한 요소들이 PostgreSQL 17에 뚜렷이 반영되었다고 강조합니다. 이와 같은 이유들로, EDB 수석 엔지니어인 Peter Eisentraut은 PostgreSQL 17이 축하받을 만한 가치가 있다고 말합니다. Peter와 Bruce와 함께 온디맨드 웨비나를 통해 최신 기능을 탐구하며 PostgreSQL 17을 함께 해주시기 바랍니다. 다음은 웨비나에서 다룬 PostgreSQL 17의 주요 기능 중 일부입니다.

증분 백업(Incremantal Backup)

PostgreSQL 17의 가장 주목할 만한 발전 중 하나는 증분 백업 기능입니다. 이는 기존 백업 방식에서 발생하던 비효율성과 문제를 해결하기 위해 설계되었습니다.

기존 백업 방식의 한계

PostgreSQL 17 이전에는 두 가지 주요 백업 방식이 있었습니다:

  1. 시점 백업(Point-in-time backups) 파일 시스템 백업 또는 pg_dump를 이용한 방식으로 속도는 빠르지만, 지속적인 업데이트를 지원하지 않아 복구 시 많은 양의 WAL(Write-Ahead Log)을 재생해야 하는 단점이 있었습니다.
  2. 연속 아카이빙 및 시점 복구(Continuous archiving/point-in-time) 특정 시점으로 복구할 수 있지만, 초기 전체 백업은 특히 대규모 데이터베이스에서 시간이 오래 걸리고 자원 소모가 컸습니다.

증분 백업의 도입으로 해결된 문제

새로운 증분 백업 기능은 초기 전체 백업 후 변경된 데이터를 WAL 로그를 통해 증분적으로 업데이트할 수 있도록 하여, 기존 방식의 단점을 보완하고 시점 복구의 장점을 제공하게 되었습니다.

증분 백업의 주요 장점

  • 서버 부하 감소 백업을 별도의 머신에서 수행할 수 있어 데이터베이스 서버의 부하를 줄이고 자원을 더 효율적으로 사용할 수 있습니다.
  • 유연한 복구 지원 필요한 증분 백업만 적용하여 원하는 시점으로 복구가 가능합니다.
  • 백업 관리 간소화 여러 증분 백업을 다양한 간격으로 보관할 수 있으며, 불필요한 이전 백업은 손쉽게 삭제할 수 있습니다.
  • WAL 요약 기능 추가 새로운 내부 프로세스인 WAL 요약기가 WAL 파일의 변경 사항 요약을 유지해, 광범위한 로그 파일을 읽어야 하는 부담을 줄여줍니다.

PostgreSQL 17의 증분 백업 기능은 특히 대규모 데이터베이스나 복잡한 작업 부하를 처리하는 환경에서 기존 백업 방식이 가진 한계를 극복했습니다. 이를 통해 백업과 복구 작업이 훨씬 효율적이고 유연해져, PostgreSQL 17은 데이터베이스 관리에서 새로운 표준을 제시합니다.

 

JSON 테이블 기능(JSON Table Functionality)

PostgreSQL 17에서는 데이터 조작 능력이 특히 JSON 데이터를 중심으로 크게 향상되었습니다. PostgreSQL은 이미 JSON을 지원해왔지만, 이번에 추가된 JSON Table 기능은 이를 한 단계 더 발전시켰습니다. 이 기능은 JSON 데이터를 기반으로 가상 테이블을 생성해, JSON 데이터를 일반 테이블처럼 쿼리하고 조작할 수 있도록 합니다.

JSON Table 기능의 주요 특징

  • JSON과 관계형 데이터 간의 간극 해소 JSON 데이터를 테이블처럼 다룰 수 있어, 수동 파싱 과정에서 발생하는 번거로움과 오류를 줄이고 조인, 그룹화 등의 관계형 작업을 손쉽게 수행할 수 있습니다.
  • 선언적 구문 지원 JSON 문서에서 데이터를 추출하고 이를 테이블 열에 매핑하는 선언적 구문을 제공합니다.
  • 관계형 데이터 소스와의 통합 JSON 데이터를 다른 관계형 데이터 소스와 자연스럽게 통합할 수 있습니다.

JSON Table 기능의 사용 방식

JSON Table 기능은 JSON_TABLE 함수를 사용하며, JSON 열을 지정하고 데이터를 테이블 열에 매핑하기 위한 표현식을 제공합니다. 이를 통해 복잡하고 계층적인 JSON 문서에서도 원하는 데이터를 손쉽게 추출할 수 있습니다.

JSON Table의 장점

  • 쿼리 성능 향상 JSON 데이터를 가상 테이블로 변환하여 쿼리 처리 속도를 개선할 수 있습니다.
  • 멀티모델 데이터베이스로서의 유연성 강화 PostgreSQL이 JSON과 관계형 데이터 모두를 효율적으로 처리할 수 있도록 지원해, 데이터베이스의 전반적인 유연성과 활용성을 높였습니다.
PostgreSQL 17의 JSON Table 기능은 JSON 데이터의 복잡성을 간소화하고, 데이터 분석 및 조작에 새로운 가능성을 열어주는 강력한 도구입니다.

강화된 Copy 에러 처리 기능

PostgreSQL은 파일로부터 데이터를 대량으로 불러오는 Copy 명령어를 오래전부터 제공해왔습니다. 그러나 이전에는 입력 데이터에 오류가 있으면 전체 로드 작업이 실패하는 단점이 있었습니다. PostgreSQL 17에서는 이러한 문제를 해결하기 위해 Copy 에러 처리 기능이 도입되어, 실제 데이터 로드 시 더욱 실용적으로 활용할 수 있게 되었습니다.

Copy 에러 처리 기능의 주요 개선 사항

  1. 입력 데이터 오류 처리 입력 데이터에서 오류가 발생하더라도 전체 로드 작업이 중단되지 않도록 지원합니다.
  2. 에러 처리 옵션 제공 예를 들어, 잘못된 행을 무시하는 옵션 등을 통해 에러 처리 방식을 제어할 수 있습니다.
  3. 플러그형 데이터 타입과의 효율적인 에러 처리 PostgreSQL의 다양한 데이터 타입에 걸쳐 오류를 효율적으로 포착하고 처리하는 기술적 도전을 해결했습니다.
이번 초기 구현은 기본적인 에러 처리 기능을 제공하지만, 향후 더 많은 기능이 추가될 예정입니다. Copy 에러 처리 기능은 데이터 무결성을 유지하면서도 작업 효율성을 저하시키지 않는 유연한 기능으로, PostgreSQL의 대량 데이터 로드 작업을 한층 더 실용적이고 견고하게 만들어줍니다.

다재다능한 Merge 명령어

PostgreSQL 17에서는 Merge 명령어가 더욱 강력하고 유연하게 개선되었습니다. Merge는 삽입(INSERT), 업데이트(UPDATE), 삭제(DELETE) 작업을 결합 수행할 수 있는 명령으로, 주로 데이터 처리 자동화를 필요로 하는 사용자들에게 유용한 기능입니다.

Merge 기능의 주요 개선 사항

  1. 업데이트 가능한 뷰 지원 기존에는 Merge가 기본 테이블에만 사용 가능했지만, 이제는 업데이트 가능한 뷰에도 사용할 수 있습니다.
  2. “RETURNING” 절 지원 INSERT와 UPDATE에서 사용되던 RETURNING 절이 Merge에도 도입되었습니다. 이를 통해 단일 명령어로 Merge 작업 결과를 바로 조회할 수 있습니다.
  3. “MERGE_ACTION” 함수 추가 MERGE_ACTION 함수는 각 행이 Merge 작업에서 삽입, 업데이트, 삭제 중 어떤 동작이 수행되었는지 표시해 줍니다.
이러한 개선은 Merge 작업 흐름을 단순화하고 사용자 요청을 적극 반영한 기능들로, 실질적인 생산성을 크게 높입니다.

최적화 도구(Optimizer)의 효율성 개선

PostgreSQL 17에서는 최적화 도구(Optimizer) 성능이 크게 향상되었습니다. 이는 새롭게 참여한 기여자들의 아이디어와 노력 덕분입니다.

주요 최적화 개선 사항

  1. 공통 테이블 표현식(CTEs)의 통계 전달 이전에는 첫 번째 CTE의 통계 및 정렬 정보가 이후 쿼리 부분에 전달되지 않았으나, 이제는 이를 통해 더 나은 쿼리 계획을 생성할 수 있습니다.
  2. NOT NULL 열의 최적화
    • NOT NULL 열에서 NULL 값을 요청하는 쿼리는 즉시 빈 결과를 반환하도록 최적화되었습니다.
    • NOT NULL 열에 대해 “IS NOT NULL”을 확인하는 불필요한 작업을 생략합니다.
  3. 상관 서브쿼리(Correlated Subqueries)의 처리 개선
    • 외부 쿼리의 열을 참조하는 서브쿼리의 최적화가 강화되었습니다.
    • PostgreSQL 16에서 서브플랜을 사용했던 쿼리가 PostgreSQL 17에서는 해시 조인으로 최적화됩니다.
  4. 기타 최적화 개선
    • Boolean 파티션, 범위 값, LIMIT 처리, GROUP BY 및 병렬 작업과 관련된 최적화가 포함됩니다.
최적화의 개선은 단순히 성능 향상에 그치지 않고, 더욱 정교한 쿼리 계획으로 데이터 처리 효율성을 극대화합니다.

강화된 논리적 복제(Logical Replication)

PostgreSQL 17은 논리적 복제를 더 널리 활용할 수 있도록 중요한 개선을 도입했습니다.
  1. pg_create_subscriber 도구 추가 논리적 복제본 생성 작업을 자동화하여 설정 과정을 간소화하고, 복제 속도와 효율성을 대폭 향상시켰습니다.
  2. 장애 조치(Failover) 처리 개선 이전에는 주 데이터베이스가 물리적 스탠바이로 장애 조치될 경우 논리적 복제가 중단되었으나, 이제는 내장된 장애 조치 지원 기능으로 논리적 복제본이 계속 작동할 수 있습니다. 이 개선은 고가용성 시스템에서 다운타임을 최소화하는 데 필수적입니다.
이러한 개선은 설정 복잡성과 복원력 문제를 해결하고, 논리적 복제의 더 넓은 채택을 위한 기틀을 마련합니다.

데이터베이스 기술의 중요한 도약

PostgreSQL 17은 증분 백업, 데이터 웨어하우징 최적화, 논리적 복제 개선 등을 통해 데이터베이스 관리 성능, 확장성, 안정성을 대폭 향상시켰습니다. PostgreSQL 17의 새로운 기능을 직접 체험해 보시고, 귀사의 데이터베이스 관리에 어떤 변화를 가져올지 확인해 보시기 바랍니다. PostgreSQL 17 Unveiled 웨비나 보기 Postgres 17이 귀사에 어떤 이점을 제공할 수 있을지 논의하고 싶으시면 언제든지 문의해 주세요!
 
본문 PostgreSQL 17 Unveiled: Key highlights in data backup, data warehousing and more
 
EDB 영업 기술 문의: 02-501-5113
홈페이지 문의: https://www.enterprisedb.com/contact_kr