반응형
Batch Operation
- 여러 쿼리들을 배치 처리할 수 있는 오퍼레이션. 해당 Batch Operation을 사용하면 각 오퍼레이션의 대상이 동일한 파티션인 경우 원자성과 격리성을 보장함. (다수의 파티션을 대상으로 하는 경우 원자성만 보장함)
- 다만 잘못 사용하는 경우, 많은 성능 하락을 유발할 수 있어서 잘 사용해야 함.
Logged/UnLogged Batch
- 단일 파티션을 대상으로 하는 Batch Operation은 Unlogged Batch로도 원자성과 격리성을 보장할 수 있음.
- 다만 다중 파티션을 대상하는 Batch Operation은 원자성을 보장하기 위해서 Logged Batch를 필요로 함.
- 다만 다중 파티션을 대상으로 하는 경우 Logged Batch를 사용하더라도 격리성을 보장할 순 없음
- (참고로 카산드라 특성상, 같은 키스페이스 내의 다른 테이블이더라도, 같은 파티션에 저장될 수 있음)
Logged Batch
다중 파티션에 Logged Batch Operation을 요청하면, 원자성을 보장하기 위해서, 카산드라는 Operation 수행 전 먼저 각 파티션에 batch log를 저장하고 Operation들이 성공하면 그때 batch log를 제거하는 방식으로 동작한다.
- 이런 이유로 당연하게 성능이 감소함 (대상 파티션이 많아질수록 점점 더 성능이 감소할 수 있음)
- 같은 파티션 내에 UnLogged Batch를 사용하거나, 적은 수의 파티션을 대상으로 Logged Batch를 사용하는 등 적절히 사용해야함.
Unlogged Batch
단일 파티션을 대상으로 하는 경우 굳이 batch log를 저장할 필요가 없음.
- 이런 이유로 단일 파티션을 대상으로 하는 Batch의 경우 default로 UnLogged Batch로 동작하고, 굳이 Logged Batch Operation 사용을 할 필요가 없음.
다중 파티션을 대상으로 하는 경우에도 원자성 보장이 필요 없다면, Unlogged Batch Operation을 사용하면 batch log를 저장하지 않기 때문에, log batch로 인한 성능 감소를 없앨 수 있음.
Counter Batch
- 카산드라 카운트 컬럼에, 대한 Batch 처리를 위한 Counter batch 옵션을 제공함.
- 다만 기본적인 타입과 카운터 타입에 대해서 같은 Batch Operation에 포함할 수 없는 제약사항이 존재함
반응형
'DBMS > Cassandra' 카테고리의 다른 글
Cassandra Data replication (0) | 2023.03.03 |
---|---|
Cassandra Partitioners (0) | 2023.03.03 |
Cassandra Gossip & seed nodes (0) | 2023.03.03 |
Cassandra 세컨더리 인덱스의 위험 이유 및 대응 방안 (0) | 2022.12.18 |
[Cassandra] 인증/권한 설정하기 (0) | 2022.09.30 |