-
[Cassandra] BatchOps insert if exist 컬럼에 null로 업데이트 하고 싶을 때Computer Science/Cassandra 2024. 6. 15. 17:50728x90반응형
Cassandra BatchOps Write Option에 대하여
Cassandra에서 insert, update는 둘 다 upsert 방식으로 동작하기 때문에 근본적으로는 큰 차이가 없습니다. 자세히 들어가면 약간의 차이가 있지만 해당 내용은 이 글에서 다루지 않겠습니다.(참고 Link)
cassandraTemplate.batchOps() .insert(Entities) .insert(Entities2) .execute();
카산드라에서 batchOps를 통해서 경량 트랙잭션을 사용하여 원자성을 보장하도록 저장할 수 있습니다.
- 존재하지 않는 PK에 대하여 INSERT -> 저장
- 존재하는 PK에 대하여 INSERT -> 업데이트
위처럼 동작하게 될텐데 존재하는 PK의 row 필드 중에서 값이 존재하는데 null로 변경하려고 할 때는 적용이 되지 않았습니다.
왜 적용이 안되지 하면서 찾아보았는데 원인은 batchOps insert 할 때 특정 필드가 null 이면 제외하는 것이 디폴트 옵션이라 그렇습니다.
cassandraTemplate.batchOps() .insert(Entities, InsertOptions.builder().withInsertNulls().build()) .execute();
만약에 null로 업데이트 하고 싶다면 위와 같이
InsertOptions
을 사용하면 됩니다.Reference
반응형'Computer Science > Cassandra' 카테고리의 다른 글
[Cassandra] Cassandra truncate 이후 snapshot 제거 (0) 2024.04.10 [Cassandra] Cassandra는 데이터를 어떻게 쓸까? (2) 2024.02.17 [Cassandra] Cassandra vnode란? (2) 2024.02.13 [Cassandra] Cassandra Consistency Level 이란? (0) 2024.02.12 [Cassandra] Cassandra Partition에 대해 알아보자 (0) 2024.02.05