빅데이터/cassandra 12

카산드라 특정 테이블에 TTL 데이터를 넣을 때 적합한 컴팩션 전략은?

질문 카산드라에서 특정 테이블에 일부 데이터는 TTL 2일로 설정되어 있고, 일부 데이터는 60일 TTL로 되어 있다면 가장 적합한 컴팩션 전략은 무엇인가요? 1. LeveledCompactionStrategy (LCS) 2. SizeTieredCompactionStrategy (STCS) 3. TimeWindowCompactionStrategy (TWCS) 답변 가장 적합한 전략은 TimeWindowCompactionStrategy입니다. 만에하나 동일 테이블에 여러 종류의 ttl 시간이 설정되어 있다고 하더라도 TWCS가 적합합니다. unchecked tombstone compaction을 설정함으로서 2일 이상 지난 TTL 데이터는 삭제되도록 하는 것이 좋습니다. ALTER TABLE my_tabl..

카산드라 TimeWindowCompactionStrategy 설명

TimeWindowCompactionStrategy TimeWindowCompactionStrategy(TWCS)는 데이터가 디스크에서 timestamp 단위로 묶일 때 유용합니다. 주로 TTL로 쓰여진 데이터를 다룰 경우 사용됩니다. 데이터가 만료되거나 TTL이 도달한 SSTable의 데이터는 대략적으로 비슷한 시간대에 삭제됩니다. 이 전략을 사용하면 이런 데이터를 완전히 삭제시킵니다. SizeTieredCompactionStrategy(STCS) 또는 LeveledCompactionStrategy(LSC)를 사용할 때 보다 디스크 사용량이 줄어들게 됩니다. TWCS의 기본 컨샙은 윈도우(window) 기준으로 sstable 파일을 생성하는 것입니다. 윈도우는 아래 2가지 주요 옵션에 의해 설정됩니다...

카산드라와 TTL, 툼스톤 그리고 관련 동작(컴팩션)

카산드라에서는 데이터의 TTL 또는 삭제에 의해 데이터가 바로 삭제되는 것이 아니라 툼스톤을 사용하여 데이터를 삭제합니다. 카산드라와 같은 분산 데이터베이스에서 데이터를 바로 삭제하는 것은 매우 어려운 일입니다. 그렇기 때문에 데이터를 삭제하기 전에 툼스톤이라고 불리는 플래그를 사용하여 해당 데이터가 삭제 대기로 옮긴 이후 추후에 데이터를 삭제시킵니다. 관련 동작을 알기 위해서는 우선 컴팩션이 무엇인지 알아보아야 합니다. 컴팩션(Compaction) 카산드라에서 컴팩션은 최고의 성능을 내기 위해 적재된 데이터(SSTable)를 결합하는 행위를 뜻합니다. 반면, 압축은 컴프레션이므로 컴팩션과 햇갈려서는 안됩니다. 카산드라에서 컴팩션은 다음과 같은 전략을 제공합니다. 사용방법에 따라 적합한 전략의 컴팩션을 ..

아파치 카산드라 설정 파일 및 상용 환경 셋팅

카산드라는 설치 방법에 따라 다른 디렉토리에 설정 파일이 있습니다. - 도커 : /etc/cassandra 디렉토리 - tarball : conf 디렉토리 - package : /etc/cassandra 디렉토리 카산드라의 기본 설정파일은 cassandra.yaml입니다. 1개의 노드로 구성할 수 있는 클러스터에 적합하게 설정되어 있습니다. 하지만 2개 이상 노드로 운영할 경우에는 다양한 추가 셋팅을 해야만 합니다. 클러스터로 구성하기 위해서는 일부 설정값을 입력해야만 합니다. - cassandra.yaml : 카산드라의 기본 셋팅 파일 - cassandra-env.sh : 카산드라에서 사용하는 환경 변수 셋팅 - cassandra-rackdc.properties or cassandra-topology...

아파치 카산드라 다이나모, 일관된 해싱, 복제 개념 살펴보기

