개발기록/사이드 프로젝트

    해시태그 검색어 자동완성 기능 개발기 3 - 캐싱

    해시태그 검색어 자동완성 기능 개발기 3 - 캐싱

    (이전 포스팅에서 이어집니다.)해시태그 검색어 자동완성 기능 개발기 1 - DB 조회해시태그 검색어 자동완성 기능 개발기 2 - 인덱스  들어가면서 앞선 포스팅에서 해시태그 레코드 개수 자체가 150만 건까지 늘어나는 경우에도 목표 성능을 유지할 수 있도록 커버링 인덱스와 dto 프로젝션을 적용했습니다. 하지만 잠재적인 문제점은 여전히 남아있었습니다.  커버링 인덱스를 사용한다고 하더라도, count 컬럼에 따른 filesort 작업을 매 쿼리마다 수행해야 한다는 점입니다.현재는 해시태그 데이터들을 무작위 문자열로 생성해서 넣어둔 상태라서, 특정 문자열을 prefix로 가지는 레코드 개수에 쏠림 현상이 발생하지 않습니다.예를 들어, 매우 극단적인 경우 's'로 시작하는 해시태그만 100만개가 존재할 수 ..

    해시태그 검색어 자동완성 기능 개발기 2 - 인덱스

    해시태그 검색어 자동완성 기능 개발기 2 - 인덱스

    (이전 포스팅에서 이어집니다.)해시태그 검색어 자동완성 기능 개발기 1 - DB 조회  들어가면서 앞선 포스팅에서 해시태그 검색어 자동완성 및 추천 기능을 가장 간단하게 DB에서 필터링하는 방법으로 구현하고 성능 개선을 진행했었습니다. 하지만 예측되는 문제점들 중 아직 해결하지 못한 것들이 남아있었는데요, 내용은 다음과 같았습니다. 해시태그 레코드 개수 자체가 늘어나는 경우에 대한 성능 측정이 이뤄지지 않았습니다.현재는 모각코 일정에 매핑되는 해시태그 개수가 많이 늘어날 때 발생하는 성능 문제를 개선한 것이지, 해시태그 레코드 개수 자체가 늘어나는 경우에는 다른 성능 이슈가 발생할 가능성이 농후합니다.이번 포스팅에서는 해시코드 레코드 개수 자체가 늘어나도 문제가 없도록 API를 개선해보고자 합니다.  ..

    해시태그 검색어 자동완성 기능 개발기 1 - DB 조회

    해시태그 검색어 자동완성 기능 개발기 1 - DB 조회

    들어가면서 최근 진행하고 있던 모각코 스케쥴러 사이드 프로젝트에서 검색어 자동완성 기능이 필요하여 개발하게 되었습니다. 모각코 일정을 생성하는 사용자는 해당 모각코에 모인 사람들이 어떤 기술 스택을 사용하는지, 어떤 키워드의 영역을 주로 다루는 사람들인지 간편하게 표시할 수 있도록 하기 위해 해시태그를 설정할 수 있습니다.   이 때 사용자는 해시태그를 직접 입력하게 되는데, 입력하는 문자열에 따라 기존에 생성되어 있던 해시태그를 추천받아 선택해서 사용할 수 있어야 합니다. 우선은 입력받은 문자열을 기반으로 DB 단에서 직접 필터링하여 조회해오는 가장 간단한 방식으로 구현한 뒤, 예상되는 문제점에 맞춰서 개선해보려고 합니다.   요구사항 정리 및 설계 해시태그 검색어 자동완성 및 추천 기능에 대한 요구사..