다음을 통해 공유


확장 및 모듈

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

확장

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

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

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

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

PostgreSQL에서 확장은 , ALTER EXTENSIONDROP EXTENSIONCOMMENT ON EXTENSION 명령을 통해 CREATE 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