분류 전체보기
-
[Coroutine] runBlocking vs coroutineScope 차이는?Reactive/Coroutine 2024. 11. 9. 02:46
runBlocking, coroutineScope 차이점runBlockingrunBlocking 내부에서 새로운 코루틴 스코프를 생성블록 내부의 모든 코루틴이 끝날 때까지 runBlocking이 호출된 쓰레드는 대기주로 main 함수와 같이 비코루틴에서 호출할 때나 테스트 코드에서 코루틴을 사용할 때 일반적인 코드 블록처럼 동작하게 하기 위해 사용됨 coroutineScopesuspend 함수 안에서만 호출할 수 있음coroutineScope는 새로운 코루틴 스코프를 만들지만 현재 쓰레드를 차단하지 않음 1. Coroutine 신규 생성 여부fun main() { runBlocking { println("[Main] ${Thread.currentThread().name}") ..
-
[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 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..
-
[Kafka] Kafka를 처음 공부할 때 보면 좋은 내용들DevOps/Kafka 2023. 1. 8. 00:57
Kafka 처음 사용할 때 알면 좋은 것들 이 글은 제가 Kafka를 사용하면서 겪은 경험보다는 Kafka를 공부하면서 처음 사용할 때 알면 좋은 것들의 이론에 대해 정리한 글입니다. 참고한 곳은 맨 아래에 있습니다. Kafka 기본 Cluster, Broker란? Lag 란? Topic, Partition 이란? 레코드란? 컨트롤러란? 코디네이터란? 데이터 삭제 Replication Factor란? 리더 팔로워란? ISR 이란? Producer Producer 주요 옵션 ack=all과 브로커의 min.insync.replicas 옵션의 관계 Consumer Consumer 대표 옵션 컨슈머 그룹이란? 컨슈머 리밸런스 특징 컨슈머 하트비트란? 컨슈머 그룹 특징 토픽의 파티션에는 하나의 컨슈머만 연결 가..
-
2022년 0년차 개발자의 회고Retrospect 2023. 1. 1. 01:42
2022년 0년차 개발자의 회고 이번 글에서는 2022년 0년차 개발자가 된 한 해의 회고를 진행해보려 한다. 회고의 제목은 0년차 개발자의 회고 이지만, 내용은 내가 한 해 동안 어떤 일들이 있었는지 2021년 회고와 비교해보고, 기록하면서 회고해보려 한다. 대학교 9학기 2021년이 끝났을 때만 해도 드디어 나도 대학교를 졸업하는 줄 알았다. 하지만 2022년 1월 초에 0.5점이 부족해서 졸업할 수 없다는 학교의 전화를 받았다.(130 학점을 채워야 졸업인데 129.5 학점을 채웠다.) 계절학기 수강신청도 다 끝났기 때문에 0.5학점을 채우기 위해서는 무조건 9학기를 다녀야 하는 상황이었다. 졸업 사정 확인을 제대로 못한 나의 책임이 100% 였기에 누구도 탓할 수 없었고 너무나 속상했다. 바보도 ..
-
[Spring] Multi Module에서 implementation으로 참조 못하는 에러 해결하기Server/Spring 2022. 11. 27. 18:06
Multi Module JPA Cannot Access Error 해결하기 이번 글은 Multi-Module을 사용했을 때 반드시 발생하는 에러는 아니고 필자처럼 사용했을 때 에러가 발생할 수 있는 상황이다. Cannot access 'org.springframework.data.repository.Repository' which is a supertype of 'org.springframework.data.repository.CrudRepository'. Check your module classpath for missing or conflicting dependencies Multi Module로 진행할 때 JPA에서 제공해주는 findById 메소드를 사용하려는데 위와 같은 에러가 발생했다. 또 에..