엔터프라이즈DB, 오픈소스 DB ‘PostgreSQL 14’ 지원

보안 강화와 관리 편의성 향상, 성능, 확장성, 표준화 등 지원





오픈소스 PostgreSQL의 최대 지원 기업인 엔터프라이즈DB(EDB, 지사장 이강일)는 새롭게 발표된 오픈소스 DB인 '포스트그레SQL(PostgreSQL) 14'의 보안 강화와 관리 편의성 향상, 성능, 확장성, 표준화 등을 지원한다고 밝혔다.


엔터프라이즈DB(EDB)는 오픈소스 DB인 ' PostgreSQL 14'의 기능 향상을 위해 보안 강화와 관리 편의성 향상, 성능, 확장성, 표준화 등을 지원했다. 주요 내용은 다음과 같다.

-보안: 신규 사용자가 중요한 보안 기능을 최대한 활용할 수 있도록 ‘password_encryption’ 파라메터의 기본 설정은 SCRAM-SHA-256 이며, MD5는 사용을 권장하지 않는다. pgbouncer와 PostgreSQL에서 암호가 훨씬 더 길어질 수 있기 때문에 사용자는 SCRAM-SHA-256이 제공하는 보안 이점을 최대한 활용할 수 있다. 또한, SSL 인증서의 DN(distinguished name)을 클라이언트 인증서(client certificate authentication)와 일치시키고, SSL 연결 패킷에 SNI(Server Name Indication)를 추가했다.

-관리 편의성: VACUUM은 제거 가능한 인덱스 항목 수가 많지 않은 경우, 인덱스 베큐밍(vacuuming)을 건너뛸 수 있다. vacuum 매개변수 INDEX_CLEANUP에는 이러한 최적화를 지원하는 ‘auto’라는 새로운 기본값이 있다. 이제 최소-잠금(minimal-locking) 인덱스 작업 혹은 테이블이 xid 또는 multixact wraparound 임계값에 근접하는 경우, 데드 로우(dead rows)를 제거하는데 vacuum 기능을 보다 적극적으로 사용할 수 있다. 이는 vacuum_failsafe_age 및 vacuum_multixact_failsafe_age 매개변수에 의해 제어가 가능하다. 또한, 대기 서버에서 복제(replay)를 막는 매개변수 변경으로 인해 서버 셧다운(shutdown)이 발생하는 대신, 복제(replay)가 중지됨으로써 서버 가용성이 더욱 향상되었다. 또한, 다양한 추가 모니터링 기능을 통해 서버가 수행하는 작업과 현재 서버의 정확한 상태를 파악할 수 있다.

-확장성 및 성능: ‘PostgreSQL 14’는 파티션 수가 많은 테이블에서의 업데이트 및 삭제 기능이 크게 향상되었다. 이같은 경우에 옵티마이저의 부하을 크게 줄일 수 있고, 파티션 테이블의 업데이트/삭제 작업에도 파티션 프루닝(partition pruning, 전체 테이블이 아닌 파티션 몇 개에만 접근해서 결과를 도출하는 방식)이 가능하다. 가장 중요한 것은 이전보다 훨씬 더 많은 숫자의 파티션 확장을 통해 PostgreSQL이 기존보다 더 큰 데이터베이스를 처리할 수 있다는 점이다.

-또한, 파티션을 온라인으로 분리(detech)할 수 있어 대규모 시계열 데이터 테이블을 보다 용이하게 관리할 수 있다. 새로운 date_bin()을 통해 사용자들은 시계열 데이터를 날짜 범위로 더 쉽게 그룹핑 할 수 있으며, 일반적으로 사용되는 윈도우 펑션을 보다 유연한 데이터 유형으로 손쉽게 사용할 수 있다.

대규모 JSON 및 XML 도큐먼트가 있는 애플리케이션에는 TOASTed 데이터에 대한 새로운 압축 옵션인 LZ4가 제공된다. 이 새로운 방법은 최신 압축 기술을 통해 도큐먼트 데이터의 압축 및 압축 해제 속도를 크게 향상시킨다.

-애플리케이션 성능 튜닝 및 인덱스(Application performance tuning and indexes): ‘PostgreSQL 14’은 인덱스 관리를 통한 애플리케이션 튜닝 기능이 크게 향상되었다. 특히, CREATE INDEX CONCURRENTLY 및 REINDEX CONCURRENTLY는 동시에 여러 명령을 실행할 때 서로 영향을 주지 않으며, 다른 릴레이션(relations)의 데드 로우(dead row) 제거를 제한 하지도 않는다.

페이지 가시성 비트(page visibility bits)를 업데이트함으로써 더 효과적인 실행이 가능한 FREEZE 옵션과 COPY 명령이 향상됨으로써 데이터 로드 성능도 크게 개선되었다. Binary-mode COPY도 한층 빨라졌다.

