카산드라는 Null 값을 가지는 칼럼이 없다. 따라서 select * from users where location is Null; 과 같은 구문을 사용할 수 없다. 반면, RDB는 칼럼에 약간의 공간을 할당해 Null값을 표현한다. 아래 그림을 보면 잘 알 수 있다. 카산드라는 Null이 없기 때문에 칼럼 자체가 없는 걸 볼 수 있다. 이는 카산드라가 row key를 키로 하는 key-value 저장소이기 때문에 스키마가 유연해서 그렇다.
대신 데이터를 사용할 때 Null을 활용할 수 있다. update users set location = Null where username='alice' 는 delete location from users where username='alice'와 같다. 위와 같은 Null을 활용한 삭제는 여러 업데이트를 동시에 할 때 유용하다. update users set email='kim@naver.com', location=Null where username='carol' 와 같이 여러 칼럼을 동시에 업데이트하면서 삭제할 수 있다.
(참고로, 카산드라의 delete는 rdb의 delete와 다르다. 엄밀히 말하면 delete는 tombstone이라는 삭제를 나타내는 flag로 칼럼을 업데이터하는 걸 의미한다.
'cassandra' 카테고리의 다른 글
Cassandra(카산드라) Denormalization과 logged batch (0) | 2020.01.15 |
---|---|
카산드라(Cassandra) Secondary Index는 사용하지 마라!! (0) | 2020.01.14 |
카산드라 데이터 모델링은 query-driven(쿼리 기반) 방식을 사용해야 한다. (0) | 2020.01.13 |
Cassandra(카산드라) Partition(파티션)/Cluster key에 대해서 (0) | 2020.01.06 |
Cassandra/카산드라 소개 및 특징 (0) | 2019.12.16 |