Azure Database for PostgreSQL - 단일 서버의 PostgreSQL 확장

적용 대상: Azure Database for PostgreSQL - 단일 서버

PostgreSQL은 확장을 사용하여 데이터베이스의 기능을 확장하는 방법을 제공합니다. 확장은 단일 명령을 사용하여 데이터베이스에서 로드하거나 제거할 수 있는 단일 패키지에서 여러 관련 SQL 개체를 함께 번들로 묶습니다. 데이터베이스에 로드한 확장은 기본 제공 기능처럼 작동합니다.

PostgreSQL 확장을 사용하는 방법

PostgreSQL 확장을 사용하려면 먼저 데이터베이스에 설치해야 합니다. 특정 확장을 설치하려면 psql 도구에서 CREATE EXTENSION 명령을 실행하여 패키지 개체를 데이터베이스에 로드합니다.

Azure Database for PostgreSQL은 다음에 나열된 대로 주요 확장의 하위 집합을 지원합니다. 이 정보를 SELECT * FROM pg_available_extensions;를 실행하여 얻을 수도 있습니다. 나열된 확장 이외의 확장은 지원되지 않습니다. Azure Database for PostgreSQL에서 사용자 고유의 확장을 만들 수는 없습니다.

Postgres 11 확장

다음 확장은 Postgres 버전 11이 있는 Azure Database for PostgreSQL 서버에서 사용할 수 있습니다.

내선 번호 확장 버전 설명
address_standardizer 2.5.1 주소를 구성 요소로 구문 분석하는 데 사용됩니다.
address_standardizer_data_us 2.5.1 Address Standardizer US 데이터 세트 예제
btree_gin 1.3 GIN의 공통 데이터 형식 인덱싱 지원
btree_gist 1.5 GiST의 공통 데이터 형식 인덱싱 지원
citext 1.5 대/소문자를 구분하지 않는 문자열의 데이터 형식
cube 1.4 다차원 큐브에 대한 데이터 형식
dblink 1.2 데이터베이스 내에서 다른 PostgreSQL 데이터베이스에 연결
dict_int 1.0 정수에 대한 텍스트 검색 사전 템플릿
earthdistance 1.1 지구 표면의 대권거리 계산
fuzzystrmatch 1.1 문자열 간의 유사성 및 거리 결정
hstore 1.5 키/값 쌍 집합을 저장하기 위한 데이터 형식
hypopg 1.1.2 PostgreSQL에 대한 가상 인덱스
intarray 1.2 정수의 1차원 배열에 대한 함수, 연산자 및 인덱스 지원
isn 1.2 국제 제품 번호 지정 표준에 대한 데이터 형식
ltree 1.1 계층적 트리와 유사한 구조체에 대한 데이터 형식
orafce 3.7 상업적 RDBMS에서 함수 및 패키지의 하위 집합을 에뮬레이트하는 함수 및 연산자
pgaudit 1.3.1 감사 기능 제공
pgcrypto 1.3 암호화 함수
pgrouting 2.6.2 pgRouting 확장
pgrowlocks 1.2 행 수준 잠금 정보 표시
pgstattuple 1.5 튜플 수준 통계 표시
pg_buffercache 1.3 공유 버퍼 캐시를 검사합니다
pg_partman 4.0.0 시간 또는 ID로 분할된 테이블을 관리하기 위한 확장
pg_prewarm 1.2 관계 데이터 사전 준비
pg_stat_statements 1.6 실행된 모든 SQL 문의 실행 통계 추적
pg_trgm 1.4 트라이그램을 기반으로 하는 텍스트 유사성 측정 및 인덱스 검색
plpgsql 1.0 PL/pgSQL 절차적 언어
plv8 2.3.11 PL/JavaScript(v8) 신뢰할 수 있는 절차적 언어
postgis 2.5.1 PostGIS 기하학, 지리 및 래스터 공간 유형 및 함수
postgis_sfcgal 2.5.1 PostGIS SFCGAL 함수
postgis_tiger_geocoder 2.5.1 PostGIS 타이거 지오코더(tiger geocoder) 및 리버스 지오코더(reverse geocoder)
postgis_topology 2.5.1 PostGIS 토폴로지 공간 형식 및 함수
postgres_fdw 1.0 원격 PostgreSQL 서버에 대한 외부 데이터 래퍼(wrapper)
tablefunc 1.0 크로스탭을 포함한 전체 테이블을 조작하는 함수
timescaledb 1.7.4 시계열 데이터에 대한 확장성 있는 삽입 및 복잡한 쿼리를 사용합니다
unaccent 1.1 악센트를 제거하는 텍스트 검색 사전
uuid-ossp 1.1 UUID(범용 고유 식별자)를 생성합니다