BRIN 인덱스도 몇몇 기능이 향상되었다. 범위당 여러 개의 최소/최대 값을 기록할 수 있어 더욱 유연한 사용이 가능하며, 이는 각 페이지 범위에 값 그룹(groups of values)이 있을 때 유용하다. BRIN 인덱스는 이제 블룸 필터(bloom filters)를 사용할 수 있다. 이를 통해 BRIN 인덱스는 힙(heap)에서 로컬라이제이션이 되지 않거나 업데이트로 인해 영향을 받는 데이터와 함께 효과적으로 사용될 수 있다.

머티리얼라이즈드 뷰(materialized view), 성능 향상을 위해 병렬 쿼리를 사용할 수 있다.

-확장된 통계를 사용하여 복잡한 쿼리 프로세싱 향상(Complex query processing improvements using extended statistics): PostgreSQL은 힌트를 이용한 쿼리 성능 제어를 제공하지 않았었다. 옵티마이저 문제를 해결하기 위한 최선의 장기적 접근방식은 데이터 자체에 초점을 둔 선언적(declarative) 방식이다. EDB 기여자들은 CREATE STATISTICS 명령어를 처음 개척했으며, 이 선언적(declarative) 접근방식을 지속적으로 향상시키고 있다. ‘PostgreSQL 14’에서는 확장된 통계를 OR 클로즈 추정(clause estimation) 및 표현식(expression)에 사용할 수 있는 위치(places)의 수가 늘어났다. 이를 통해 이전과 같은 열(columns)뿐만 아니라, 표현식(expressions) 및 열(columns) 그룹에 대한 통계가 가능하다. 시스템 뷰 pg_stats_ext_exprs는 이러한 통계 결과를 제공한다.

-표준화: 개방성(openness)과 표준화(standardization)에 대한 EDB의 헌신은 SQL 스탠다드(SQL Standard) 지원의 최신 개선사항에서도 잘 나타난다. LANGUAGE SQL을 사용하는 서버 측 함수(functions) 및 프로시저(procedures)는 이전에는 문자열 리터럴(string-literal) 함수 본문만 지원 했는데, 이제 SQL 스탠다드(SQL Standard) 호환 함수 본문을 사용할 수 있다. SQL 스탠다드 구문으로 함수나 프로시저를 작성할 때 본문은 즉시 파싱(parsed) 되어 파스 트리(parse tree)로 저장된다. 이를 통해 함수 종속성(function dependencies)을 보다 효과적으로 추적할 수 있으며, 보안 이점도 누릴 수 있다.

SEARCH 및 CYCLE 클로즈에 의해 그래프-쿼리 지원 기능이 향상되었으며, 이를 통해 PostgreSQL에서 복잡한 그래프 쿼리를 보다 용이하게 작성할 수 있다. 이러한 기능도 SQL 스탠다드(SQL Standard)에 포함되어 있다. SQL 스탠다드(SQL Standard)의 최근 개발 사항도 추후 반영될 것이다.

향상된 논리 복제(logical replication): 구독자(Subscribers) 또는 API를 통해 진행 시간이 긴 트랜잭션을 스트리밍할 수 있도록 논리 복제(Logical replication) 기능이 향상되었다. 이전에는 트랜잭션이 모두 완료될 때까지 logical_decoding_work_mem보다 큰 트랜잭션은 디스크에 기록되었으며, 이는 상당한 영향을 미칠 수 있었다.

논리 복제(Logical replication)는 많은 수의 DDL 스테이트먼트(DDL statements)를 보다 손쉽게 처리할 수 있다. 캐시 무효화(Cache invalidation) 메시지는 논리 복제를 사용할 때 각 명령 후에 WAL에 작성되기 때문에 진행 중인 트랜잭션을 스트리밍하여 처리할 수 있다.

-샤딩(데이터 분산: Sharding): 여러 외부 테이블을 참조하는 쿼리는 외부 테이블 스캔을 병렬로 수행할 수 있다. 이에 async_capable이 설정된 경우, 이러한 방식의 스캔에 대한 postgres_fdw 지원 성능이 크게 향상되었다. 이는 미래의 멀티-노드 분석을 위한 지원 기능이다. 또한 연결 캐싱(Connection cacheing)을 사용하면 트랜잭션 전반에서 연결 상태를 계속 오픈 상태로 열어둠으로써 성능을 더욱 향상시킬 수 있다.

또한, Libpq pipeline 모드를 사용하면 각 명령에서 네트워크 컨펌을 기다리지 않고 변경 사항에 대한 스트림을 전송할 수 있어 분산 데이터베이스의 성능을 크게 향상시킬 수 있다.

또한, EDB는 복제 복구 제어(replication recovery control) 및 PostgreSQL 데이터베이스의 손상을 확인하기 위한 pg_amcheck와 같은 진단 기능을 포함하여 다양한 기능 향상에 참여했다.


<저작권자 ⓒ 서울경제, 무단 전재 및 재배포 금지>