Cassandra TTL & Cassandra CQL 데이터 유형(예)

⚡ 스마트 요약

Cassandra 데이터 형식은 각 열에 저장될 수 있는 값을 정의하고, TTL(Time To Live)은 값이 자동으로 만료되기 전까지 유지되는 시간을 제어합니다. 이 페이지에서는 모든 CQL 형식을 나열하고, 만료 메커니즘을 설명하며, 만료 후 발생하는 툼스톤 동작에 대해 다룹니다.

  • 🔤 타입 패밀리: CQL은 데이터 유형을 텍스트, 숫자, 날짜 및 시간, 식별자, 컬렉션 범주로 그룹화합니다.
  • 🔢 숫자 선택: tinyint부터 varint까지는 모든 정수 너비를 지원하는 반면, decimal은 금액에 대한 정확한 정밀도를 유지합니다.
  • 🆔 UUID와 TimeUUID 비교: timeuuid는 타임스탬프를 포함하고 시간순으로 정렬하므로 시간 순서 클러스터링 열에 적합합니다.
  • TTL 기본 사항: 데이터 삽입 시 설정된 TTL 값(초 단위)은 해당 시간이 경과하면 데이터를 자동으로 삭제합니다.
  • 🪦 만료 동작: 만료된 데이터는 마치 묘비처럼 남아서 압축 후에야 물리적으로 제거됩니다.
  • 🧊 냉동 종류: 컬렉션이나 튜플을 frozen으로 표시하면 전체를 교체해야 하는 하나의 변경 불가능한 값으로 저장됩니다.

Cassandra TTL CQL 데이터 유형

Cassandra 데이터 타입

Cassandra 다양한 유형의 데이터 유형을 지원합니다. 다음은 데이터 유형, 해당 상수 및 설명을 보여주는 표입니다.

CQL 유형 상수 기술설명
아스키 문자열 US-Ascii 문자열
bigint 정수 64비트 부호 있는 길이
윤곽이 흐릿한 것 모양 XNUMX진수의 임의 바이트
부울 부울 참 또는 거짓
카운터 정수 분산 카운터 값 64비트
데이터 정수, 문자열 시간 요소가 없는 달력 날짜
소수 정수, 부동 소수점 가변 정밀도 십진수
더블 정수, 부동 소수점 64 비트 부동 소수점
지속 런닝타임 수개월, 일, 그리고 나노초의 범위
뜨다 정수, 부동 소수점 32 비트 부동 소수점
겨울 왕국 튜플, 컬렉션, 사용자 정의 유형 여러 부분으로 구성된 값을 하나의 변경 불가능한 블롭으로 저장합니다.
inet 문자열 IPv4 또는 IPv6 형식의 IP 주소
INT 정수 32비트 부호 있는 정수
명부 정렬된 요소들의 모음
지도 JSON 스타일의 키-값 쌍 모음
세트 순서가 정해지지 않은 고유한 요소들의 모음
스몰 인트 정수 16비트 부호 있는 정수
본문 문자열 UTF-8로 인코딩된 문자열
시간 정수, 문자열 나노초 단위 정밀도로 하루 중 시간을 측정할 수 있습니다.
따라서 오른쪽 하단에 정수, 문자열 날짜와 시간(에포크 이후 밀리초 단위로 인코딩됨)
타임유이드 UUID 내장 시간 기준으로 정렬 가능한 유형 1 UUID
작은 정수 8비트 부호 있는 정수
튜플 고정된 유형의 필드 그룹
uuid UUID 표준 UUID
varchar 문자열 UTF-8로 인코딩된 문자열, 텍스트의 별칭
변형 정수 임의 정밀도 정수

해당 목록의 세 가지 선택 사항이 대부분의 모델링 오류를 유발하므로 명확하게 언급할 필요가 있습니다.

  • varchar에 대한 텍스트. 둘은 같은 유형입니다. 어느 이름으로 불러도 무방하며, 혼용해서 사용하는 것은 의미가 없습니다.
  • 타임스탬프와 timeuuid의 비교. 어떤 일이 발생한 시점을 기록할 때는 타임스탬프를 사용하세요. 여러 이벤트가 동일한 밀리초를 공유하는 경우에는 UUID를 클러스터링 열로 사용하세요. UUID는 시간순 정렬을 유지하면서도 고유성을 보장합니다.
  • 소수점과 이중수. 화폐 가치는 십진수로 표현해야 합니다. double형은 이진 반올림 오류를 발생시키며, 이 오류는 여러 집계 과정에서 누적됩니다.

A 카운터 해당 열에는 특별한 제약 조건이 있습니다. 테이블에는 카운터 열 또는 일반 열 중 하나만 포함할 수 있으며, 둘 다 포함할 수는 없습니다. 또한 카운터 행은 삽입할 수 없고 증가만 가능합니다.