Postgres 10 확장

다음 확장은 Postgres 버전 10이 있는 Azure Database for PostgreSQL 서버에서 사용할 수 있습니다.

내선 번호 확장 버전 설명
address_standardizer 2.5.1 주소를 구성 요소로 구문 분석하는 데 사용됩니다.
address_standardizer_data_us 2.5.1 Address Standardizer US 데이터 세트 예제
btree_gin 1.3 GIN의 공통 데이터 형식 인덱싱 지원
btree_gist 1.5 GiST의 공통 데이터 형식 인덱싱 지원
chkpass 1.0 자동으로 암호화된 암호에 대한 데이터 형식
citext 1.4 대/소문자를 구분하지 않는 문자열의 데이터 형식
cube 1.2 다차원 큐브에 대한 데이터 형식
dblink 1.2 데이터베이스 내에서 다른 PostgreSQL 데이터베이스에 연결
dict_int 1.0 정수에 대한 텍스트 검색 사전 템플릿
earthdistance 1.1 지구 표면의 대권거리 계산
fuzzystrmatch 1.1 문자열 간의 유사성 및 거리 결정
hstore 1.4 키/값 쌍 집합을 저장하기 위한 데이터 형식
hypopg 1.1.1 PostgreSQL에 대한 가상 인덱스
intarray 1.2 정수의 1차원 배열에 대한 함수, 연산자 및 인덱스 지원
isn 1.1 국제 제품 번호 지정 표준에 대한 데이터 형식
ltree 1.1 계층적 트리와 유사한 구조체에 대한 데이터 형식
orafce 3.7 상업적 RDBMS에서 함수 및 패키지의 하위 집합을 에뮬레이트하는 함수 및 연산자
pgaudit 1.2 감사 기능 제공
pgcrypto 1.3 암호화 함수
pgrouting 2.5.2 pgRouting 확장
pgrowlocks 1.2 행 수준 잠금 정보 표시
pgstattuple 1.5 튜플 수준 통계 표시
pg_buffercache 1.3 공유 버퍼 캐시를 검사합니다
pg_partman 2.6.3 시간 또는 ID로 분할된 테이블을 관리하기 위한 확장
pg_prewarm 1.1 관계 데이터 사전 준비
pg_stat_statements 1.6 실행된 모든 SQL 문의 실행 통계 추적
pg_trgm 1.3 트라이그램을 기반으로 하는 텍스트 유사성 측정 및 인덱스 검색
plpgsql 1.0 PL/pgSQL 절차적 언어
plv8 2.1.0 PL/JavaScript(v8) 신뢰할 수 있는 절차적 언어
postgis 2.4.3 PostGIS 기하학, 지리 및 래스터 공간 유형 및 함수
postgis_sfcgal 2.4.3 PostGIS SFCGAL 함수
postgis_tiger_geocoder 2.4.3 PostGIS 타이거 지오코더(tiger geocoder) 및 리버스 지오코더(reverse geocoder)
postgis_topology 2.4.3 PostGIS 토폴로지 공간 형식 및 함수
postgres_fdw 1.0 원격 PostgreSQL 서버에 대한 외부 데이터 래퍼(wrapper)
tablefunc 1.0 크로스탭을 포함한 전체 테이블을 조작하는 함수
timescaledb 1.7.4 시계열 데이터에 대한 확장성 있는 삽입 및 복잡한 쿼리를 사용합니다
unaccent 1.1 악센트를 제거하는 텍스트 검색 사전
uuid-ossp 1.1 UUID(범용 고유 식별자)를 생성합니다

