본문 바로가기
728x90

프로젝트/원툴4

[DB] FULL TEXT INDEX 도입에 관해 현재 원툴에서 키워드 검색 기능을 제공하고 있다. 도면의 제목과 작가를 검색하는 기능으로 LIKE문을 사용하고 있다. LIKE 문의 비용은 원래 크다고 배웠다. 그래서 왜 느린지 원인을 분석하고 Full Text Index 도입에 대해 고민해보고자 한다. Full Text Index란?긴 문자의 텍스트 데이터를 빠르게 검색하기 위한 MySQL의 부가적인 기능이다. InnoDB의 전체 텍스트 인덱스는 역색인 설계를 따릅니다. 근접 검색을 지원하기 위해 각 단어의 위치 정보도 바이트 오프셋으로 저장됩니다. 역 색인(인버트 인덱스)이란?색인이 데이터에서 키워드를 빠르게 찾는 기법이라면 역 색인은 키워드로 데이터를 찾는 기법을 말한다. 검색 엔진에서 추출된 키워드를 term라고 한다. 즉, 검색 엔진은 특정 문.. 2025. 6. 2.
[Test] 테스트 코드 작성에 대한 의문점 테스트 코드를 왜 작성하는가? 나는 크게 3가지의 이유로 테스트 코드를 작성한다고 생각한다. 예외 처리를 위해프로덕션 코드 변경에 따른 영향을 쉽게 파악하기 위해코드 작성의 의도를 문서화 이 중 나는 1번과 3번의 의미가 테스트 코드에서 크다고 생각한다. >에서도 3번에 대한 내용을 강조하고 있다. 해당 책에선 대부분의 테스트 코드(80%가량)가 단위 테스트로 이루어져야 한다고 말한다. 그래서 나도 이번 프로젝트에서 각 레이어의 메서드별 테스트 코드를 작성하였다. 그 결과 코드 커버리지는 높일 수 있었지만 테스트 코드 작성의 필요성에 대한 궁금증이 더 커졌다. 작성할 수록 모르겠는 테스트 코드현재 자바 진영에서 주로 Mockito 라이브러리를 통해 테스트 코드를 작성한다. 나 또한 Mockito를 통해 .. 2025. 4. 10.
[DB] N+1 문제 해결을 위한 최고의 선택은? 현재 상황기존 코드의 경우, 키워드를 통한 Blueprint를 검색하는 JPQL을 사용하고 있다. 이 경우에 당연하게도 Blueprint에 있는 연관관계에 의해 N+1이 발생하게 된다.// Blueprint@OneToMany(mappedBy = "blueprint")private List orderBlueprints = new ArrayList();@OneToMany(mappedBy = "blueprint")private List cartBlueprints = new ArrayList();// BlueprintRepository@Query(value = "SELECT b FROM Blueprint b WHERE (b.blueprintName LIKE %:keyword% OR b.creatorName LI.. 2025. 3. 13.
[DB] Soft Delete 도입에 관해 논리적 삭제를 통해 얻게되는 장단점을 먼저 정리해보자📌 Soft Delete 개요Soft Delete 장점정보 보존에 따른 복구 가능DELETE 보다 빠른 속도의 UPDATE데이터를 활용한 추후 서비스 및 활용이 가능Soft Delete 단점데이터베이스 용량 증가모든 쿼리에서 소프트 딜리트된 데이터를 제외시켜야 함🤔 도입해야 할까?우리 서비스에 필요한가?현재 서비스에서 제공되는 기능 중 주요한 데이터라고 생각되는 것은 도면과 결제, 주문, 회원이라고 생각된다.도면의 경우, 추후 도입될 업로드 기능이 생길 경우 복구가 불가피할 것으로 보인다. 또한 삭제한 데이터도 가지고 있어 도면에 대한 데이터를 축적할 수 있다는 장점을 가진다.회원의 경우도 회원가입 시 선택되는 직업, 나이에 대한 정보가 우리 서비스.. 2025. 2. 12.
728x90