피드로 돌아가기
5 gotchas I hit moving LLM logs from Postgres to ClickHouse
Dev.toDev.to
Database

Postgres에서 ClickHouse로의 LLM 로그 마이그레이션을 통한 저장 비용 및 쿼리 성능 최적화

5 gotchas I hit moving LLM logs from Postgres to ClickHouse

SPANLENS2026년 5월 27일10intermediate

Context

LLM Observability 플랫폼의 LLM 요청 로그가 급증함에 따라 Supabase Postgres의 저장소의 한계 직면. 특히 JSON Body의 낮은 압축률로 인한 백업 비용 상승과 대규모 데이터셋의 Date-range scan 성능 저하가 주요 병목 지점으로 분석됨.

Technical Solution

  • Columnar Storage 기반의 ClickHouse 도입을 통한 JSON Blob 압축 효율 극대화 및 Time-range scan 성능 확보
  • 관계형 데이터(Org, Billing 등)는 Postgres에 유지하고 대용량 로그 데이터만 ClickHouse로 분리하는 Polyglot Persistence 구조 설계
  • Write path의 가용성 확보를 위해 Postgres를 Durable Queue로 활용하는 Outbox-ish 패턴의 Fallback 구조 구축
  • Multi-tenant 데이터 유출 방지를 위해 Row-Level Security(RLS) 부재를 보완하는 Query Layer Helper 기반의 강제 Scope 주입 로직 구현
  • JavaScript Date 객체의 ISO 형식을 ClickHouse DateTime64 포맷으로 변환하는 전용 Helper 함수를 통한 데이터 정합성 유지
  • ClickHouse JSONEachRow 포맷의 숫자형 문자열 반환 문제를 해결하기 위한 데이터 타입 Coercion 계층 도입

- Write-heavy 및 Time-range query 중심의 워크로드인 경우 초기 단계부터 ClickHouse 도입 검토 - ClickHouse 도입 시 DateTime64 포맷 및 숫자형 데이터의 String 반환 특성을 고려한 Type Casting 레이어 설계 - RLS 미지원 DB 사용 시 Query Helper를 통한 Tenant Isolation 강제화 및 CI Lint 룰 적용 - 인프라 장애 대응을 위해 Write path에 Durable Queue 기반의 Fallback 메커니즘 구축 - 스키마 변경 시 유연성 확보를 위해 input_format_skip_unknown_fields 설정 활성화

원문 읽기