96
이벤트 기반 마이크로서비스 구축
4.4
쿼리로 데이터 해방
데이터 저장소를 쿼리한 결과를 관련 이벤트 스트림에 흘려보내는 것입니다. 클라이언트는
API
,
SQL
, 또는 유사
SQL
SQL
-
like
언어를 이용해 데이터 저장소에서 원하는 데이터 세트를 요
청합니다. 데이터 세트는 최초
1
회 벌크 쿼리
bulk
-
query
(대량 조회 )한 다음 주기적으로 업데이트
해서 변경분을 출력 이벤트 스트림에 생산합니다.
이 패턴에서 쓰이는 몇 가지 쿼리 패턴을 알아보겠습니다.
4.4.1
벌크 로딩
벌크 쿼리를 실행해서 전체 데이터를 로드합니다. 앞으로 계속할 증분 업데이트를 하기 직전,
그리고 각 폴링 주기마다 전체 테이블을 로드할 경우에 수행하는 작업입니다.
벌크 로드는 데이터 저장소에서 전체 데이터 세트를 가져오기 때문에 비용이 많이 듭니다. 데
이터 세트가 작다면 별 문제없겠지만 레코드 수가 수백만~수십억 개에 달하는 대량 데이터는
결코 만만치 않습니다. 대량 데이터를 적재/처리하는 작업의 성능은 구현체마다 편차가 심할
수 있으니 여러분이 사용하는 데이터 저장소의 모범 사례가 있는지 잘 찾아보세요.
4.4.2
증분 타임스탬프 로딩
이전 쿼리 결과의 최종 타임스탬프 이후에 쌓인 데이터를 쿼리해서 적재합니다. 최근 업데이트
시간 (
updated
_
at
) 컬럼/필드를 기준으로 레코드가 가장 마지막에 수정된 시간을 찾아 매번
증분 업데이트할 때마다 최종 수정 시간 컬럼/필드가 이 시간 이후인 레코드만 가져옵니다.
4.4.3
자동증가
ID
로딩
증분 업데이트를 ...