2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

Cassandra에서 데이터의 TTL을 설정하는 방법은 무엇인가요?

_____
Q: Cassandra에서 데이터의 TTL(Time To Live)을 설정하는 방법은 무엇인가요?

A: Cassandra에서 TTL(Time To Live)은 특정 데이터(컬럼 또는 행)가 자동으로 삭제되도록 설정하는 기능입니다. TTL을 설정하면 데이터가 삽입된 후 지정한 시간이 경과하면 해당 데이터가 자동으로 만료되어 삭제됩니다. TTL은 보통 초 단위로 지정합니다.

---

1. TTL 설정 방법

(1) INSERT 문에서 TTL 설정
데이터를 삽입할 때 `USING TTL <초>` 구문을 추가하여 TTL을 지정할 수 있습니다.

```cql
INSERT INTO keyspace_name.table_name (id, column1, column2)
VALUES (1, 'value1', 'value2')
USING TTL 3600; -- 1시간 후 만료
```

- 위 예제는 `id`가 1인 행을 삽입하며, 이 데이터는 3600초(1시간) 후에 자동으로 삭제됩니다.

(2) UPDATE 문에서 TTL 설정
기존 데이터에 대해 TTL을 적용하거나 갱신할 수 있습니다.

```cql
UPDATE keyspace_name.table_name
USING TTL 86400 -- 24시간 후 만료
SET column1 = 'new_value'
WHERE id = 1;
```

- `column1` 컬럼 값에 대해 24시간 TTL이 적용됩니다.

---

2. TTL 확인 방법

TTL이 남아있는 시간을 확인하려면 `TTL()` 함수를 사용할 수 있습니다.

```cql
SELECT TTL(column1) FROM keyspace_name.table_name WHERE id = 1;
```

- 반환값은 해당 컬럼이 만료되기까지 남은 시간(초)입니다.
- 데이터에 TTL이 설정되어 있지 않으면 `null`을 반환합니다.

---

3. TTL 주요 특징 및 주의사항

- TTL은 컬럼 단위로 적용됩니다. 행 단위 TTL은 없으며, 모든 컬럼에 TTL을 설정하면 사실상 행 전체가 만료됩니다.
- TTL이 적용된 데이터는 삭제 시점 이전에도 스토리지 엔진 내부에서 tombstone(삭제 마커)로 처리되므로, 쿼리 성능에 영향을 줄 수 있습니다.
- TTL 값은 초 단위이며, 최대값은 약 20년(631138519초) 정도입니다.
- TTL 종료 후 데이터는 삭제되나, 물리적으로 바로 제거되지는 않고 compaction 과정에서 완전히 삭제됩니다.

---

4. 예시 종합

```cql
CREATE TABLE mykeyspace.users (
user_id uuid PRIMARY KEY,
name text,
email text
);

-- 2시간 뒤 데이터 만료
INSERT INTO mykeyspace.users (user_id, name, email)
VALUES (uuid(), 'Alice', '[email protected]')
USING TTL 7200;

-- 컬럼별 TTL 적용 (컬럼별로 다르게 TTL 적용 시 별도 UPDATE 필요)
UPDATE mykeyspace.users
USING TTL 3600 SET email = '[email protected]'
WHERE user_id = some_uuid;

-- TTL 확인
SELECT TTL(email) FROM mykeyspace.users WHERE user_id = some_uuid;
```

---

요약:
- 데이터를 삽입하거나 수정할 때 `USING TTL <초>` 옵션을 사용하여 TTL 설정
- TTL 값은 초 단위이며, 만료되면 데이터가 자동 삭제됨
- TTL은 컬럼 단위로 적용되며, `TTL()` 함수로 남은 TTL 시간 확인 가능

이와 같이 Cassandra에서는 매우 간단히 TTL을 설정할 수 있어, 임시 데이터나 캐시성 데이터를 자동으로 관리하기에 용이합니다.
Cassandra에서 데이터의 TTL(Time To Live)을 설정하는 방법은 데이터의 생명 주기를 관리하는 중요한 기능입니다.