Postgres 9.6 확장

다음 확장은 Postgres 버전 9.6이 있는 Azure Database for PostgreSQL 서버에서 사용할 수 있습니다.

내선 번호 확장 버전 설명
address_standardizer 2.3.2 주소를 구성 요소로 구문 분석하는 데 사용됩니다.
address_standardizer_data_us 2.3.2 Address Standardizer US 데이터 세트 예제
btree_gin 1.0 GIN의 공통 데이터 형식 인덱싱 지원
btree_gist 1.2 GiST의 공통 데이터 형식 인덱싱 지원
chkpass 1.0 자동으로 암호화된 암호에 대한 데이터 형식
citext 1.3 대/소문자를 구분하지 않는 문자열의 데이터 형식
cube 1.2 다차원 큐브에 대한 데이터 형식
dblink 1.2 데이터베이스 내에서 다른 PostgreSQL 데이터베이스에 연결
dict_int 1.0 정수에 대한 텍스트 검색 사전 템플릿
earthdistance 1.1 지구 표면의 대권거리 계산
fuzzystrmatch 1.1 문자열 간의 유사성 및 거리 결정
hstore 1.4 키/값 쌍 집합을 저장하기 위한 데이터 형식
hypopg 1.1.1 PostgreSQL에 대한 가상 인덱스
intarray 1.2 정수의 1차원 배열에 대한 함수, 연산자 및 인덱스 지원
isn 1.1 국제 제품 번호 지정 표준에 대한 데이터 형식
ltree 1.1 계층적 트리와 유사한 구조체에 대한 데이터 형식
orafce 3.7 상업적 RDBMS에서 함수 및 패키지의 하위 집합을 에뮬레이트하는 함수 및 연산자
pgaudit 1.1.2 감사 기능 제공
pgcrypto 1.3 암호화 함수
pgrouting 2.3.2 pgRouting 확장
pgrowlocks 1.2 행 수준 잠금 정보 표시
pgstattuple 1.4 튜플 수준 통계 표시
pg_buffercache 1.2 공유 버퍼 캐시를 검사합니다
pg_partman 2.6.3 시간 또는 ID로 분할된 테이블을 관리하기 위한 확장
pg_prewarm 1.1 관계 데이터 사전 준비
pg_stat_statements 1.4 실행된 모든 SQL 문의 실행 통계 추적
pg_trgm 1.3 트라이그램을 기반으로 하는 텍스트 유사성 측정 및 인덱스 검색
plpgsql 1.0 PL/pgSQL 절차적 언어
plv8 2.1.0 PL/JavaScript(v8) 신뢰할 수 있는 절차적 언어
postgis 2.3.2 PostGIS 기하학, 지리 및 래스터 공간 유형 및 함수
postgis_sfcgal 2.3.2 PostGIS SFCGAL 함수
postgis_tiger_geocoder 2.3.2 PostGIS 타이거 지오코더(tiger geocoder) 및 리버스 지오코더(reverse geocoder)
postgis_topology 2.3.2 PostGIS 토폴로지 공간 형식 및 함수
postgres_fdw 1.0 원격 PostgreSQL 서버에 대한 외부 데이터 래퍼(wrapper)
tablefunc 1.0 크로스탭을 포함한 전체 테이블을 조작하는 함수
timescaledb 1.7.4 시계열 데이터에 대한 확장성 있는 삽입 및 복잡한 쿼리를 사용합니다
unaccent 1.1 악센트를 제거하는 텍스트 검색 사전
uuid-ossp 1.1 UUID(범용 고유 식별자)를 생성합니다

