[빅데이터를 지탱하는 기술]을 읽고-4.빅데이터의 축적
4.빅데이터의 축적
4-1.벌크 형과 스트미링 형의 데이터 수집
| 객체 스토리지와 데이터 수집
- 데이터 수집
수집한 데이터를 가공하여 집계 효율이 좋은 분산 스토리지를 만드는 일련의 프로세스| 벌크 형의 데이터 전송
- 벌크 형 방식
데이터베이스나 파일 서버 또는 웹 서비스등에서
각각의 방식으로 정리해 데이터를 추출한다.
(데이터가 분산스토리지에 저장되어 있는 것이 아니면
데이터 전송을 위한 ETL서버를 설치 한다.)
- 데이터 전송의 워크플로
데이터 전송의 신뢰성이 중요한 경우에는 벌크형 도구 사용해야 한다.
=>스트리밍 형의 데이터 전송은 재실행하기 쉽지 않다.
=>데이터 전송을 재실행할 수 있다는 점이 벌크 형의 장점| 스트리밍 형의 데이터 전송
- 스트리밍 형 데이터 전송이 필요한 경우
웹 브라우저,모바일 앱,센서 기기 등의 각종 '디바이스'에서 데이터를 수집하는 경우
=>다수의 클라이언트에서 계속해서 작은 데이터가 전송되는 방식이며, 이를 '메세지 배송'이라고 한다.보내온 메세지를 저장하는 방법 1.작은 데이터 쓰기에 적합한 NoSQL 데이터베이스 이용 2.'메세지 큐'와 '메세지 브로커'등의 중계 시스템에 전송 (분산 스토리지에 직접 쓰는것이 아님) =>기록된 데이터는 일정한 간격으로 꺼내고 모아서 함께 분산 스토리지에 저장한다.
- 웹 브라우저에서의 메시지 배송
웹 서버 안에서 메세지를 만들어 배송한다.
또한,자바스크립트를 사용하여 웹 브라우저에 직접 보냄
=> 웹 이벤트 추적
- 모바일 앱으로부터의 메세지 배송
MBaaS라는 백 엔드의 서비스를 이용하여,저장한 데이터를
벌크형 도구를 이용해서 꺼낸다.
- 디바이스로부터의 메세지 배송
- MQTT
TCP/IP를 사용하여 데이터를 전송하는 프로토콜
=>Pub/Sub형 메시지 배송 구조를 가짐
(채팅 시스템이나 푸시 알림등의 시스템에서 이용)
- 메시지 배송의 공통화
- 클라이언트
메시지가 처음 생성되는 기기- 프런트 엔드
메시지를 먼저 받는 서버
=>클라이언트와의 통신 프로토콜을 제대로 구현하는 역할을 한다.
4-2.메시지 배송의 트레이드 오프
| 메시지 브로커
- 메시지 브로커
빅데이터의 메시지 배송 시스템에서는 데이터를 일시적으로
축적하는 중산층
- 푸쉬 형과 풀형
- 푸쉬형
송신 측의 제어로부터 데이터를 보내는 방식- 풀형
수신 측의 주도로 데이터를 가져오는 것=>메시지 브로커는 푸쉬 형에서 풀 형으로 메시지 배송의 타이밍을 변환한다.
- 생산자
메시지 브로커에 데이터를 넣는 것- 소비자
데이터를 꺼내오는 것
- 메시지 라우팅
메시지가 데이터를 여러 경로로 분기시키는 것| 메시지 배송을 확실하게 실시하는 것은 어렵다.
- at most once : 메세지는 한 번만 전송된다. 그러나,도중에 전송에 실패해서 사라질 가능성 있다. =>이 결손을 피하고자 '재전송'이 이루어진다. - exactly once : 메세지는 손실되거나 중복 없이 한번만 전달 - at least once : 메세지는 확실하게 전달된다. 단, 같은 것이 여러 번 전달될 가능성이 있다. => 중복 제거는 이용자에게 맡기고 있다.
| 중복 제거는 높은 비용의 오퍼레이션
- 오프셋을 이용한 중복 제거 =>각 메세지에 시작위치(오프셋)을 붙인다. =>중복되어도 덮어쓰일 뿐으로,문제가 되지 않는다. =>벌크 형의 데이터 전송과 같이 데이터양이 고정된 경우 잘 작동 - 고유 ID에 의한 중복 제거 =>현실적으로 최근에 받은 ID만 기억해두고,늦게 온 메시지의 중복은 허용한다. - 종단간 (END TO END)의 신뢰성 =>클라이언트가 생성한 메시지를 분산 스토리지에 기록하는 단계에서 중복 없는 상태로 해야 한다. - 고유 ID를 사용한 중복 제거의 방법 1.NoSQL 데이터 베이스를 사용하는 것 =>고유 ID를 지정하게 되어 있어 동일한 ID는 덮어쓴다. 2.SQL로 중복을 제거하는 것
| 데이터 수집의 파이프 라인
클라이언트 =>프런트 엔드 => 메시지 브로커 =>소비자 =>분산 스토리지=>중복 제거 =>데이터 구조화
4-3.시계열 데이터의 최적화
- 프로세스 시간
서버가 처리하는 시간- 이벤트 시간
클라이언트 상에서 메시지가 생성된 시간| 시계열 인덱스
시계열 인덱스를 사용하면,
특정 시간에 맞춘 데이터 집계를 빠르게 실행 할 수 있다. >| 조건절 푸쉬다운
이벤트 시간으로 데이터를 정렬한 후에,열 지향 스토리지로 변환하도록 한다.
=> 이 통계를 이용하여 최소한 데이터만을 읽도록 하는
최적화를 '조건절 푸시 다운'이라고 한다.| 데이터 마트를 이벤트 시간으로 정렬하기
데이터 수집 단계에서는 이벤트 시간을 따지지 않고 프로세스 시간만을 사용하여 데이터를 저장 데이터 마트를 만드는 단계에서 이벤트 시간에 의한 정렬을 함께 하도록 한다.