DBMS/Cassandra

    [Cassandra] 언제 Minor Compaction이 일어날까?

    Compaction에 대한 내용은 다루지 않음. Cassandra Compaction 종류 Minor Compaction: 카산드라에서 자동으로 트리거링 해주는 컴팩션. Major Compaction: 수동으로 노드 내의 모든 SSTable을 대상으로 컴팩션을 실행 User Defined Compaction: 특정 SSTable 들을 대상으로 수동으로 컴팩션을 실행. UpgradeSSTables: SSTable들을 최신 버전으로 업데이트함. CleanUp: 해당 노드가 소유한 범위에 더이상 포함되지 않는 대상들을 제거. 노드을 증설하면, 리밸런싱이 일어나는데, 증설 이후, 기존 노드들에서 cleanup을 때려줘야 불필요한 데이터들이 삭제됨 등이 있다. Minor Compaction 트리거링 시점 이중 카..

    [Cassanrda] tombstone 수동 제거 방법

    Cassandra Tombstone(이 마킹된 데이터)들을 수동으로 제거해야하는 일이 있었음.수동 처리 방법 nodetool garbagecollect GC를 통해서 삭제된 데이터를 수동으로 삭제하는 기능 테스트 해보니, CPU 및 Disk IO 부하가 꽤 있는 것으로 보임.클러스터내에서 해당 명령을 실행한 노드에서만 garbagecollect가 일어남.안전하게 처리하기 위해서, garbagecollect를 실행할 노드를 서비스에서 제외하고, 처리하기로 함.주의 사항Tombstone의 최소 유지시간인 gc_grace_seconds 만큼 Tombstone(데이터)을 최소한 유지해서, 수동으로 톰스톤을 지우더라도 해당 시간만큼 지나지 않은 톰스톤(데이터)들은 제거되지 않는다.

    Cassandra DB에서 COUNT 쿼리가 위험한 이유..

    내부적으로 N개씩 (Paging 설정으로 변경 가능하며, default 100) 커서 조회로 파티션을 풀 스캔함..) 파티션 키로 필터링 조건으로 조회한다면, 파티션 기준으로 풀 스캔하고, 파티션 필터링 조건조차 없다면, 모든 파티션을 풀 스캔한다… 동작방식에서 알 수 있다시피, 파티션 크기가 점점 커질수록, 카산드라에 많은 부하를 유발하니 사용하지 말자.. 만약 테이블 기준 전체 카운트를 알아야 한다면, nodetool tablestat (Number of keys, estimate)에 나오는 로우 추정 갯수를 통해 확인할 수 있다. https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/tools/toolsTablestats.html nodetool ta..

    Cassandra JMX 지표

    https://cassandra.apache.org/doc/latest/cassandra/operating/metrics.html Cache Hit Rate NameTypeDescription RowCacheHit Counter Number of table row cache hits. KeyCacheHitRate Gauge Key cache hit rate for this table. Memtable & SSTable Size NameTypeDescription MemtableOnHeapSize Gauge Total amount of data stored in the memtable that resides on-heap, including column related overhead and partitio..

    Cassandra, how is data updated?

    How is data updated? Cassandra treats each new row as an upsert During a write, Cassandra adds each new row to the database without checking on where a duplicate record exists. This policy makes it possible that many versions of the same row many exist in the database. Periodically, the rows stored in memory are streamed to disk into structures called SSTables. At certain intervals, Cassandra co..