기본 구조
database
사용할 PostgreSQL 드라이버를 지정합니다. 타입:"pg" | "pgnative" (선택적)
기본값: "pg"
pg vs pgnative
-
"pg": 순수 JavaScript로 구현된 PostgreSQL 드라이버 (권장)- 설치:
pnpm add pg - 크로스 플랫폼 지원
- 대부분의 경우 충분한 성능
- Sonamu가 자동으로 Node.js TCP 소켓 레벨 keepAlive를 설정합니다 (
keepAlive: true,keepAliveInitialDelayMillis: 10000)
- 설치:
-
"pgnative": C 바인딩을 사용하는 네이티브 드라이버- 설치:
pnpm add pg-native - 더 빠른 성능 (특히 대량 데이터 처리)
- 컴파일 필요, 플랫폼 의존성
- Sonamu가 자동으로 connection 객체를 libpq 연결 문자열로 변환하며, TCP keepAlive 파라미터(
keepalives=1,keepalives_idle=10,keepalives_interval=10,keepalives_count=5)를 포함합니다
- 설치:
name
데이터베이스 이름을 지정합니다. 타입:string (필수)
defaultOptions
모든 환경에 공통으로 적용될 데이터베이스 설정입니다. Knex 설정 옵션을 사용합니다. 타입:DatabaseConfig (필수)
connection 설정
데이터베이스 연결 정보를 설정합니다.추가 Knex 옵션
connection 외에도 다양한 Knex 옵션을 설정할 수 있습니다:| 옵션 | 기본값 | 설명 |
|---|---|---|
propagateCreateError | false | 커넥션 생성 에러를 풀 전체로 전파하지 않습니다 |
idleTimeoutMillis | 10000 | 유휴 커넥션이 10초 후 자동으로 해제됩니다 |
reapIntervalMillis | 1000 | 유휴 커넥션 정리 주기를 1초로 설정합니다 |
acquireTimeoutMillis | 30000 | 커넥션 획득 대기 시간을 30초로 제한합니다 |
createTimeoutMillis | 30000 | 커넥션 생성 대기 시간을 30초로 제한합니다 |
afterCreate 콜백에서 각 커넥션에 대해 소켓 레벨 keepAlive 설정과 에러 핸들러를 등록합니다. 에러가 발생한 커넥션은 자동으로 풀에서 제외됩니다.
environments
환경별로 다른 데이터베이스 설정을 지정합니다.defaultOptions를 오버라이드합니다.
타입: (선택적)
환경별 설정 예시
현재 환경 결정
Sonamu는 다음 순서로 현재 환경을 결정합니다:NODE_ENV환경 변수- 기본값:
development
Slave DB 설정
읽기 전용 복제본(slave)을 사용하는 경우:Slave DB는 읽기 전용 쿼리에 사용되어 마스터 DB의 부하를 분산시킵니다.
실전 예시
기본 로컬 개발 설정
환경 변수 활용 (권장)
다중 환경 설정
Docker Compose 환경
연결 테스트
데이터베이스 설정이 올바른지 확인하려면:주의사항
1. 비밀번호 보안
2. 포트 번호 타입
3. 커넥션 풀 크기
다음 단계
데이터베이스 설정을 완료했다면:- server - 서버 옵션 및 플러그인 설정
- database/migrations - 마이그레이션으로 스키마 관리
- troubleshooting - 연결 문제 해결