- 배치 프로세싱(Batch Processing)이란 한정된 대량의 데이터를 정해진 시간에 한번에 처리하는 것이다.
주로 다음과 같은 상황에 많이 쓰인다.
(1) 데이터 처리가 실시간을 보장하지 않아도 될 때
(2) 데이터를 한번에 처리할 수 있을 때
(3) 무거운 처리를 할 때
ex) 매일 마다 웹 크롤링, 매달 1일의 생산량 소비량 예측, 매주 고객들에게 마케팅 이메일 전송
- 배치당 처리하는 데이터 수가 다르기 때문에 리소스가 비효율적으로 사용될 수 있다.
- 스트림 프로세싱(Stream Processing)이란 이벤트가 생길 때 마다, 데이터가 들어올 때 마다 실시간으로 데이터를 처리하는 것이다.
주로 다음과 같은 상황에 많이 쓰인다.
(1) 실시간을 보장해야할 때
(2) 데이터가 여러 소스로부터 들어올 때
(3) 데이터가 가끔 들어오거나 지속적으로 들어올 때
(4) 가벼운 처리를 할 때
(5) 이상 탐지 (Anomaly Detection)
(6) 비즈니스 모니터링
- 데이터가 생성되어 요청이 들어올 때 마다 처리할 수 있으므로 리소스가 효율적으로 사용될 수 있다.
- 일반적인 배치 처리 플로우는 아래와 같이 동작한다.
1. 데이터 모으기
2. DB에서 read 후 쿼리 처리
3. 다시 DB에 write
- 반면에 스트림 처리 플로우는 아래와 같이 동작한다.
1. 데이터가 들어올 때 마다 흡수(ingest)
2. 쿼리 처리 후 State를 업데이트
3. DB에 write
- 실제 서비스에서 활용을 할 때 온라인에서는 실시간 데이터를 스트림 엔진을 통해 DB에 저장하고, 오프라인에서는 과거의 데이터를 한꺼번에 처리하는 배치 파이프라인을 통해 데이터를 DB에 저장하는 것이 좋다,
- 배치 파이프라인과 스트림 파이프라인의 예시이다.
cf) 마이크로 배치란?
- 데이터를 조금씩 모아서 프로세싱 하는 방식으로 배치 프로세싱을 잘게 쪼개서 스트리밍 방식을 흉내내는 것이다.
ex) Spark streaming
ref)
https://flink.apache.org/usecases.html
'CS' 카테고리의 다른 글
컴파일, 링크, 빌드 [CS] (0) | 2024.07.03 |
---|---|
데이터 웨어하우스 [CS] (0) | 2023.06.11 |
Data Governance [CS] (0) | 2022.12.19 |
Index & B-Tree [CS] (0) | 2022.12.14 |
Process & Thread[CS] (0) | 2022.12.14 |