1. cassandra DB란?
• 분산 대용량
저장소(NoSQL)
• 아파치 라이센스: Facebook에서 개발 시작, 이후 오픈 소스 화
• 상용 구글의 BigTable이나 아마존의
Dynamo과 목표는
비슷함
•
Write가 Read보다 빠르고,
Read도 RDB보다 빠름
• P2P처럼 인터넷
상의 IDC를 커버하는
망 구성 가능
• 서비스 중에
노드를 추가하여 용량 확장 가능
•
Key-Value 구조에 RDB의 Table과 비슷한
스키마 지원
• SQL과 유사한 CQL 지원
2. 논리적 데이터 구조
• Column
- 가장 최소단위
- name, value, timestamp로 구성 (name은 column 의 name)
• Columns
- 하나 이상의 column의 집합 (RDB의 Row)
• Super Column
- Column혹은 Super Column을 value로 가질 수 있는 Column
- name, value로 구성
• Column Family
- RDB의 Table에 해당
- key와 value의 데이터들로 구성
- value는 Columns혹은 Super Column이 올 수 있음
• Keyspace
- RDB의 Database에 해당
- Column Family의 집합
3. 물리적 구조
• Node
- 하나의 cassandra db 프로세스
- 하나의 서버(H/W)에 여러개의 cassandra db 프로세스가 실행 될 수 있음(여러개의 Node가 됨)
• Rack
- IDC내의 서버(H/W)가 장착되는 장비
• DataCenter
- 인터넷에 있는 IDC
• TokenRing
- 각각의 Node를 하나의 Ring으로 구성
- Key를 해쉬하여 나온 값을 token으로 보고 해당 token이 속해있는 Node에 데이터 저장
- 데이터 복제본은 정책에 따라서 이웃Node에 저장하거나 임의의 Node에 분산 저장
4. 통신 보안
• 공통
- 기본적으로 TLS와 PKI를 지원
• Node와 Node간에는 설정에 따라서 DC - DC or Rack - Rack or all 구간에 암호화
• Client와 Node간에 암호화 설정 가능
• 데이터 암호화는 지원하지 않음
5. 계정
• cassandra db는 기본 생성 시 super user인 cassandra계정만 존재
• 계정 추가는 CQL로 하는게 편함
• CQL에서 권한설정 가능(grant)