Postgres 9.5 확장

참고

PostgreSQL 버전 9.5은 사용이 중지되었습니다.

다음 확장은 Postgres 버전 9.5가 있는 Azure Database for PostgreSQL 서버에서 사용할 수 있습니다.

내선 번호 확장 버전 설명
address_standardizer 2.3.0 주소를 구성 요소로 구문 분석하는 데 사용됩니다.
address_standardizer_data_us 2.3.0 Address Standardizer US 데이터 세트 예제
btree_gin 1.0 GIN의 공통 데이터 형식 인덱싱 지원
btree_gist 1.1 GiST의 공통 데이터 형식 인덱싱 지원
chkpass 1.0 자동으로 암호화된 암호에 대한 데이터 형식
citext 1.1 대/소문자를 구분하지 않는 문자열의 데이터 형식
cube 1.0 다차원 큐브에 대한 데이터 형식
dblink 1.1 데이터베이스 내에서 다른 PostgreSQL 데이터베이스에 연결
dict_int 1.0 정수에 대한 텍스트 검색 사전 템플릿
earthdistance 1.0 지구 표면의 대권거리 계산
fuzzystrmatch 1.0 문자열 간의 유사성 및 거리 결정
hstore 1.3 키/값 쌍 집합을 저장하기 위한 데이터 형식
hypopg 1.1.1 PostgreSQL에 대한 가상 인덱스
intarray 1.0 정수의 1차원 배열에 대한 함수, 연산자 및 인덱스 지원
isn 1.0 국제 제품 번호 지정 표준에 대한 데이터 형식
ltree 1.0 계층적 트리와 유사한 구조체에 대한 데이터 형식
orafce 3.7 상업적 RDBMS에서 함수 및 패키지의 하위 집합을 에뮬레이트하는 함수 및 연산자
pgaudit 1.0.7 감사 기능 제공
pgcrypto 1.2 암호화 함수
pgrouting 2.3.0 pgRouting 확장
pgrowlocks 1.1 행 수준 잠금 정보 표시
pgstattuple 1.3 튜플 수준 통계 표시
pg_buffercache 1.1 공유 버퍼 캐시를 검사합니다
pg_partman 2.6.3 시간 또는 ID로 분할된 테이블을 관리하기 위한 확장
pg_prewarm 1.0 관계 데이터 사전 준비
pg_stat_statements 1.3 실행된 모든 SQL 문의 실행 통계 추적
pg_trgm 1.1 트라이그램을 기반으로 하는 텍스트 유사성 측정 및 인덱스 검색
plpgsql 1.0 PL/pgSQL 절차적 언어
postgis 2.3.0 PostGIS 기하학, 지리 및 래스터 공간 유형 및 함수
postgis_sfcgal 2.3.0 PostGIS SFCGAL 함수
postgis_tiger_geocoder 2.3.0 PostGIS 타이거 지오코더(tiger geocoder) 및 리버스 지오코더(reverse geocoder)
postgis_topology 2.3.0 PostGIS 토폴로지 공간 형식 및 함수
postgres_fdw 1.0 원격 PostgreSQL 서버에 대한 외부 데이터 래퍼(wrapper)
tablefunc 1.0 크로스탭을 포함한 전체 테이블을 조작하는 함수
unaccent 1.0 악센트를 제거하는 텍스트 검색 사전
uuid-ossp 1.0 UUID(범용 고유 식별자)를 생성합니다

pg_stat_statements

