DBMS/Cassandra

    Cassandra DB Collection Type 사용시 주의 사항 (v4.0 미만 한정)

    테이블 구조create table `test`( partition_key text, target text, subscriber text, extra map, primary key (partition_key, target, subscriber)); 쿼리select partition_key, target, subscriber, extra from test where partition_key = '1158' and target = '1' and subscriber in ('1', '2');Collection Type이 있는 경우 IN QUERY 시 위와 같은 에러가 발생함.Cassandra DB 4.0 부터 ..

    Cassandra DB LWT 동작 방식 (+동시성 이슈 해결기)

    푸시 쪽 개선을 위해서, 푸시 플랫폼에서 푸시 발송 시 특정 데이터 정보가 필요했습니다.그 특정 데이터는 다른 플랫폼에 있는 데이터로 데이터 특성상 푸시 발송시 해당 플랫폼으로부터 실시간으로 데이터를 조회하는 경우, 너무 많은 요청이 해당 플랫폼으로 가게 되었습니다.이러한 이유로 해당 데이터를 푸시 플랫폼으로 이벤트 파이프라인을 구성해서 사본 데이터를 저장하는 식으로 방향을 정했고, Cassandra DB의 특정 테이블에 저장해 두는 식으로 정하였습니다.별도의 저장소에 사본 데이터를 저장하는 경우, 추가적인 저장소가 필요 & 푸시 발송시 추가적인 랜덤 액세스 형태의 읽기 비용이 필요해서, 발송 속도에 영향을 줄 수 있음 상황 설명 (각색)실제 상황으로 상황을 설명하기 문제가 있을 수 있어, 전혀 다른 내..

    [CassandraDB] 무중단 CassandraDB 클러스터 이전 방법 (멀티 데이터센터 구성)

    회사에서 직접 운영하고 있는 Cassandra DB 클러스터 이관 등의 작업을 진행하였는데, 관련 방법들에 대해서 정리한 내용입니다.참고로, 팀 내에서 운영하고 있는 여러 플랫폼의 메인 저장소로 CassandraDB를 운영하고 있으며, CassandraDB의 경우 별도의 DBA가 없어 팀 내에서 직접 운영하고 있습니다.카산드라 클러스터 이관을 위해서 멀티 데이터센터를 구축해서 이전하는 방법으로 클러스터를 이전하였습니다.- 아래 예시들은 기존 데이터 센터를 dc1, 신규 데이터 센터를 dc2로 가정하고 작성되어 있는 점 참고 바랍니다.이관 전 사전 체크 사항Cassandra DB 설정 SnitchSimpleSnitch인 경우 단일 DataCenter를 위한 Snitch로, 멀티 데이터 센터 사용을 위해선 ..

    CassandraDB 버전 별 G1GC 기본 설정 정리

    Cassandra 버전별 JDK 지원 범위 (JDK 8 ~ 17) Cassandra 3.1: JDK 8 Cassandra 4.0: JDK 8, 11 Cassandra 4.1: JDK 8, 11 Cassandra 5.0: JDK 11, 17 G1GC Settings 현황 Cassandra 3.1: CMS(default), G1GC Cassandra 4.0: CMS(default), G1GC Cassandra 4.1: CMS, G1GC (default) 제공되는 G1GC 설정 값들 강화되었음 Cassandra 5.0: G1GC (default) Cassandra G1GC 세팅값 정리 JDK 11 1. Cassandra 4.0 ### G1 Settings ## Use the Hotspot garbage-fir..

    CassandraDB Snapshot

    Cassandra SnasphotCassandra DB에서 기본 설정 상 truncate or Drop 전에 Snapshot을 만든다. (cassandra.yml의 auto_snapshot 설정으로 default: true이다) 그래서, Truncate 및 Drop을 했는데, 실제 디스크 사용량이 줄어들지 않아서, 해당 데이터를 디스크에서 완전히 삭제하려면, Snapshot도 제거해야 한다.cf) 위의 케이스 이외에도 설정에 따라서 compaction, increment_backup 등에 의해서도 snapshot이 생성될 수 있음. 스냅샷 제거 방법./nodetool clearsnapshot --all--all: 모든 키스페이스에 속한 모든 스냅샷 제거./nodetool clearsnapshot --al..