2020년 2월 13일 ObjectRocket.com/blog에 처음 게시된 글입니다.
PostgreSQL®(Postgres®)의 확장(Extension) 생태계는 매우 강력하며, Postgres에 다양한 추가 기능을 제공합니다.
ObjectRocket 플랫폼에서 프로덕션 데이터베이스를 운영하는 데 필요한 모든 도구를 제공하고자, 최근 확장 기능을 사용할 수 있도록 지원을 추가했습니다. 확장은 플러그인처럼 작동하며, 추가적인 기능과 특성을 제공합니다.
사용 가능한 확장 목록 확인하기
ObjectRocket은 Postgres 인스턴스에 여러 확장을 포함하고 있으며, 가장 많이 사용되고 요청되는 플러그인들을 지원하고 있습니다. 지원되는 플러그인 목록을 확인하려면 서비스에서 실행 중인 인스턴스에 접속한 후 다음 쿼리를 실행하세요.
SELECT * FROM pg_available_extensions;: postgres 확장 디렉터리에 있는 모든 확장의 전체 목록을 보여줍니다.SHOW extwlist.extensions;: ObjectRocket 서비스에서 허용된 확장 목록을 보여줍니다.
Postgres 패키지에는 기본적으로 일부 확장이 포함되어 있지만, 이 중 일부는 사용자에게 접근 권한을 제공하지 않기 때문에 두 목록은 약간 차이가 있습니다. 만약 화이트리스트에 없거나 아예 제공되지 않는 확장이 필요하다면, 지원(Support) 팀에 문의하여 해당 확장을 플랫폼에 추가할 수 있습니다.
또한 새로운 확장이 수시로 추가되고 있으므로, 위 쿼리를 직접 실행하는 것이 항상 가장 최신 목록을 확인하는 방법입니다. 다음은 현재 ObjectRocket 서비스에서 사용 가능하며 허용된 확장 목록입니다.
확장 로드하기
서비스에서 확장을 로드하는 방법은 일반적인 Postgres에서와 동일합니다. 기능을 추가하려는 데이터베이스에서 CREATE EXTENSION 명령을 실행하면 됩니다.
간단한 예시를 살펴보겠습니다. uuid-ossp 확장은 UUID를 관리하는 유틸리티를 제공합니다. 다음 예시 이미지는 uuid_generate_v1() 함수를 사용하려고 시도하는 모습입니다.

보시다시피, 처음에는 확장을 로드하지 않았기 때문에 함수 호출이 실패합니다. 하지만 uuid-ossp 확장을 로드한 후 동일한 함수를 다시 실행하면 정상적으로 UUID가 반환되는 것을 확인할 수 있습니다.
물론 이것은 매우 간단한 예시일 뿐입니다. 확장은 훨씬 더 다양한 작업을 수행할 수 있지만, 기본적인 동작 방식은 이와 같습니다.
확장 사용 시 주의사항
확장은 해당 확장을 로드한 데이터베이스에서만 활성화되고 사용할 수 있다는 점에 유의해야 합니다. 즉, 새 데이터베이스를 생성할 때마다 그 데이터베이스에서 CREATE EXTENSION을 다시 실행해야 합니다.
새로 생성되는 데이터베이스에 특정 확장이 자동으로 포함되기를 원한다면, 다음 두 가지 방법 중 하나를 선택할 수 있습니다.
- 확장이 포함된 새로운 데이터베이스 템플릿을 생성하고, 새 데이터베이스 생성 시 해당 템플릿을 사용하는 방법
- template1 데이터베이스에 해당 확장을 미리 설치해두는 방법
기본적으로 모든 새 데이터베이스는 template1의 복사본으로 생성되기 때문입니다.
새로운 확장 기능을 마음껏 활용해 보시고, 추가로 필요한 기능이 있다면 언제든지 알려주세요.
피드백 탭을 통해 의견을 남기거나 질문할 수 있으며, 언제든지 저희와 대화를 시작하실 수 있습니다.