본문 바로가기

데이터 엔지니어링/데이터 엔지니어링

Batch 와 Streaming

반응형

 

Batch Processing 

배치 (Batch) == 일괄 

배치 프로세싱(Batch Processing) == 일괄 처리 

저 반죽들을 데이터라고 생각해보자

많은 양의 데이터를 정해진 시간에 한꺼번에 처리하는 것 

  1. 한정된 데이터 
  2. 특정 시간 
  3. 일괄 처리 
    1. 실시간 보장이 없을때 
    2. 데이터를 한꺼번에 처리할 수 있을때 
    3. 무거운 처리를 할때 (ML)

 

 

Streaming Processing 

실시간으로 쏟아지는 데이터를 계속 처리하는 것 

이벤트가 생길 때 마다, 데이터가 들어올때마다 처리 

들어올때 마다 계속 처리해줘야함

 

물론 streaming 도 batch 처럼 사용할 수 있음 

불규칙적으로 데이터가 들어온다는 가정을 진행해보면 

1. 이벤트가 안들어올때 (오랫동안)

2. 여러개의 이벤트가 한꺼번에 올떄 

 

이렬경우 불규칙으로 데이터가 들어오므로  

처리하는 데이터가 각각 마다 달라지기 때문에 리소스 가 비효율적으로 진행됨 

 

하지만 스트리밍은 데이터가 생성되서 요청이 들어올때 마다 처리할 수 있음 

 

그러면 언제써야할까?

  1. 실시간 성 보장 
  2. 데이터가 불특정 다수로 여러곳에서 들어올때 
  3. 데이터 생성 및 수집 주기가 불규칙할떄 
  4. 가벼운 처리를 할 때 (이건 회사마다 다름)

대표적으로 사용되는 분야는?

1. 사기거래 탐지 

2. 실시간 가격 책정 

3. 실시간 기능이 들어간 어플리케이션 

4. 실시간 알림 

 

MicroBatch 

데이터를 잘게 쪼개서 프로세싱하는 것 

batch processing 을 잘게 쪼개서 스트리밍을 흉내내는 것이라고 보면된 

대표적으로 spark streaming 

스트리밍을 흉내내는거지 근본은 배치라는점 

 

 

 

Flow 정리 

Batch processing flow  Streaming processing flow 
1. 데이터를 모아서 
2. DB에 읽어서 처리 
3. 다시 DB에 담기 
1. 데이터가 들어올때마다 
2. 쿼리/처리 후 State를 업데이트 
3. DB 담기

 

반응형