다이나모 아파치 카산드라는 아마존의 다이나모 분산 키값 저장소의 기술들을 기반으로 만들어졌습니다. 다이나모 시스템은 3개의 주요 기술로 만들어집니다. 1) 파티셔닝된 데이터셋에 coordination 요청 2) Ring기반 맴버쉽 및 failure 감지 3) 로컬 퍼시스턴스 저장소 엔진 카산드라는 처음 2개의 클러스터링 구조를 기반으로 설계되었습니다. 그리고 LSM(Log Structured Merge Tree)를 기반으로 저장소 엔진을 사용합니다. - 일관된 해싱을 통한 데이터셋 파티셔닝 수행 - 버저닝된 데이터와 조정 가능한 consistency를 통한 멀티 마스터 데이터 복제 - 가십 프로토콜(gossip protocol)을 사용한 분산 클러스터 멤버쉽 추가 및 장애 감지 - 범용 하드웨어를 사용한..

아파치 카산드라 살펴보기, 설명, 기본 개념

아파치 카산드라는 오픈소스이며 분산 NoSQL 데이터베이스입니다. 파티션 기반의 wide column 저장소 모델을 활용하며 consistent semantics를 지원합니다. 아파치 카산드라는 페이스북에서 SEDA(Staged event-driven architecture)를 기반으로 설계되었고 아마존의 다이나모 분산 저장소와 구글의 빅테이블 저장소 엔진 모델을 기반으로 디자인되었습니다. 다이나모와 빅테이블 두개 다 스케일러블하고 안전하며 고 가용성의 데이터 저장소 특징을 가지도록 개발되었지만 일부는 완전히 지원되지 않습니다. - 다이나모 : https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html - 빅테이블 : https://static.g..

카산드라 TTL에 따른 데이터 삭제 정리

https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useExpire.html Expiring data with time-to-live Use time-to-live (TTL) to expire data in a column or table. Columns and tables support an optional expiration period called TTL (time-to-live); TTL is not supported on counter columns. Define the TTL value in seconds. Data expires once it exceeds the TTL p docs.datastax.com 카산드라에서는 컬럼단위 또는 테이블 단..

카산드라 모델링 분석하기 좋은 테이블 구성하기

기본적으로 생각해야할 부분은 컬럼 기반 데이터베이스라는 점입니다. 이를 기억하고 수행해야 합니다. 1개 필드를 프라이머리 키(파티션 키)로 생성한 테이블 cqlsh:cory> create table log1(uid int, machine varchar, log_time timestamp, log varchar, primary key(uid)); - uid : int - machine : varchar - log_time : timestmp - log : varchar primary key이자 partition key는 uid로 설정 1) 데이터 insert cqlsh:cory> insert into log1(uid, log, log_time, machine) values(1,'gg',toTimestamp..

NoSQL강의) 모델링 예제로 알아보는 Cassandra Query Language (CQL)

모델링 example 1 - Log 데이터 저장요구조건 - machine_id , log_time, log_text - machine 100EA, 1초당 로그 1건씩, 로그는 일반 텍스트 Case 1 : 별도의 PK를 부여한다면? CREATE TABLE log1 ( uid int, machine_id varchar, log_time timestamp, log_text varchar, PRIMARY KEY (uid) ); → 특정머신의 로그만 조회하는 것이 불가. 의미없는 모델. ▪ Log성 테이블은 Primary Key를 단일 값으로 설정하는 것이 힘들다. machine_id를 단일 primary key로 설정하면 machine_id가 Row Key가 되는데, 이 경우 시계열 데이터를 저장할 수 없게 된..

NoSQL강의) Cassandra 개요 및 설명

특징 Peer to Peer - Multi Master Model(Master-Slave 구조가 아님) - 새로운 노드의 추가를 통해 수평적 확장이 손쉬움 - DHT(Disgtributed Hash Table) 기반의 링 토폴로지 지원 - 데이터의 분산과 장애 극복 기능을 지원하기 위해 Cassandra는 Gossip Protocol을 사용한다. 이를 통해 다른 노드들에 대한 상태정보와 위치 정보를 매초마다 교환한다. - Gossip을 통해서 에러탐지를 수행한다. Gossip을 일정시간 주고 받지 않는 노드는 장애 노드로 판단된다. 장애 노드가 클러스터에 돌아오면 Hinted Hand Off로 복구를 우선 수행하게 된다. - Hinted Hand Off는 쓰기를 수행하고 복제할 때 복제 대상 노드가 장애..