Cassandra 자동 데이터 만료를 사용한 TTL(Time to Live)

Cassandra 데이터를 자동으로 만료할 수 있는 기능을 제공합니다.

데이터 삽입 시 'ttl' 값을 초 단위로 지정해야 합니다. 'ttl' 값은 데이터의 TTL(Time to Live) 값입니다. 특정 시간이 지나면 데이터가 자동으로 제거됩니다.

예를 들어 삽입하는 동안 ttl 값을 100초로 지정합니다. 데이터는 100초 후에 자동으로 삭제됩니다. 데이터가 만료되면 만료된 데이터에 삭제 표시가 표시됩니다.

유예 기간 동안 묘비가 존재합니다. 데이터가 만료되면 압축 프로세스 후 데이터가 자동으로 제거됩니다.

통사론

INSERT INTO KeyspaceName.TableName (ColumnNames)
VALUES (ColumnValues)
USING TTL TimeInSeconds;

예시

다음은 ttl 값이 100초인 Student 테이블에 데이터가 삽입되는 스냅샷입니다.

Cassandra 자동 데이터 만료를 사용하는 TTL

INSERT INTO University.Student (rollno, name, dept, semester)
VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;

다음은 100초 후 데이터가 자동으로 만료되고 데이터가 자동으로 제거되는 스냅샷입니다.

Cassandra 자동 데이터 만료를 사용하는 TTL

기존 데이터의 TTL 확인 및 변경

값이 TTL(Time To Live)을 갖게 되면 세 가지 추가 작업이 유용하며, 각 작업은 처음 접하는 사람들에게는 다소 생소한 동작을 보입니다.

기본 키가 아닌 열의 남은 수명은 TTL 함수를 사용하여 확인할 수 있습니다.

SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;

결과가 null이면 해당 열에 만료 시간이 설정되어 있지 않음을 의미합니다. 기본 키 열은 TTL이 키가 아닌 값에 연결되므로 이러한 방식으로 쿼리할 수 없습니다.

기존 값을 업데이트하여 새로운 TTL을 지정할 수 있으며, 이렇게 하면 해당 시점부터 카운트다운이 재설정됩니다.

UPDATE University.Student USING TTL 600
SET name = 'Guru99' WHERE rollno = 3;

테이블 전체에 적용되는 기본값을 사용하면 모든 문장에서 해당 절을 반복하는 것을 방지할 수 있습니다.

ALTER TABLE University.Student WITH default_time_to_live = 86400;

두 가지 결과가 발생합니다. 첫째, TTL은 행 단위가 아닌 열 단위로 적용되므로 TTL 없이 한 열만 업데이트하면 나머지 열이 모두 만료된 후에도 해당 열은 그대로 남아 행이 부분적으로만 채워지는 문제가 발생합니다. 전체 삽입 작업에 TTL을 설정하면 이러한 문제를 방지할 수 있습니다. 둘째, 만료될 때마다 테이블 상단에 툼스톤이 기록되므로 수백만 개의 행이 동시에 만료되는 테이블은 압축으로 인해 툼스톤이 삭제될 때까지 읽기 속도가 느려집니다. 이러한 테이블에 TimeWindowCompactionStrategy를 사용하면 행 단위로 압축하는 대신 전체 SSTable을 한 번에 삭제할 수 있습니다.

컬렉션 내부의 요소에도 만료 기능을 적용할 수 있으며, 이는 다음에서 다룹니다. Cassandra 컬렉션 튜토리얼.

자주 묻는 질문

아니요. TTL은 키 값을 제외한 모든 값에 적용됩니다. 행은 키 값을 제외한 모든 열의 TTL이 만료되어야만 사라지므로, 전체 삽입 작업에 TTL을 설정하는 것이 더 안정적인 방법입니다.

최대 보존 기간은 6억 3천만 72만 초, 즉 20년입니다. 이 값을 초과하는 데이터는 허용되지 않으므로, 더 긴 보존 기간은 애플리케이션 수준의 정리 작업을 통해 처리해야 합니다.

전체 값이 항상 함께 기록되거나 기본 키의 일부를 구성하는 경우 해당 컬렉션을 고정합니다. 고정된 컬렉션의 개별 요소는 업데이트할 수 없습니다.

일반적으로 명확한 경우에는 그렇지만, 금액이나 UUID의 경우 정렬에 timeuuid가 필요한데도 double형을 권장하는 경우가 많습니다. 숫자 정밀도와 시간 정렬 방식을 수동으로 확인하십시오.

이 기능은 데이터 보존 정책을 TTL 값으로 변환하고 압축 전략을 권장할 수 있습니다. 만료된 데이터는 복구할 수 없으므로 법적 보존 기간을 먼저 확인하십시오.

이 게시물을 요약하면 다음과 같습니다.