엔터프라이즈DB, ‘포스트그레SQL 14’ 기능 강화
엔터프라이즈DB, ‘포스트그레SQL 14’ 기능 강화
  • 박시현 기자
  • 승인 2021.10.12 12:36
  • 댓글 0
이 기사를 공유합니다

보안 강화, 관리 편의성 향상, 파티션 확장으로 대용량 DB 처리 등

[디지털경제뉴스 박시현 기자] 오픈 소스 데이터베이스 포스트그레SQL(PostgreSQL)을 기반으로 소프트웨어와 서비스를 제공하는 엔터프라이즈DB는 '포스트그레SQL 14'의 기능 향상을 위해 보안 강화, 관리 편의성 향상, 확장성, 표준화 등을 지원한다고 밝혔다.

◾보안: 신규 사용자가 중요한 보안 기능을 최대한 활용할 수 있도록 ‘password_encryption’ 파라미터의 기본 설정은 SCRAM-SHA-256이며, MD5는 사용을 권장하지 않는다. pgbouncer와 포스트그레SQL에서 암호가 훨씬 더 길어질 수 있기 때문에 사용자는 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)를 막는 매개변수 변경으로 인해 서버 셧다운이 발생하는 대신, 복제가 중지됨으로써 서버 가용성이 더욱 향상됐다. 또한, 다양한 추가 모니터링 기능을 통해 서버가 수행하는 작업과 현재 서버의 정확한 상태를 파악할 수 있다.

◾확장성 및 성능: ‘포스트그레SQL 14’는 파티션 수가 많은 테이블에서의 업데이트 및 삭제 기능이 크게 향상됐다. 이같은 경우에 옵티마이저의 부하을 크게 줄일 수 있고, 파티션 테이블의 업데이트/삭제 작업에도 파티션 프루닝(partition pruning, 전체 테이블이 아닌 파티션 몇 개에만 접근해서 결과를 도출하는 방식)이 가능하다.

가장 중요한 것은 이전보다 훨씬 더 많은 숫자의 파티션 확장을 통해 포스트그레SQL이 기존보다 더 큰 데이터베이스를 처리할 수 있다는 점이다. 또한, 파티션을 온라인으로 분리(detech)할 수 있어 대규모 시계열 데이터 테이블을 보다 용이하게 관리할 수 있다. 새로운 date_bin()을 통해 사용자들은 시계열 데이터를 날짜 범위로 더 쉽게 그룹핑 할 수 있으며, 일반적으로 사용되는 윈도우 펑션을 보다 유연한 데이터 유형으로 손쉽게 사용할 수 있다.

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

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

페이지 가시성 비트(page visibility bits)를 업데이트함으로써 더 효과적인 실행이 가능한 FREEZE 옵션과 카피 명령이 향상됨으로써 데이터 로드 성능도 크게 개선됐다.

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

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

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

SEARCH 및 CYCLE 클로즈에 의해 그래프-쿼리 지원 기능이 향상됐으며, 이를 통해 포스트그레SQL에서 복잡한 그래프 쿼리를 보다 용이하게 작성할 수 있다. 이러한 기능도 SQL 스탠더드에 포함돼 있다.

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

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

◾샤딩(Sharding, 데이터 분산): 여러 외부 테이블을 참조하는 쿼리는 외부 테이블 스캔을 병렬로 수행할 수 있다. 이에 async_capable이 설정된 경우, 이러한 방식의 스캔에 대한 postgres_fdw 지원 성능이 크게 향상됐다. 이는 미래의 멀티-노드 분석을 위한 지원 기능이다.

또한 연결 캐싱(Connection cacheing)을 사용하면 트랜잭션 전반에서 연결 상태를 계속 오픈 상태로 열어둠으로써 성능을 더욱 향상시킬 수 있다.

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

엔터프라이즈DB는 또한 복제 복구 제어(replication recovery control) 및 포스트그레SQL 데이터베이스의 손상을 확인하기 위한 pg_amcheck와 같은 진단 기능 등 다양한 기능 향상에 참여했다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.