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 에러 처리 기능의 주요 개선 사항
- 입력 데이터 오류 처리 입력 데이터에서 오류가 발생하더라도 전체 로드 작업이 중단되지 않도록 지원합니다.
- 에러 처리 옵션 제공 예를 들어, 잘못된 행을 무시하는 옵션 등을 통해 에러 처리 방식을 제어할 수 있습니다.
- 플러그형 데이터 타입과의 효율적인 에러 처리 PostgreSQL의 다양한 데이터 타입에 걸쳐 오류를 효율적으로 포착하고 처리하는 기술적 도전을 해결했습니다.
이번 초기 구현은 기본적인 에러 처리 기능을 제공하지만, 향후 더 많은 기능이 추가될 예정입니다. Copy 에러 처리 기능은 데이터 무결성을 유지하면서도 작업 효율성을 저하시키지 않는 유연한 기능으로, PostgreSQL의 대량 데이터 로드 작업을 한층 더 실용적이고 견고하게 만들어줍니다.
다재다능한 Merge 명령어
PostgreSQL 17에서는
Merge 명령어가 더욱 강력하고 유연하게 개선되었습니다. Merge는 삽입(INSERT), 업데이트(UPDATE), 삭제(DELETE) 작업을 결합 수행할 수 있는 명령으로, 주로 데이터 처리 자동화를 필요로 하는 사용자들에게 유용한 기능입니다.
Merge 기능의 주요 개선 사항
- 업데이트 가능한 뷰 지원 기존에는 Merge가 기본 테이블에만 사용 가능했지만, 이제는 업데이트 가능한 뷰에도 사용할 수 있습니다.
- “RETURNING” 절 지원 INSERT와 UPDATE에서 사용되던 RETURNING 절이 Merge에도 도입되었습니다. 이를 통해 단일 명령어로 Merge 작업 결과를 바로 조회할 수 있습니다.
- “MERGE_ACTION” 함수 추가 MERGE_ACTION 함수는 각 행이 Merge 작업에서 삽입, 업데이트, 삭제 중 어떤 동작이 수행되었는지 표시해 줍니다.
이러한 개선은 Merge 작업 흐름을 단순화하고 사용자 요청을 적극 반영한 기능들로, 실질적인 생산성을 크게 높입니다.
최적화 도구(Optimizer)의 효율성 개선
PostgreSQL 17에서는 최적화 도구(Optimizer) 성능이 크게 향상되었습니다. 이는 새롭게 참여한 기여자들의 아이디어와 노력 덕분입니다.
주요 최적화 개선 사항
- 공통 테이블 표현식(CTEs)의 통계 전달 이전에는 첫 번째 CTE의 통계 및 정렬 정보가 이후 쿼리 부분에 전달되지 않았으나, 이제는 이를 통해 더 나은 쿼리 계획을 생성할 수 있습니다.
- NOT NULL 열의 최적화
- NOT NULL 열에서 NULL 값을 요청하는 쿼리는 즉시 빈 결과를 반환하도록 최적화되었습니다.
- NOT NULL 열에 대해 “IS NOT NULL”을 확인하는 불필요한 작업을 생략합니다.
- 상관 서브쿼리(Correlated Subqueries)의 처리 개선
- 외부 쿼리의 열을 참조하는 서브쿼리의 최적화가 강화되었습니다.
- PostgreSQL 16에서 서브플랜을 사용했던 쿼리가 PostgreSQL 17에서는 해시 조인으로 최적화됩니다.
- 기타 최적화 개선
- Boolean 파티션, 범위 값, LIMIT 처리, GROUP BY 및 병렬 작업과 관련된 최적화가 포함됩니다.
최적화의 개선은 단순히 성능 향상에 그치지 않고, 더욱 정교한 쿼리 계획으로 데이터 처리 효율성을 극대화합니다.
강화된 논리적 복제(Logical Replication)
PostgreSQL 17은 논리적 복제를 더 널리 활용할 수 있도록 중요한 개선을 도입했습니다.
- pg_create_subscriber 도구 추가 논리적 복제본 생성 작업을 자동화하여 설정 과정을 간소화하고, 복제 속도와 효율성을 대폭 향상시켰습니다.
- 장애 조치(Failover) 처리 개선 이전에는 주 데이터베이스가 물리적 스탠바이로 장애 조치될 경우 논리적 복제가 중단되었으나, 이제는 내장된 장애 조치 지원 기능으로 논리적 복제본이 계속 작동할 수 있습니다. 이 개선은 고가용성 시스템에서 다운타임을 최소화하는 데 필수적입니다.
이러한 개선은 설정 복잡성과 복원력 문제를 해결하고, 논리적 복제의 더 넓은 채택을 위한 기틀을 마련합니다.
데이터베이스 기술의 중요한 도약
PostgreSQL 17은 증분 백업, 데이터 웨어하우징 최적화, 논리적 복제 개선 등을 통해 데이터베이스 관리 성능, 확장성, 안정성을 대폭 향상시켰습니다. PostgreSQL 17의 새로운 기능을 직접 체험해 보시고, 귀사의 데이터베이스 관리에 어떤 변화를 가져올지 확인해 보시기 바랍니다.
PostgreSQL 17 Unveiled 웨비나 보기 Postgres 17이 귀사에 어떤 이점을 제공할 수 있을지 논의하고 싶으시면 언제든지 문의해 주세요!