Azure Database for PostgreSQL - 유연한 서버의 확장 및 모듈

PostgreSQL의 확장 및 모듈은 데이터베이스 시스템의 기능을 확장하는 데 사용할 수 있는 강력한 도구입니다. 간단한 SQL 개체에서 복잡한 이진 라이브러리에 이르기까지 다양하며 핵심 PostgreSQL 배포에서 사용할 수 없는 추가 기능과 기능을 제공합니다.

확장 프로그램

확장을 정의하려면 확장에 의해 배포된 개체를 만드는 SQL 명령이 포함된 스크립트 파일 하나 이상과 확장 자체의 기본 속성을 지정하는 컨트롤 파일이 하나 이상 필요합니다.

데이터베이스에서 확장을 만들거나 설치하거나 로드할 때 엔진의 기능을 확장하는 것을 목표로 하는 번들 개체 집합을 배포합니다. 이러한 개체는 함수, 연산자, 역할, 데이터 형식, 액세스 메서드 및 기타 데이터베이스 개체 형식일 수 있습니다.

데이터베이스에서 확장을 삭제, 제거 또는 언로드하면 이 프로세스는 확장에서 만든 모든 개체를 제거합니다. 이 경우 예외는 확장에서 정의한 개체에 대한 종속성이 있는 다른 개체가 데이터베이스에 있는 경우입니다.

SQL 또는 PL/pgSQL에서 확장에 의해 배포된 개체에서 제공하는 기능의 구현을 작성할 수 있습니다. 그러나 기능을 구현하는 소스 코드(일반적으로 C 또는 Rust로 작성됨)를 컴파일한 결과인 별도의 공유 라이브러리(이진) 파일에서 구현할 수도 있습니다.

PostgreSQL에서는 , CREATE EXTENSIONALTER EXTENSIONDROP EXTENSION 명령을 통해 COMMENT ON EXTENSION확장을 관리합니다.

  • CREATE EXTENSION 는 명령을 실행하는 데이터베이스에 확장을 만들거나 설치하거나 로드합니다.
  • ALTER EXTENSION 는 확장을 최신 버전으로 업데이트합니다.
  • DROP EXTENSION 명령을 실행하는 데이터베이스에서 확장을 삭제, 제거 또는 언로드합니다.
  • COMMENT ON EXTENSION 는 확장에 대한 주석을 데이터베이스 개체로 저장합니다.

서버가 시작되면 모든 백 엔드 프로세스에서 액세스할 수 있는 메모리 영역을 정의하여 모든 워크로드를 협조적으로 실행합니다. PostgreSQL 전문 용어에서 해당 메모리 영역을 공유 메모리라고 합니다.

공유 라이브러리를 사용하여 기능을 구현하는 일부 확장은 해당 라이브러리에 빌드된 코드에서 해당 공유 메모리 영역에 액세스해야 합니다. 이러한 확장에는 서버가 시작되는 즉시 주 엔진 프로세스에서 공유 라이브러리 파일을 로드해야 한다는 요구 사항이 하나 더 있습니다. 이러한 라이브러리의 경우 로드 라이브러리의 지침을 따릅니다.

모듈

데이터베이스에 번들된 SQL 개체를 배포할 컨트롤 파일스크립트 파일이 없기 때문에 확장으로 간주되지 않지만 PostgreSQL의 또 다른 확장성 형식은 독립 실행형 공유 이진 라이브러리 파일에서 기능을 구현하고 있습니다.

서버가 시작될 때 이러한 파일을 메모리에 로드할 수 있습니다. 일반적으로 PostgreSQL의 자연 실행 경로를 우회하여 엔진의 기본 기능을 변경하는 코드를 구현할 수 있습니다. 이러한 동작 변경은 일반적으로 엔진의 일부 제한된 기능을 증폭하는 것을 목표로 합니다.

Azure Database for PostgreSQL은 다음 모듈을 지원합니다.

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json