카산드라 구성 컴포넌트
- 카산드라 노드(Node)
- 데이터가 저장되는 저장소
- 여러개의 노드를 연결하는 구조로 노드에 장애가 발생하더라도 데이터가 복제된 다른 노드에서 데이터를 제공
- 여러 개의 노드를 연결을 링(Ring)이라 표현
- 데이터 센터
- 서로 관련된 노드들의 집합
- 클러스터
- 하나 이상의 데이터 센터를 포함
- 커밋 로그(Commit log)
- 저장할 데이터가 입력 되면 커밋 로그에 해당 내용을 기록
- 커밋 로그에 기록되면 카산드라가 데이터의 입력이 성공했다고 판단
- 커밋 로그에 입력 된 후에는 해당 노드가 다운되거나 재시동하더라도 커밋 로그에 데이터가 존재하는 한 해당 내용을 복원 가능
- Memtable
- 카산드라의 메모리에 저장되어 있는 데이터
- 커밋 로그에 기록 된 다음 데이터는 영구적으로 디스크에 저장하기 전에 Memtable에 저장
- SSTable(Sorted String Table)
- Memtable 또는 커밋 로그에 저장된 데이터가 꽉차면 비로서 Memtable에 있는 내용을 디스크에 SSTable 생성하여 기록
- 파티션 키(Partition Key)와 클러스터링 키(Clustering Key)기준으로 정렬
카산드라 데이터 구조
- 키스페이스(Keyspace)
- 논리적 데이터의 최상단에 있는 컨테이너
- RDB에서 데이터베이스와 비슷한 개념
- 칼럼패밀리의 집합으로 구성
- 키스페이스를 생성 시 데이터를 몇 개의 노드에 복제할지 결정(키스페이스 속성 설정)
- 키스페이스 속성
- Replication factor : 데이터 복제본 개수
- 예를 들어 3으로 선언한 경우는 저장된 데이터를 인접한 두 개의 노드에 데이터를 복제
- Replica placement strategy : 노드 링(Ring)에서 복제본 노드를 어떤 식으로 배치할지 결정
- Replication factor : 데이터 복제본 개수
- 칼럼 패밀리(Column Family) = 테이블(Table)
- 키스페이스 안에 존재하며, 칼럼을 담는 컨테이너
- Column과 Row로 구성되어 있어 RDB에서 테이블과 비슷함
- 각 행(Row)마다 서로 다른 칼럼(Column)을 가질 수 있다.
- 칼럼(Column)
- 데이터를 이루는 가장 작은 다위
- 'name'과 'value'를 가지며 데이터가 갱신된 시각을 포함한 데이터 구조체
{
name: "emailAddress",
value: "myEmail@example.com",
timestamp: 123456789
}
- 슈퍼칼럼(Super Column)
- 칼럼 구조체 안에 다시 칼럼이 들어가 있는 구조체
- 'name'과 'value'로 이루어짐
- 슈퍼칼럼은 사용하지 않을 수 있음
{
name: "userAddress",
value: {
street: {name: "street", value: "75 park place", timestamp: 123456789},
city: {name: "city", value: "New York", timestamp: 123456789},
zip: {name: "zip", value: "58326", timestamp: 123456789},
}
}
'Database > NoSQL' 카테고리의 다른 글
[Cassandra] Cassandra 설치 방법 (0) | 2023.06.05 |
---|---|
[Cassandra] 조건 조회(Select Where)에 대하여 (0) | 2023.06.02 |
[Cassandra] 기본 키, 파티션 키, 클러스터링 키 (0) | 2023.05.24 |
[Cassandra] Apache Cassandra 란? (0) | 2023.05.19 |
[NoSQL] Cassandra vs Hbase vs MongoDB (0) | 2023.05.19 |