pg_stat_statements 확장은 모든 Azure Database for PostgreSQL 서버에 미리 로드되어 SQL 문의 실행 통계를 추적하는 수단을 제공합니다. 확장을 통해 어떤 명령문을 계산할지 제어하는 pg_stat_statements.track 설정의 기본값은 top이며 이것은 클라이언트가 직접 실행하는 모든 명령문이 추적된다는 의미입니다. 다른 두 가지 추적 수준은 noneall입니다. 이 설정은 Azure Portal이나 Azure CLI를 통해 서버 매개 변수로 구성할 수 있습니다.

pg_stat_statements를 통해 제공되는 쿼리 실행 정보와 각 SQL 문을 기록할 때 서버 성능에 미치는 영향 사이에는 상충 관계가 있습니다. pg_stat_statements 확장을 적극적으로 사용하지 않는 경우에는 pg_stat_statements.tracknone으로 설정하는 것이 좋습니다. 일부 타사 모니터링 서비스가 pg_stat_statements에 기반하여 쿼리 성능 정보를 제공할 수 있으므로 여기에 해당하는 경우인지 여부를 확인하십시오.

dblinkpostgres_fdw를 사용하여 한 PostgreSQL 서버에서 다른 PostgreSQL 서버로, 또는 동일한 서버의 다른 데이터베이스로 연결할 수 있습니다. 받는 서버는 해당 방화벽을 통한 보내는 서버의 연결을 허용해야 합니다. 이러한 확장을 사용하여 Azure Database for PostgreSQL 서버 간을 연결하는 경우 "Azure 서비스에 대한 액세스 허용"을 켜기로 설정하여 이 작업을 수행할 수 있습니다. 확장을 사용하여 동일한 서버로 루프백하는 데도 이 작업이 필요합니다. "Azure 서비스에 대한 액세스 허용" 설정은 Postgres 서버의 Azure Portal 페이지에서 연결 보안 아래에 있습니다. “Azure 서비스에 대한 액세스 허용”을 설정하면 모든 Azure IP가 허용 목록에 배치됩니다.

참고

현재는 동일한 Azure 지역의 다른 Azure Database for PostgreSQL 서버에 대한 연결을 제외하고 postgres_fdw와 같은 외래 데이터 래퍼 확장을 통한 Azure Database for PostgreSQL의 아웃바운드 연결이 지원되지 않습니다.

uuid

만약 uuid_generate_v4()uuid-ossp 확장에서 사용하려는 경우, 성능 이점을 위해 pgcrypto 확장에서 gen_random_uuid()와 비교해보세요.

pgAudit

pgAudit 확장은 세션 및 개체 감사 로깅을 제공합니다. Azure Database for PostgreSQL에서 이 확장을 사용하는 방법을 알아보려면 감사 개념 문서를 참조하세요.

pg_prewarm

pg_prewarm 확장은 관계형 데이터를 캐시에 로드합니다. 캐시를 사전 준비하면 다시 시작 후 쿼리를 처음 실행할 때 더 나은 응답 시간을 보입니다. Postgres 10 이하에서는 사전 준비를 prewarm 함수를 사용하여 수동으로 수행합니다.

Postgres 11 이상에서는 사전 준비를 자동으로수행하도록 구성할 수 있습니다. pg_prewarm을 shared_preload_libraries 매개 변수 목록에 포함하고 변경 사항을 적용하기 위해 서버를 다시 시작해야 합니다. 매개 변수는 Azure Portal, CLI, REST API 또는 ARM 템플릿에서 설정할 수 있습니다.

TimescaleDB

TimescaleDB는 PostgreSQL용 확장으로 패키지된 시계열 데이터베이스입니다. TimescaleDB는 시계열 워크로드에 대한 시간 기반 분석 함수, 최적화 및 스케일링 Postgres를 제공합니다.

Timescale, Inc.의 등록 상표인 TimescaleDB에 대한 자세한 정보를 알아봅니다. Azure Database for PostgreSQL은 TimescaleDB Apache-2 버전을 제공합니다.

TimescaleDB 설치

