일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- validator
- 개발자
- 독후감
- Study
- 북스터디
- nodejs
- 퓨처셀프
- 클린코드
- 역행자
- Validation
- Nestjs
- serverless
- 오브젝트
- 일상속귀한배움
- 조영호
- 부자아빠가난한아빠2
- AWS
- Object
- futureself
- typescript
- 자청
- UNiQUE
- googleapis
- BOOK
- PRISMA
- 스터디
- 세이노의가르침
- nodemailer
- 객체지향의사실과오해
- OOP
- Today
- Total
우당탕탕 우리네 개발생활
[postgresql] pg_bigm extension적용하기(feat. MacOS) 본문
최근 회사에서 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을 적용해보는 것 자체가 걸림돌이었습니다. 아래 레퍼런스들을 통해 감사하게도 지식을 습득하는 데 도움을 받았습니다.
사전 지식
본격적인 적용 절차는 아래와 같습니다.
절차
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환경에 적용해보는 과정을 공유해봤습니다. 제가 레퍼런스들을 찾아보며 얻은 방법이 누군가에게 도움이 되었으면 좋겠습니다. 감사합니다.
'tech' 카테고리의 다른 글
[Slack] Console에서 Incoming Webhook 생성해보기 (1) | 2024.02.24 |
---|---|
[Nestjs] ! 과 ? 그리고 class-validator에 대한 고찰 (0) | 2024.02.23 |
Postman + OpenAPI + Redocly + Github Page = Fancy한 API문서 (1) | 2023.11.14 |
[Nestjs] validator 적용해보기(feat. mongoId) (1) | 2023.11.11 |
[Nestjs] mongoose와의 조합은 환상이다(feat. configuration) (0) | 2023.11.10 |