내용 출처: 패스트 캠퍼스 9개 프로젝트로 경험하는 대용량 트래픽 & 데이터 처리 초격차 패키지
<aside>
👨💻 NoSQL의 분산
</aside>
- Partition Key를 이용해서 데이터를 저장할 노드를 결정한다.
- 어떤 키를 가지고 그 키의 범위를 정해서 33%씩 나눠서 각 노드에 사용한다.
- 아래처럼 전체 트래픽을 3개로 나눌수 있다. 그럼 성능이 당연히 빨라진다.
- 다만 이런 수평확장 구조에서는 join은 불가능하다. 한번에 한 노드에만 접속해서 처리가 되어야 한다.

<aside>
👨💻 NoSQL의 종류
</aside>
- 전통적인 관계형 DB의 테이블 형태를 벗어나 다양한 데이터 구조 존재
- key-value, wide-column, document, graph

<aside>
👨💻 Cassandra DB 소개
</aside>
카산드라의 특징
- masterless 형태의 분산 아키텍처 (NoSQL에는 마스터가 있는 구조가 많은데 카산드라는 마스터가 없다. 모든 노드가 동등한 권한을 가진다. 서로간의 협업을 통해 의사결정이 이루어진다.)
- gossip 프로토콜 사용 (분산 시스템에서 어떻게 정보를 주고받을지 설정을 주고받는 합)
- 노드가 10개면 각 노드의 책임은 주변의 3개정도의 노드에 이 정보만 전파하면 할 일을 다 했다고 본다. 이런식으로 계속 서로 전파하다보면 결국 모든 10개의 노드가 같은 정보를 가지게 된다.
- key-value 형태의 데이터 모델을 사용 (data는 row)