WEBBOOK CHAPTER

실무 스프링 배치 6: 25장. PostgreSQL Writer와 대사

25장. PostgreSQL Writer와 대사

H2는 unit·smoke용이다. 운영 의미는 PostgreSQL integration test에서 확인한다. 문법, type, isolation과 lock이 다르다. 대량 작업은 staging table에 load한 뒤 validation과 set-based upsert를 분리할 수 있다.


insert into settlement(order_id,business_date,gross_amount,fee_amount,net_amount,input_checksum)
values (:orderId,:date,:gross,:fee,:net,:checksum)
on conflict (order_id,business_date) do update
set gross_amount=excluded.gross_amount,
    fee_amount=excluded.fee_amount,
    net_amount=excluded.net_amount
where settlement.input_checksum=excluded.input_checksum;

기존 checksum이 다르면 조용히 덮지 않고 conflict table로 보낸다. 대사는 source row/gross, rejected, output row/gross/fee/net을 하나의 ID로 묶는다. source_gross = rejected_gross + output_gross, output_gross = fee + net을 모두 확인한다.