PostgreSQL을 데이터 웨어하우스로 사용하기
(narrator.ai)데이터분석을 통한 의사결정 지원시스템 Narrative가 경험을 통해 정리한 주요 트윅들
- 프로덕션 시스템과 같은 서버 사용하지 말 것
- PG 12+로 업그레이드(CTE 사용하지 말 것)
- 인덱스는 가능한 작게
- 테이블 파티셔닝(range/list)
- 디스크 I/O 최소화
- 벌크 인서트 후 Vacuum
- 병렬 쿼리 사용하기
- 통계 샘플링을 증가시키기 (컬럼별 또는 DB 전체. 기본값 100 이지만 500)
- 더 적은 컬럼 사용하기 (row 기반 저장이기 때문)
* 5천만~1억로우 테이블에서는 Postgres가 훌륭하게 동작
* 10억단위로 스케일하게 될때는 Citus 를 추천
ㅤ→ https://www.citusdata.com : Postgres를 분산 DB로 바꿔주는 오픈소스
경험적으로 보면 시계열 기반일때는 timescaledb 가 더 나을거라고 생각하긴 하는데, 근거할만한 자료가 없으니 조심스럽긴 하네요. 압축률, 성능 면에서는 timescaledb 가 더 낫지 않을까 조심스레 의견 남겨봅니다.
제가 알고 있기로 timescaledb 는 시계열로 파티셔닝하는 방식에 장점이 있고 citus 는 샤딩에 장점이 있어서... (그러고보니 둘을 같이 사용하는 것도 불가능하지는 않으려나요?)