빈쿵바라기
좌충우돌 개발자의 기록
빈쿵바라기
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Programming (25)
      • JAVA (12)
      • Spring Boot (6)
      • JPA (7)
      • Python (0)
    • Database (12)
      • RDBMS (4)
      • NoSQL (7)
    • Server (11)
    • Elasticsearch (3)
    • ETC (2)

블로그 메뉴

    공지사항

    인기 글

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    빈쿵바라기
    Database/NoSQL

    [Cassandra] 카산드라 기본 개념

    [Cassandra] 카산드라 기본 개념
    Database/NoSQL

    [Cassandra] 카산드라 기본 개념

    2023. 5. 23. 17:08

    카산드라 구성 컴포넌트

    • 카산드라 노드(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)에서 복제본 노드를 어떤 식으로 배치할지 결정
    • 칼럼 패밀리(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
      'Database/NoSQL' 카테고리의 다른 글
      • [Cassandra] 조건 조회(Select Where)에 대하여
      • [Cassandra] 기본 키, 파티션 키, 클러스터링 키
      • [Cassandra] Apache Cassandra 란?
      • [NoSQL] Cassandra vs Hbase vs MongoDB
      빈쿵바라기
      빈쿵바라기
      삽질하는 개발자의 좌충우돌 개발기

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.