스트림이란 용어가 리액티브와 같이 참 많은 곳에서 사용이 된다.

데이터 스트림이란 용어도, 스트림이란 용어도 있는데 간략하게 알아보자.


데이터 스트림(Data stream)

일단 데이터 스트림이란 무엇일까?

다음과 같이 정의할 수 있다.

  • 데이터가 열을 지어 흐르는 것처럼 입력되는 것
  • 정해진 포맷을 사용하여 문자 또는 바이트 형식으로 송수신되는 데이터 항목의 연속적인 흐름
  • 데이터의 양이 한정되어 있지 않고 지속적으로 생성되고, 시간에 따라 값이 변하는 데이터의 흐름
  • 연속적으로 흘러들어오는 데이터 (예 :  바이트 배열)
  • 예) 주식 가격, 사용자 클릭, IoT, 게임 데이터, 사용자 행동 정보, 채팅 


실시간 처리(Real-time processing)

  • 대량의 데이터를 빠르게 처리하기 위한 데이터 처리의 목표 또는 제약 사항
  • 실시간은 마감시각(deadline)이 있고, 마감시각 내에 주어진 연산을 완료하지 못하면 실패로 처리
  • 마감시각을 놓쳤을 때의 처리 결과에 따라 Hard/Firm/Soft real-time으로 구분
  • 실시간 처리는 목표로 하는 시간 제약이 주어지고 그에 따른 실패 수준이 정해짐


스트림 처리(Stream processing)

  • 대량의 데이터를 빠르게 처리하기 위한 데이터 처리 방식
  • 범위가 한정되지 않고(unbounded) 끊임 없이 흘러가는(stream) 데이터에 대한 처리 방식
  • 잘 설계된 스트림 처리는 배치 처리를 포함한다고 할 수 있음
  • 스트림 처리가 끊임없이 흘러가는 데이터를 처리하다 보니 데이터 처리 결과를 빠르게 받아볼 수 있고 실시간 처리라고 불릴 수 있음


마이크로 배치(micro-batch)

  • 작은 배치 처리를 무한히 하는 방식
  • 스트림 처리에 포함됨


배치 처리(batch processing)

  • 한정된(bounded) 데이터의 처리를 배치 처리(batch processing)
  • unbounded 스트림 처리의 반대


Reference

[1] Spark streaming으로 실시간 처리 (http://readme.skplanet.com/?p=12465)

[2] http://radar.oreilly.com/2015/08/the-world-beyond-batch-streaming-101.html 

저작자 표시 비영리 변경 금지
신고

Leave a Comment


to Top

티스토리 툴바