우당탕탕 우리네 개발생활

[postgresql] pg_bigm extension적용하기(feat. MacOS) 본문

tech

[postgresql] pg_bigm extension적용하기(feat. MacOS)

미스터카멜레온 2023. 12. 25. 12:45

최근 회사에서 pg_bigm이라는 extension을 사용할 일이 생겼습니다. 그 이유는 아래와 같습니다.

Why?

  • 현재 AWS RDS 내 aurora/postgreSql은 pg_bigm extension을 내장하고 있음.
  • 우리가 사용하고 있는 Dev DB와 Prod DB는 모두 위 환경을 사용하고 있고, 손쉽게 pg_bigm을 적용하여 사용할 수 있음.
  • Dev와 Prod 환경에서 인덱스 생성 등 여러방면으로 pg_bigm을 이용하고 있음.
  • 이는 특히 prisma를 이용하게 되면서 prisma와 pg_bigm extension간의 종속성이 생기게 되었음.
  • pg_bigm은 일반 postgreSql을 설치했을 때 내장되어 있는 extension이 아님.
  • Local환경으로 구축한 postgreSql에 pg_bigm extension을 설치하지 않으면 prisma를 통해 스키마를 migrate하는 과정에서 문제가 발생함.
  • 이는 작업상 큰 걸림돌이 됨.

애초에 postgreSql을 사용해보지 않은 상태였던 저에게 extension을 적용해보는 것 자체가 걸림돌이었습니다. 아래 레퍼런스들을 통해 감사하게도 지식을 습득하는 데 도움을 받았습니다.

사전 지식

- pg_bigm이란?

- postgreSql extension이란?

 

본격적인 적용 절차는 아래와 같습니다.

절차

1. docker 컨테이너 접속

docker exec -it <CONTAINER_NAME> bash

2. apt-get 업데이트

apt-get update

apt 혹은 apt-get을 이용하면 되는데, update하지 않으면 에러가 발생하면서 다른 패키지설치가 안되는 경우가 있습니다.

3. GNU-make 패키지 설치

apt-get install gcc make

GNU-make를 통해 extension패키지 컴파일을 할 것입니다.(gcc make가 GNU-make를 의미합니다)

4. postgresql-server-dev 패키지 설치

// XX는 원하는 버젼(ex. 16)
apt-get install postgresql-server-dev-XX

추후 Makefile을 통해 컴파일할 때 필요한 postgres.h파일을 준비하기 위함입니다.

5. pg_bigm 공식 git 리포지토리에서 다운로드 받기

branch변경을 통해 원하는 버전을 선택하여 다운로드 받으면 됩니다.

원하는 버전이 구체적으로 없으면 최신 버전인 1.2를 다운로드 받으시면 됩니다.

6. docker desktop 이용

저는 파일을 컨테이너 내부로 import하는 과정의 편의성을 위해서 docker desktop을 사용했습니다.

먼저 usr/share/postgresql/16/extension경로에 공식 리포지토리에서 다운로드 받은 파일을 압축을 풀어서 import 합니다. (압축을 푼 루트폴더 자체를 import하면 됩니다.)

이후 터미널을 통해 import한 루트 폴더 내부에서 아래 명령어 수행합니다.

make USE_PGXS=1

 

사진과 같이 Makefile 내부 코드를 보게 되면 USE_PGXS라는 파라미터를 넘기느냐 아니냐로 조건이 갈립니다.

현재 구조에서는 Makefile.global파일과 contrib-global.mk파일이 셋팅이 되어있지 않기 때문에 USE_PGXS=1 옵션을 주지 않으면 에러가 발생하며 컴파일이 완료되지 않습니다.

make USE_PGXS=1 install

 

install 명령어는 컴파일이 완료되어 생긴 파일들을 직접 extension환경에 적용해주는 역할을 합니다.

이렇게 되면 적어도 postgreSql 환경 내 적용가능한 extension의 상태가 됩니다.

7. pgadmin4 통해서 PG_AVAILAble_EXTENSIONS 에 pg_bigm 존재하는 지 확인합니다.

pgadmin4를 이용하지 않고 다른 툴들을 이용하신다고 해도 무방합니다.

8. CREATE EXTENSION pg_bigm 쿼리를 수행합니다.

9. PG_EXTENSION 에 bg_bigm 정상적으로 보이는지를 확인합니다.

이렇게 pg_bigm extension을 Local postgreSql환경에 적용해보는 과정을 공유해봤습니다. 제가 레퍼런스들을 찾아보며 얻은 방법이 누군가에게 도움이 되었으면 좋겠습니다. 감사합니다.