분류 전체보기(255)
-
1:1 채팅 기능 개선 (feat. NoSQL 및 비동기 로직 적용)
프론트엔드와 함께하는 프로젝트에서 1:1 채팅 기능 개발을 맡았다. 기본 기능을 구현한 후, 남은 3일 동안 가능한 리팩토링 방안을 고민했고, 최종적으로 데이터베이스를 RDBMS에서 NoSQL로 변경하고(채팅 저장, 조회) 추가적으로 채팅 저장 로직을 비동기로 전환하기로 결정했다. 아래는 개선 과정에서 고려했던 주요 사항들을 기록으로 남겨보려 한다. 부족한 부분이 있겠지만 기한안에 완성을 목표로 했다.🤠 목차채팅 설계저장소 (MySQL → MongoDB → 아카이빙) 어떤 데이터베이스를 쓸 것인가? AS-IS : MySQL TO-BE : 키-값 저장소로 변경(MongoDB) 그럼에도, 아카이빙동기 → 비동기 AS-IS : 동기 TO-BE : 비동기 스프링 이벤트 외부..
2024.12.06 -
[CS 스터디] 5주간의 네트워크 스터디 회고
목차JSCODE 모의면접 신청 계기스터디 진행 방식잘한 점아쉬운 점앞으로는 이렇게 JSCODE 모의면접 신청 계기10월 말쯤 생각을 했을 때 11월 초에는 프로젝트와 이력서, 포트폴리오가 마무리되는 일정이었다. 따라서 11월 한 달 동안은 부족했던 컴퓨터공학 지식을 채우는 데 전념하려 했다. 그 당시 Java, Spring, 운영체제, 네트워크, 자료구조/알고리즘, 데이터베이스 하나씩 나의 지식의 정도를 확인했을 때, 그 중에서 네트워크가 가장 모호하고 개념이 명확하게 잡히지 않는 상태였다. 그래서 한 달 동안은 네트워크에 전념해 전공생과 현직자 분들과 스터디를 함에 있어서 제일 잘하고 싶다는 목표를 세우게 되었다. 스터디 진행 방식총 5주간 일주일에 한 번 진행했다. 평균적으로 4명이서 진행했고 1명..
2024.12.02 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.6 다수 쿼리를 UNION 연산자로만 합치는 나쁜 SQL문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ UNION ALL 연산자로 변경해 보자🚀 정리 ❌ 문제의 SQL 문요구사항 : 성이 Baba이면서 성별이 M인 사원 데이터와 성이 Baba이면서 성별이 F인 사원 데이터를 합해서 조회하는 쿼리를 작성해 주세요.select 성별, 사원번호 from 사원 where 성별 = 'M' and 성 = 'Baba'unionselect 성별, 사원번호 from 사원 where 성별 = 'F' and 성 = 'Baba'; 수행 결과+--------+--------------+| 성별 | 사원번호 |+--------+--------------+| M | 11937 || M | ..
2024.10.07 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.5 습관적으로 중복을 제거하는 나쁜 SQL 문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ DISTINCT 키워드를 제거해 보자🚀 정리 ❌ 문제의 SQL 문요구사항 : 사원의 사원번호, 이름, 성, 그리고 부서 관리자의 부서번호를 중복 없이 조회하는 쿼리를 작성해 주세요.select distinct 사원.사원번호, 사원.이름, 사원.성, 부서관리자.부서번호from 사원join 부서관리자 on (사원.사원번호 = 부서관리자.사원번호); 수행 결과총 24건이며 소요 시간은 0초에 가깝게 나왔다.😎 실행 계획 살펴보기1. id 값이 둘 다 1이므로 서로 조인하고 있다.2. 부서관리자 테이블의 type이 index로 인덱스 풀 스캔을 하고 있다.3. 사원 테이블의 type은 eq_ref으로 사원번호(PK)를 사용해 1건의 데이..
2024.10.04 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.4 열을 결합하여 사용하는 나쁜 SQL 문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ 열을 결합하는 과정을 제거하고, 열을 분리해 보자🚀 정리 ❌ 문제의 SQL 문요구사항 : 사원 테이블에서 성별의 값과 1칸의 공백, 성의 값을 모두 결합한 결과가 ‘M Radwan’인 데이터를 조회하는 쿼리를 작성해 주세요.- CONCAT 함수는 여러 문자열을 연결하는 데 사용SELECT * FROM 사원 WHERE CONCAT(성별, ' ', 성) = 'M Radwan'; 출력 :총 102건이고 소요 시간은 약 0.13초가 나왔다. 😎 실행 계획 살펴보기사원 테이블에만 접근하여 데이터를 가져오고 있다. 문제의 SQL문에서는 WHERE 조건절로 데이터에 접근하는 반면, 실행계획을 확인해 보니 type 항목이 ALL 테이블 풀 스캔을 하고 있..
2024.10.02 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.3 형변환으로 인덱스를 활용하지 못하는 나쁜 SQL 문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ 형변환이 발생하지 않도록 SQL을 수정해 보자🚀 정리 ❌ 문제의 SQL 문요구사항: 급여 테이블에서 현재 유효한 급여 정보만 조회하는 쿼리를 작성해 주세요.사용여부 열의 값이 1인 데이터가 유효한 급여 정보입니다.SELECT COUNT(*) FROM 급여 WHERE 사용여부 = 1; 출력:1건이 출력되었고 데이터는 총 42,842건이며 sql 소요시간은 약 0.48초로 나타났다. 😎 실행 계획 살펴보기key항목이 I_사용여부로 출력되고, type항목이 index이므로 인덱스 풀 스캔 방식으로 테이블의 데이터를 찾고 있다. 그리고 filtered항목이 10이므로 MySQL엔진으로 가져온 데이터 중 10%를 추출해서 최종 데이터를 출력했다는 것..
2024.09.13