해당 장은 이전 장들의 정리 + 저자의 생각에 관한 내용으로 따로 정리하지 않기로 함한 번 읽어보는 정도면 충분할 듯
지금까지 스트림은 어디서 오는지(사용자 활동 이벤트, 센서, 데이터베이스에 쓰기)와 스트림이 어떻게 전송되는지(직접 메시징, 메시지 브로커, 이벤트 로그)에 대해 설명함스트림을 처리하는 방법에는 크게 세 가지가 있음이벤트에서 데이터를 꺼내 데이터베이스나 캐시, 검색 색
브로커와 데이터베이스는 전통적으로 전혀 다른 범주의 도구로 생각되지만, 로그 기반 브로커는 데이터베이스에서 아이디어를 얻어 메시징에 적용함그렇다면 그 반대도 가능할 것. 메시징과 스트림에서 아이디어를 가져와 데이터베이스에 적용한 사례는?이벤트는 특정 시점에 발생한 사건
일괄 처리는 입력으로 파일 집합을 읽어 출력으로 새로운 파일 집합을 생성하는 기술출력은 파생 데이터 형태이며, 필요하다면 일괄 처리를 다시 수행해 재생성 가능한 데이터셋을 의미하지만 일괄 처리는 입력을 사전에 알려진 유한한 크기로 한정한다는 가정이 있음. 그리고 이는
2000년대 후반 맵리듀스는 가장 인기있는 분산 시스템의 프로그래밍 모델 중 하나였지만, 데이터 양, 자료 구조, 데이터를 처리하는 방식에 따라 다른 도구가 연산을 표현하는 데 더 적합할 수 있음그럼에도 불구하고 맵리듀스는 학습하기 매우 유용하며 단순함. 여기서 단순함
포스팅 작성 후, 재시도를 아무리 하더라도 비공개로 전환되는 현상이 발생https://github.com/velopert/velog-client/issues이슈를 찾아보니, 특정 키워드가 있으면 자동으로 필터링되어 비공개로 전환되는 현상이 다수 존재하는 것으로
지난 포스팅에서 설명된 여러 조인 알고리즘은 실제 조인 로직을 리듀서에서 실행하기 때문에 리듀스 사이드 조인이라고 함리듀스 사이드 접근에서는 입력 데이터에 대한 특정한 가정이 필요하지 않음. 매퍼는 각 입력 레코드에서 키와 값을 추출해 리듀서 파티션으로 할당하고 키별로
맵리듀스는 유닉스 도구와 비슷하지만, 수천 대의 장비로 분산해서 실행이 가능하다는 점에서 차이가 존재유닉스 도구와 마찬가지로 입력을 수정하지 않기 때문에 출력을 생산하는 것 외에 다른 부수 효과는 없음유닉스는 stdin과 stdout을 입력과 출력으로 사용하지만, 맵리
서비스(온라인 시스템)서비스는 클라이언트로부터 요청이 올 때까지 기다림. 요청 하나가 들어오면 서비스는 가능한 빨리 요청을 처리해 응답하며, 응답 시간은 성능 측정의 중요한 지표로 작용함일괄 처리 시스템(오프라인 시스템)매우 큰 데이터를 받아 데이터를 처리하는 작업을
3부에서 다룰 내용1,2부에서는 단일 데이터베이스에 대해서 다룸하지만, 큰 애플리케이션에서는 단일 데이터베이스를 사용하는 것이 아니라, 대개 여러 다른 데이터스토어, 색인, 캐시, 분석 시스템 등을 조합해 사용함3부에서는 다양한 데이터 시스템을 일관성 있는 하나의 애플
단순하게 말해 합의란 어떤 노드(들)이 값을 제안하며, 합의 알고리즘이 그 값 중 하나를 결정하는 것. 이를 위해 달성해야 할 속성은 다음과 같음균일한 동의어떤 두 노드도 다르게 결정하지 않음무결성어떤 노드도 두 번 결정하지 않음유효성한 노드가 값 v를 결정한다면 v는
2단계 커밋으로 구현된 분산 트랜잭션에 대한 평판은 엇갈림한 가지 예로 MySQL의 분산 트랜잭션은 단일 노드 트랜잭션보다 10배 이상 느리다고 보고됨한편에서는 다른 방법으로 달성하기 어려운 중요한 안전성 보장을 제공하는 것으로 평가받음분산 트랜잭션의 두 가지 종류데이
여러 노드들이 뭔가에 동의하게 만드는 것원자적 커밋여러 노드/파티션에 걸친 트랜잭션을 지원하는 데이터베이스에서는 트랜잭션의 원자성을 유지해야하며, 이를 위해서는 모든 노드가 트랜잭션의 결과에 동의하게 만들어야 함리더 선출단일 리더 복제 데이터베이스에서 모든 노드는 어떤
단일 리더 복제에서 리더의 주 목적은 복제 로그에서 쓰기의 순서, 즉 팔로워가 쓰기를 적용하는 순서를 결정하는 것직렬성은 트랜잭션들이 마치 어떤 일련 순서에 따라 실행되는 것처럼 동작하도록 보장하는 것분산 시스템에서 타임스탬프와 시계 사용은 무질서한 세상에 질서를 부여
분산 시스템에서 발생할 수 있는 결함은 크게 세 가지네트워크에 의한 패킷 손실, 순서 뒤섞임, 임의의 시간 동안 지연시간의 오류노드가 죽음(ex. GC)이러한 결함이 발생하더라도 서비스는 올바르게 작동한다면, 이런 시스템은 내결함성(Fault Tolerance)를 지닌
분산 시스템에는 공유 메모리가 없고 지연 변동이 큰 신뢰할 수 없는 네트워크를 통해 메시지를 보낼 수 있을 뿐이며 부분 장애, 신뢰성 없는 시계, 프로세스 중단이 발생할 수 있음네트워크에 있는 노드는 어떤 것도 확실히 알지 못함. 따라서 타임아웃을 사용해 상대 노드의
분산 시스템에서는 통신이 즉각적이지 않으므로 시간은 다루기 까다로움메시지를 받은 시간은 항상 보낸 시간보다 나중이지만 네트워크의 지연의 변동성 때문에 얼마나 나중일지는 알 수 없음게다가 네트워크에 있는 개별 장비는 자신의 시계를 갖고 있어 다른 장비보다 약간 빠를 수도
단일 시스템에서는 하드웨어가 올바르게 동작하면, 같은 연산은 항상 같은 결과를 냄(결정적)하드웨어 문제가 있으면 시스템은 완전히 실패하며, 성공과 실패 그 중간 상태가 되지는 않음분산 시트템에서는 시스템의 어떤 부분은 잘 동작하지만 다른 부분은 예측할 수 없는 방식으로
직렬성 격리는 가장 강력한 격리 수준여러 트랜잭션이 병렬로 실행되더라도 최종 결과는 동시성 없이 한 번에 하나씩 직렬로 실행될 때와 같도록 보장즉, 데이터베이스에서 발생할 수 있는 모든 경쟁조건을 막음말 그대로 한 번에 트랜잭션 하나씩만 직렬로 단일 스레드에서 실행하는
갱신 손실 방지 동시에 실행되는 쓰기 트랜잭션 사이에 발생할 수 있는 충돌에는 더티 쓰기 이외에도 다양한 것이 존재 이중 가장 널리 알려진 것이 갱신 손실이며 이전에 동시에 카운터를 증가시키는 예시가 이 문제임 갱신 손실은 애플리케이션이 데이터베이스에서 값을 읽고