Cassandra에서 데이터 삭제는 어떻게 이루어지나요?
_____A: Cassandra에서 데이터 삭제는 내부적으로 "Tombstone"이라는 삭제 마커를 사용하여 처리됩니다. 사용자가 DELETE 문을 실행하면 해당 데이터는 즉시 물리적으로 제거되지 않고, 삭제되었음을 표시하는 Tombstone 레코드가 저장됩니다. 이 Tombstone은 후속의 읽기 작업 시 삭제된 데이터를 숨기는 역할을 하며, 컴팩션 과정에서 실제로 데이터가 영구 제거됩니다.
삭제 과정 상세:
1. DELETE 쿼리 실행: 특정 파티션 키나 컬럼을 대상으로 DELETE 명령을 실행합니다.
3. 읽기 시 필터링: 읽기 시 Tombstone이 존재하면 해당 데이터는 반환되지 않습니다.
4. 컴팩션 시 물리적 삭제: 주기적인 컴팩션 작업 중 Tombstone이 오래되면 실제 데이터와 함께 물리적으로 삭제됩니다. 이 시점까지 Tombstone은 일정 기간(기본값 10일) 동안 유지됩니다.
추가 참고 사항:
- Tombstone은 시스템을 안정적으로 유지하기 위한 중요한 메커니즘이며, 너무 많은 Tombstone이 쌓이면 성능 저하를 유발할 수 있습니다.
- 대량 삭제 작업 시는 주의해야 하며, 필요에 따라 TTL(Time to Live)을 활용하거나 파티션 단위로 데이터를 삭제하는 것이 권장됩니다.
Cassandra에서 데이터 삭제는 다른 관계형 데이터베이스와는 다르게 처리되며, 몇 가지 중요한 개념과 절차가 있습니다.
1. 데이터 삭제의 기본 개념 Cassandra에서 데이터 삭제는 `DELETE` 문을 사용하여 수행됩니다.
이 문은 특정 파티션의 데이터를 삭제하거나, 특정 조건을 만족하는 데이터를 삭제하는 데 사용됩니다.
그러나 Cassandra는 데이터를 물리적으로 즉시 삭제하지 않고, 대신 삭제 마커를 추가하는 방식으로 작동합니다.
이를 통해 데이터의 일관성을 유지하고, 분산 환경에서의 성능을 최적화합니다.
2. 삭제 마커 (Tombstone) Cassandra에서 데이터를 삭제하면 해당 데이터에 대해 "삭제 마커" 또는 "톰스톤(tombstone)"이 생성됩니다.
이 마커는 삭제된 데이터의 존재를 나타내며, 실제 데이터는 일정 기간 동안 데이터베이스에 남아 있습니다.
이 방식은 다음과 같은 장점을 제공합니다: - 일관성 유지 : 분산 환경에서 여러 노드에 데이터가 복제되기 때문에, 삭제 마커를 사용하면 데이터의 일관성을 유지할 수 있습니다.
- 복구 가능성 : 삭제된 데이터가 즉시 제거되지 않기 때문에, 실수로 삭제된 데이터를 복구할 수 있는 가능성이 있습니다.
3. 삭제 쿼리 Cassandra에서 데이터를 삭제하기 위해 사용하는 기본 쿼리는 다음과 같습니다: ```cql DELETE FROM table_name WHERE partition_key = 'value'; ``` 이 쿼리는 특정 파티션 키에 해당하는 모든 데이터를 삭제합니다.
특정 컬럼을 지정하여 삭제할 수도 있습니다: ```cql DELETE column_name FROM table_name WHERE partition_key = 'value'; ```
4. TTL (Time to Live) Cassandra는 TTL(Time to Live) 기능을 제공하여, 특정 데이터가 자동으로 삭제되도록 설정할 수 있습니다.
TTL을 설정하면, 데이터가 생성될 때부터 지정된 시간(초 단위)이 지나면 자동으로 삭제됩니다.
TTL을 설정하는 방법은 다음과 같습니다: ```cql INSERT INTO table_name (partition_key, column_name) VALUES ('value', 'data') USING TTL 3600; ``` 위 쿼리는 1시간(3600초) 후에 해당 데이터가 자동으로 삭제되도록 설정합니다.
5. 데이터 삭제의 주의사항 - 삭제 마커의 수명 : 삭제 마커는 Cassandra의 가비지 컬렉션 프로세스에 의해 처리됩니다.
기본적으로, 삭제 마커는 10일 후에 실제로 삭제됩니다.
이 기간 동안에는 삭제된 데이터가 여전히 쿼리 결과에 포함될 수 있습니다.
- 읽기 성능 : 삭제 마커가 많아지면 읽기 성능에 영향을 줄 수 있습니다.
따라서, 불필요한 삭제 마커를 줄이기 위해 주기적으로 데이터 정리 작업을 수행하는 것이 좋습니다.
- 파티션 크기 : Cassandra는 파티션 크기가 커질수록 성능이 저하될 수 있습니다.
따라서, 삭제 작업을 수행할 때는 파티션 크기를 고려해야 합니다.
6. Cassandra에서 데이터 삭제는 삭제 마커를 사용하여 이루어지며, TTL 기능을 통해 자동 삭제를 설정할 수 있습니다.
이러한 방식은 데이터의 일관성을 유지하고, 분산 환경에서의 성능을 최적화하는 데 기여합니다.
그러나 삭제 마커의 관리와 파티션 크기 등을 고려하여 적절한 데이터 삭제 전략을 수립하는 것이 중요합니다.
작성자:
박소현 [비회원]
| 작성일자: 1년 전
2024-12-08 09:51:17
조회수: 119 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 119 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.