TTL을 사용하면 특정 데이터가 저장된 후 일정 시간이 지나면 자동으로 삭제되도록 설정할 수 있습니다.

이는 데이터베이스의 저장 공간을 효율적으로 관리하고, 오래된 데이터를 자동으로 정리하는 데 유용합니다.

TTL 설정 방법 1. TTL의 개념 이해하기 : - TTL은 데이터가 생성된 후 유지되는 시간을 초 단위로 설정합니다.

예를 들어, TTL을 86400초(24시간)로 설정하면, 해당 데이터는 24시간 후에 자동으로 삭제됩니다.



2. TTL 설정하기 : - TTL은 데이터 삽입 시 `INSERT` 문에 직접 설정할 수 있습니다.

다음은 기본적인 예시입니다.

```cql INSERT INTO keyspace_name.table_name (id, name) VALUES (1, 'example') USING TTL 3600; ``` 위의 예제에서 `3600`은 데이터가 1시간 후에 삭제된다는 의미입니다.



3. 기존 데이터에 TTL 적용하기 : - 이미 존재하는 데이터에 TTL을 적용하려면, 해당 데이터를 업데이트하면서 TTL을 설정할 수 있습니다.

```cql UPDATE keyspace_name.table_name USING TTL 7200 SET name = 'updated_example' WHERE id = 1; ``` 이 경우, `id`가 1인 데이터의 `name` 필드가 업데이트되며, TTL이 2시간(7200초)으로 설정됩니다.



4. TTL 확인하기 : - Cassandra는 TTL을 직접적으로 조회하는 기능을 제공하지 않지만, `WRITETIME` 함수를 사용하여 데이터가 언제 작성되었는지를 확인할 수 있습니다.

이를 통해 TTL을 계산할 수 있습니다.

```cql SELECT id, name, WRITETIME(name) FROM keyspace_name.table_name WHERE id = 1; ``` 이 쿼리는 특정 데이터의 작성 시간을 반환합니다.

이를 바탕으로 TTL이 만료되는 시간을 계산할 수 있습니다.



5. TTL의 제한 사항 : - TTL은 데이터의 모든 컬럼에 대해 개별적으로 설정할 수 있지만, 테이블의 기본 TTL을 설정할 수도 있습니다.

기본 TTL은 테이블 생성 시 `WITH default_time_to_live` 옵션을 사용하여 설정할 수 있습니다.

```cql CREATE TABLE keyspace_name.table_name ( id UUID PRIMARY KEY, name TEXT ) WITH default_time_to_live = 86400; -- 기본 TTL을 24시간으로 설정 ``` 이 경우, 테이블에 삽입되는 모든 데이터는 기본적으로 24시간 후에 삭제됩니다.



6. TTL과 데이터 삭제 : - TTL이 만료된 데이터는 Cassandra의 내부 메커니즘에 의해 삭제됩니다.

이 과정은 배경에서 이루어지며, 데이터가 즉시 삭제되는 것은 아닙니다.

Cassandra는 주기적으로 데이터를 정리하는 작업을 수행합니다.



7. TTL과 성능 : - TTL을 사용하는 것은 데이터베이스의 성능에 영향을 줄 수 있습니다.

TTL이 설정된 데이터는 주기적으로 삭제되므로, 이로 인해 쓰기 및 읽기 성능에 영향을 미칠 수 있습니다.

따라서 TTL을 설정할 때는 데이터의 사용 패턴과 성능 요구 사항을 고려해야 합니다.

결론 Cassandra에서 TTL을 설정하는 것은 데이터의 생명 주기를 관리하는 강력한 도구입니다.

TTL을 적절히 활용하면 데이터베이스의 저장 공간을 효율적으로 관리하고, 오래된 데이터를 자동으로 정리하여 성능을 유지할 수 있습니다.

데이터 삽입 및 업데이트 시 TTL을 설정하는 방법을 이해하고, 기본 TTL을 설정하여 데이터의 자동 삭제를 관리하는 것이 중요합니다.

작성자: 김하준 [비회원] | 작성일자: 1년 전 2024-12-08 09:51:38
조회수: 192 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.