대용량 JSON 데이터 처리를 위한 PostgreSQL 및 Parquet 기반 S3 아카이빙 아키텍처 탐색

Exploring PostgreSQL to Parquet archival for JSON data with S3 range reads

작성자
발행일
2025년 10월 03일

핵심 요약

  • 1 PostgreSQL의 대용량 JSON 데이터 업데이트/삭제 시 발생하는 TOAST 메커니즘 및 autovacuum 성능 문제를 해결하기 위해 핫/콜드 데이터 분리 전략을 제안합니다.
  • 2 최신 데이터는 PostgreSQL 파티션에 유지하고, 오래된 데이터는 S3의 Parquet 파일로 아카이빙하여 `DROP PARTITION`으로 비용 효율적인 데이터 삭제를 구현합니다.
  • 3 S3에 저장된 Parquet 데이터는 PostgreSQL 카탈로그와 결합된 결정론적 샤딩 및 프레디케이트 푸시다운을 통해 효율적인 포인트 룩업과 I/O 최적화를 달성합니다.

도입

PostgreSQL에서 8KB를 초과하는 대용량 JSON 페이로드를 자주 업데이트하거나 삭제할 때 발생하는 성능 문제를 해결하기 위한 아키텍처를 제시합니다. 특히 TOAST 메커니즘으로 인해 발생하는 autovacuum 오버헤드를 줄이는 데 초점을 맞추며, 핫/콜드 데이터 분리 전략을 통해 PostgreSQL의 트랜잭션 처리 능력과 S3의 비용 효율적인 스토리지 및 분석 기능을 결합하는 방안을 모색합니다. 이는 대규모 JSON 데이터를 효율적으로 관리하기 위한 일반적인 패턴을 다룹니다.

본 아키텍처는 PostgreSQL의 대용량 JSON 데이터 처리 시 발생하는 TOAST 메커니즘 및 autovacuum 문제를 해결합니다. 8KB 초과 JSON 값의 잦은 업데이트/삭제는 데드 튜플 생성 및 과도한 I/O를 유발하여 성능 저하를 초래합니다.

이를 극복하기 위해 이중 계층 스토리지 접근 방식을 제안합니다.

핫/콜드 데이터 분리 및 관리

  • 핫 데이터: 최근 데이터는 PostgreSQL 일별 파티션에 유지하여 빠른 트랜잭션 접근을 지원합니다.

  • 콜드 데이터: 오래된 데이터는 S3의 Parquet 파일로 아카이빙하여 비용 효율적인 장기 보관 및 분석에 활용합니다.

  • DROP PARTITION: PostgreSQL에서 DELETE 대신 DROP PARTITION을 사용하여 autovacuum 사이클을 회피하고 I/O 부담을 줄입니다.

Parquet 기반 S3 스토리지 최적화

  • 파일 구조: PostgreSQL 컬럼을 Parquet 포맷에 매핑하며, 로우 그룹 통계로 프레디케이트 푸시다운을 가능케 합니다.

  • 결정론적 샤딩: payload_id 해시 함수를 통해 데이터를 샤드에 분산시키고, 계층적 S3 키 구조로 파일을 구성하여 파티션 푸르닝을 지원합니다. 파일은 128-256MB로 분할하고 1-4MB 로우 그룹으로 압축, HTTP 범위 요청에 최적화됩니다.

메타데이터 카탈로그 및 동기화

PostgreSQL에 s3_file_catalogs3_row_groups 테이블을 유지하여 S3 파일 및 로우 그룹 메타데이터를 캐싱합니다. 카탈로그는 Parquet 푸터 파싱 및 통계 디코딩 없이 빠른 포인트 룩업을 지원합니다. 파티션 데이터는 스트리밍으로 Parquet 파일로 작성되며, 완료 후 메타데이터가 PostgreSQL 카탈로그에 기록됩니다.

이러한 접근 방식은 PostgreSQL이 ACID 트랜잭션과 활성 데이터 관리에 집중하고, S3와 Parquet이 비용 효율적인 저장 및 분석 쿼리를 처리하도록 역할을 분리하여 각 시스템의 최적 성능을 활용합니다.

결론

본 아키텍처는 PostgreSQL의 대용량 JSON 데이터 처리 시 발생하는 autovacuum 문제를 효과적으로 해결하며, 핫/콜드 데이터 분리 및 `DROP PARTITION` 활용을 통해 I/O 효율성을 극대화합니다. S3에 Parquet 형식으로 저장된 콜드 데이터는 PostgreSQL 카탈로그와 결합된 결정론적 샤딩 및 프레디케이트 푸시다운을 통해 100-200ms 수준의 예측 가능한 포인트 룩업 성능을 제공합니다. 비록 운영 복잡성 증가 및 아카이빙된 데이터의 업데이트/삭제 비용 상승이라는 트레이드오프가 존재하지만, 이는 주로 읽기 중심의 대용량 JSON 워크로드에 매우 적합한 솔루션으로 평가됩니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!