TimescaleDB를 설치하려면 이를 먼저 서버의 미리 로드된 공유 라이브러리에 포함시켜야 합니다. Postgres의 shared_preload_libraries 매개 변수를 변경하려면 서버를 다시 시작해야 합니다. 매개 변수는 Azure Portal 또는 Azure CLI를 사용해서 바꿀 수 있습니다.

다음과 같이 Azure Portal을 사용합니다.

  1. Azure Database for PostgreSQL 서버를 선택합니다.

  2. 사이드바에서 서버 매개 변수를 선택합니다.

  3. shared_preload_libraries 매개 변수를 검색합니다.

  4. TimescaleDB를 선택합니다.

  5. 저장을 선택하여 변경 내용을 보존합니다. 변경 내용이 저장되면 알림을 받습니다.

  6. 알림이 오면 서버를 다시 시작하여 변경 내용을 적용합니다. 서버를 다시 시작하는 방법을 알아보려면 Azure Database for PostgreSQL 서버 다시 시작을 참조하세요.

이제 Postgres 데이터베이스에서 TimescaleDB를 사용할 수 있습니다. 데이터베이스에 연결하여 다음 명령을 실행합니다.

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

오류가 표시되면 shared_preload_libraries를 저장한 후 서버를 다시 시작했는지 확인합니다.

이제 TimescaleDB 하이퍼테이블을 처음부터 새로 만들거나 PostgreSQL에서 기존 시계열 데이터를 마이그레이션할 수 있습니다.

pg_dump 및 pg_restore를 사용하여 Timescale 데이터베이스 복원

pg_dump 및 pg_restore를 사용하여 Timescale 데이터베이스를 복원하려면 대상 데이터베이스에서 timescaledb_pre_restore()timescaledb_post restore()라는 두 개의 도우미 프로시저를 실행해야 합니다.

먼저 대상 데이터베이스를 준비합니다.

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database 
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

이제 원본 데이터베이스에서 pg_dump를 실행하고 그 다음 pg_restore를 실행합니다. 복원 후 복원된 데이터베이스에서 다음 명령을 반드시 실행하세요.

SELECT timescaledb_post_restore();

Timescale 지원 데이터베이스의 복원 방법에 대한 자세한 내용은 Timescale 설명서를 참조하세요.

timescaledb-backup을 사용하여 Timescale 데이터베이스 복원

위에 나열된 SELECT timescaledb_post_restore() 프로시저를 실행하는 동안 timescaledb.restoring 플래그를 업데이트하는 동안 권한이 거부될 수 있습니다. 이는 Cloud PaaS 데이터베이스 서비스에서 제한된 ALTER DATABASE 권한 때문입니다. 이 경우 timescaledb-backup 도구를 사용하여 Timescale 데이터베이스를 백업 및 복원하는 대체 방법을 수행할 수 있습니다. Timescaledb-backup은 TimescaleDB 데이터베이스를 더 간단하고 오류가 발생하기 쉬우며 성능이 향상되도록 덤프 및 복원하기 위한 프로그램입니다. 이렇게 하려면 다음을 수행해야 합니다.

  1. 여기에 설명된 대로 도구 설치
  2. 대상 Azure Database for PostgreSQL 서버 및 데이터베이스 만들기
  3. 위와 같이 Timescale 확장 사용
  4. ts-restore에서 사용할 사용자에게 azure_pg_admin 역할 부여
  5. ts-restore를 실행하여 데이터베이스 복원

이러한 유틸리티에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

참고

timescale-backup 유틸리티를 사용하여 Azure로 복원하는 경우 유연하지 않은 Azure Database for PostgresQL의 데이터베이스 사용자 이름은 <user@db-name> 형식을 사용해야 하므로 @%40 문자 인코딩으로 바꿔야 합니다.

다음 단계

사용하려는 확장이 표시되지 않으면 알려주세요. 피드백 포럼에서 기존 요청에 투표하거나 새 피드백 요청을 작성하세요.