[21일차] | 대규모 시스템 설계 기초2 | 책너두

Heechan Kang·2025년 1월 28일
0
post-thumbnail

올바른 데이터베이스의 선택

  • 데이터베이스 선택의 기준
    • 데이터의 형태는 어떤가?
      • 문서형
      • 관계형
      • BLOB(Binary Large Object)
    • 작업이 읽기 중심인지, 쓰기 중심인지. 혹은 읽기/쓰기 모두인지
    • 트랜잭션의 지원 여부
    • 질의 과정에서 온라인 분석처리(OLAP; Online Analytical Processing)가 필요한지

개략적 설계안

  • 비동기 처리의 필요성
    • 데이터 파이프라인을 동기로 처리하게되면 생산자와 소비자가 항상 균형을 맞춰야 한다.
    • 이러한 케이스는 사실상 거의 불가능하다. 따라서 비동기 처리가 필요하다.
    • 이를 위해 카프카와 같은 메시지 큐 시스템을 사용한다.
6.3 개략적 설계안
  • 집계 결과를 바로 DB에 저장하지 않고 우측 상단에 두번째 메시지 큐를 통해 저장한다.
    • 이렇게 사용하는 이유는 정확하게 한 번 데이터를 처리하기 위함이다.

Q. 집계된 데이터를 정확하게 한 번 처리하기 위해 큐가 필요한 이유는?
분단위 집계에서 한번만 처리하면 되는데 왜 큐가 필요할까?

집계 서비스

  • 집계를 위한 좋은 방안중 하나는 맵리듀스(MapReduce)이다.
    • DAG(Directed Acyclic Graph) 형태로 구성된다.
맵 노드
  • 맵 노드는 데이터 소스로부터 주어진 데이터를 조건에 따라 필터링하여 반환한다.
  • 파티션이 여러 개인 경우, 맵 노드를 통해 이를 하나로 병합한다.
집계 노드
  • 집계 노드는 맵 노드로부터 주어진 데이터를 집계하여 반환한다.
  • 사실상 리듀스 프로세스의 일부이다.
리듀스 노드
  • 리듀스 노드는 집계 노드로부터 주어진 데이터를 최종적으로 집계하여 반환한다.
  • 이 과정까지 중간 데이터는 주로 메모리상에서 처리된다.
    • 필요한 경우 TCP 통신을 통해 전달하거나(다른 프로세스), 공유 메모리(다른 스레드)를 통해 전달할 수 있다.
profile
안녕하세요!

0개의 댓글