Computer Science
-
[Cassandra] BatchOps insert if exist 컬럼에 null로 업데이트 하고 싶을 때Computer Science/Cassandra 2024. 6. 15. 17:50
Cassandra BatchOps Write Option에 대하여Cassandra에서 insert, update는 둘 다 upsert 방식으로 동작하기 때문에 근본적으로는 큰 차이가 없습니다. 자세히 들어가면 약간의 차이가 있지만 해당 내용은 이 글에서 다루지 않겠습니다.(참고 Link)cassandraTemplate.batchOps() .insert(Entities) .insert(Entities2) .execute();카산드라에서 batchOps를 통해서 경량 트랙잭션을 사용하여 원자성을 보장하도록 저장할 수 있습니다.존재하지 않는 PK에 대하여 INSERT -> 저장존재하는 PK에 대하여 INSERT -> 업데이트 위처럼 동작하게 될텐데 존재하는 PK의 row 필드 중에서 값이 존재..
-
[Cassandra] Cassandra truncate 이후 snapshot 제거Computer Science/Cassandra 2024. 4. 10. 21:57
Cassandra truncate 이후 snaptshot 제거 truncate TRUNCATE test_keyspsace.user_activity; 카산드라에서도 truncate 명령어로 테이블의 데이터를 지울 수 있다. 하지만 데이터를 다시 복구해야 할 수도 있기 때문에 스냅샷이라는 데이터를 남겨놓는다. 즉, truncate 한다고 해서 바로 Disk 사용량이 줄어들지 않고 스냅샷을 제거해야 서버의 Disk 사용량이 줄어들게 된다. snapshot 제거 ./nodetool clearsnapshot {keyspace} --all ex) ./nodetool clearsnapshot test_keyspsace --all Cassandra TRUNCATE 작업 후에 위의 명령어로 SNAPSHOT 제거도 필요하..
-
[MySQL] MySQL 인덱스 컨디션 푸시다운이란?Computer Science/Database 2024. 4. 10. 01:42
MySQL 인덱스 컨디션 푸시다운 이란? MySQL 5.6 버전부터는 인덱스 컨디션 푸시다운(Index Condition Pushdown) 이라는 기능이 도입 되었는데요. 어떤 내용인지 알아보겠습니다. 인덱스 컨디션 푸시 다운 secondary index에만 사용됩니다. 전체 row 읽기의 수를 줄여 I/O 작업을 줄이는 것. 인덱스를 범위 제한 조건으로 사용하지 못하는 쿼리에 한해서 발생하는 것 같음 (LIKE %name%, like > 10 같이 인덱스를 이용하지 못하는 범위 검색을 의미하는 것 같음) InnoDB Clustered index의 경우, 전체 레코드가 InnoDB 버퍼에 존재하기 때문에, 인덱스 컨디션 푸시다운을 사용해도 I/O가 감소하지 않음 MySQL SQL 수행 절차 MySQL 엔..
-
[Cassandra] Cassandra는 데이터를 어떻게 쓸까?Computer Science/Cassandra 2024. 2. 17. 00:58
Cassandra는 데이터를 어떻게 쓸까? 이번 글은 잘못된 정보 또는 뇌피셜 정보가 많이 섞여 있을 수 있음을 미리 말씀드리면서, 카산드라가 데이터를 저장(INSERT)할 때 내부적으로 어떤 과정을 거치는지에 대해서 정리해보겠습니다. 커밋 로그(Commit log) 데이터 쓰기 memtable 데이터 쓰기 memtable 데이터 플러시(flush) => memtable이 설정한 용량을 넘었을 경우 SSTables Disk에 데이터 저장 카산드라에서 쓰기(INSERT) 작업이 발생했을 때 위와 같은 동작이 존재합니다. 그림에서 보면 memtable은 메모리에 있고, 커밋 로그, SSTable은 Disk에 있는 것을 알 수 있습니다. 각 특징은 아래와 같습니다. Memtable – Memtable은 메모리..
-
[Cassandra] Cassandra vnode란?Computer Science/Cassandra 2024. 2. 13. 00:20
Cassandra vnode란 무엇일까? 카산드라에서 node라는 개념 하위에 vnode 라는 것이 존재하는데요. vnode는 무엇이며 카산드라에서 vnode를 사용하는 이유가 무엇인지 알아보겠습니다. (vnode 개념 찍먹하기) 들어가기 전에 Cassandra를 사용할 때 노드마다 데이터 분산을 균등하게 하기 위해서는 파티셔닝을 올바르게 진행해야 합니다. 혹시나 카산드라 토큰 할당 방식에 대해 모르고 있다면 여기 에서 토큰 할당 방법에 대해서 보고 오는 것을 추천드립니다. 카산드라 토큰의 범위는 -2^63 to +2^63 -1 이고, Partitioner는 Murmur3Partitioner(default)를 사용하여 데이터 분배를 진행합니다. (Link) node start range end range..
-
[Cassandra] Cassandra Consistency Level 이란?Computer Science/Cassandra 2024. 2. 12. 01:49
Cassandra Consistency Level 알아보자 이번 글에서는 카산드라 Write, Read 각각 Consistency Level에 대해서 어떤 특징이 있는지 알아보겠습니다. Casssandra CAP 특징 카산드라는 CAP 3가지 특징 중에 AP 시스템으로 높은 가용성과 파티션 허용 오차를 제공합니다. 상황에 따라 CP시스템으로 동작하도록 설정할 수도 있습니다. 즉, 카산드라에서는 Wrtie, Read의 Consitency Level을 어떤 값으로 설정하냐에 따라서 AP 시스템이 될 수도 있고, CP 시스템이 될 수도 있습니다. Consistency Level 이란? 일관성 수준은 코디네이터(coordinator) 노드가 non-lightweight transaction을 성공적으로 처리하기..
-
[Cassandra] Cassandra Partition에 대해 알아보자Computer Science/Cassandra 2024. 2. 5. 01:23
Cassandra Partition에 대해 알아보자 고가용성과 확장성을 위해 설계된 분산형 NoSQL 데이터베이스 시스템인 Cassandra에서 파티셔닝은 중요한 개념입니다. Cassandra는 데이터를 더 작은 파티션으로 나누어 클러스터에 분산하는 과정인 파티셔닝을 통해서 여러 노드에 걸쳐 데이터를 저장합니다. 카산드라를 사용할 때 성능을 최적화하고 데이터 분산을 균일하게 하기 위해서는 파티셔닝을 제대로 이해하고 구성하는 것은 아주 중요하고 필수적입니다. (안그러면 카산드라 사용하는 이유 및 효율성이 매우 떨어지는..) 본격적인 내용을 들어가기 전에 가볍게 Cassandra Partition Key, Clustering Key, Primary Key에 대해서 살짝만 알아보겠습니다. Primary Key..
-
[DB] Redis란 무엇일까? 간단하게 알아보기!Computer Science/Database 2021. 8. 10. 16:47
Redis란 무엇일까? Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. 레디스는 모든 데이터를 메모리에 저장하고 조회합니다. 즉, 인메모리 데이터베이스 입니다. 이 말만 들으면 Redis에 모든 데이터를 메모리에 저장하는 빠른 DB가 다라고 생각할지도 모릅니다. 하지만 빠른 성능은 레디스의 특징 중 일부분 입니다. 다른 인메모리 디비들과의 가장 큰 차이점은 레디스의 다양한 자료구조 입니다. 이렇게 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있습니다. 예를들어, 어떤 데이터를 정렬을 해야하는 상황이 있을 때, DBMS를 이용한다면 DB에 데이터를 저장하고, 저장..