## 기현 ### p87 - 위치정보 저장을 위한 통신 프로토콜로 왜 HTTP를 사용하며 어떻게 keep-alive 옵션을 사용하면 효율을 높일 수 있는 것일까? - 서버에 연속적으로 동일한 클라이언트(단말)가 요청을 보낼 가능성이 높아서 효율이 높은 것일까? - 동일한 클라이언트에서 서버로 실시간 요청이 많이 발생하는 경우 keep-alive 옵션을 사용하면 효율을 높일 수 있다고 일반화할 수 있는 것일까? ### p94 - 애플리케이션이 지속적으로 수집한 사용자 위치 데이터를 통해 끊임없이 개선된다? - 사용자가 움직인 위치 데이터에 따라 도로 데이터를 갱신한다는 말인가? ### p98 - user_id는 파티션 키, timestamp는 클러스터링 키? - 카산드라에서 파티션키와 클러스터링 키가 무엇인지? <img width="634" alt="image" src="https://github.com/NW-study/system-design-interview/assets/84184640/2e095130-8a2a-49bf-bdbc-c4814ee9505f"> - Cassandra에서 파티션 키는 데이터를 저장하는 노드를 결정(파티션 키에 해시를 적용하여 각 노드에 할당하는 방식)하고, 클러스터링 키는 노드 내에 데이터가 저장되는 방법을 결정. - 예를 들어 다음과 같은 테이블이 있다고 가정. - `PRIMARY KEY (city_id, event_id)` - 이 기본 키는 두 개의 열로 표시되는 두 부분으로 구성 - `city_id` 가 파티션 키. 즉, 데이터는 `city_id` 필드를 기준으로 분할되어 동 한 `city_id` 가진 모든 행이 동일한 노드에 저장된다. - `event_id` 클러스터링 키 역할을 합니다. 각 노드 내에서 데이터는 `event_id` 열을 기준으로 정렬된 순서로 구성 및 저장된다. - [참고](https://hackernoon.com/ko/%EC%A6%89%EC%8B%9C-%EC%82%AC%EC%9A%A9-%EA%B0%80%EB%8A%A5%ED%95%9C-%ED%99%95%EC%9E%A5%EC%84%B1%EC%9D%B4-%EB%9B%B0%EC%96%B4%EB%82%9C-Cassandra-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4) - 즉, 특정 사용자의 특정 기간 내 위치를 효율적으로 읽을 수 있음.
기현
p87
p94
p98
PRIMARY KEY (city_id, event_id)city_id가 파티션 키. 즉, 데이터는city_id필드를 기준으로 분할되어 동 한city_id가진 모든 행이 동일한 노드에 저장된다.event_id클러스터링 키 역할을 합니다. 각 노드 내에서 데이터는event_id열을 기준으로 정렬된 순서로 구성 및 저장된다.