전체 글
-
[Coroutine] withContext, async 차이는 무엇일까?Reactive/Coroutine 2024. 11. 6. 22:22
withContext, async 차이withContext인자로 받은 CoroutineContext를 사용해 코루틴의 실행 스레드를 전환하고, 람다식의 코드를 실행한 후 결과값을 반환하는 함수람다식을 실행한 후에는 스레드가 다시 이전의 Dispatcher를 사용하도록 전환된다.fun main() = runBlocking { val result = withContext(Dispatchers.IO) { delay(2000L) println("${Thread.currentThread().name} 결과값이 반환됩니다.") "결과값" } println("${Thread.currentThread().name} 결과값이 반환됩니다. result: $result"..
-
[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 Insert와 Update 차이가 무엇일까?Computer Science/Cassandra 2024. 4. 20. 00:07
Cassandra Insert와 Update 차이가 무엇일까? 카산드라는 append 모델을 사용하기 때문에 INSERT와 UPDATE 작업 사이에 근본적인 차이가 없습니다. 기존 행에 존재하는 PK와 동일한 데이터를 INSERT 하면 UPDATE가 되고 UPDATE를 했는데 PK가 존재하지 않으면 신규 row를 생성한다는 특징을 가지고 있습니다. 실제 테스트를 해보면서 INSERT, UPDATE 각각 어떤 특징을 가지고 있는지 좀 더 알아보겠습니다. (테스트 Cassandra 버전: 4.0.6) CREATE TABLE experiment ( id text PRIMARY KEY, info text); 카산드라 테이블 하나를 생성 하겠습니다. 그리고 2가지 경우의 쿼리를 실행 해보겠습니다. Part1 IN..
-
[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 제거도 필요하..