MySQL3 Elasticsearch vs MySQL FullText 인덱싱 성능 비교 테스트 FullText와 Elasticsearch 비교하려는 목적 : 더 적합한 검색 기능 구현 방식 찾기기존에 LIKE 방식에서 MySQL FullText 방식으로 변경하면서 검색 성능을 높일 수 있었다. 200만 데이터 기준으로 성능 테스트를 진행한 결과, MySQL FullText 방식이 LIKE 방식보다 35배 빠른 성능을 보였다. 또한, '과일마켓 스티커'를 검색했을 때, LIKE 방식은 '과일마켓'과 '스티커' 단어를 포함한 결과만 반환했지만, FullText 방식은 '과일', '마켓', '스티커' 단어가 각각 포함된 결과를 가져왔다. 과일', '마켓', '스티커'와 같은 단어들의 적절한 조합을 포함한 검색 결과를 제공할 수 있어, 사용자 입장에서 더 관련성 높은 검색 결과를 얻을 수 있다고 생각하여.. 2025. 3. 23. Full Text Search를 이용한 DB 성능 개선 상품 검색 기능 개선like의 한계LIKE 검색은 인덱스를 활용하지 못하기 때문에 대량의 데이터에서 성능 저하를 유발한다고 한다. 검색 성능 테스트를 하면서, 실제로 데이터 수가 40 → 200만으로 증가했을 때, 검색 속도가 0.4초 → 4.5초로 느려짐을 확인할 수 있었다. 검색 기능 개선방향: MySQL의 FullText N-gram, ElasticSearch현재 구현한 방식인, LIKE '%검색어%' 구문은 문자열의 중간 검색을 수행하므로 B-tree 인덱스를 사용하지 못하고 Full Table Scan을 해야 한다. 보통 like 키워드 검색 성능 최적화를 위해 MySQL의 FullText N-gram이나 ElasticSearch으로 해결한다고 한다. 나의 경우는 Like에서 FullText으로.. 2025. 3. 6. 관계형 데이터베이스에서의 컬렉션 처리 : Room 엔티티의 구조 개선 이번 시간엔 프로젝트를 진행하면서 만난 RDB에서의 컬렉션 이슈를 정리해볼 예정이다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같아요. 목차 목차는 다음과 같다. Room에 대한 요구사항 : 여러 개의 태그를 가진다. 스터디방 태그 관리: RDB와 컬렉션 구조의 한계 RDB에는 내부적으로 컬렉션을 담을 수 있는 구조가 없다. RDB에서 컬렉션 타입의 처리: Entity로 정의하여 일대다(1:N) 관계를 정의한다. Room에 대한 연관관계 매핑정의 회고 Room에 대한 요구사항 : 여러 개의 태그를 가진다. 프로젝트 개발하기 이전에 Room에 대한 요구사항을 세웠었는데, 그 중 하나다. Room(스터디방)에 여러 개의 방 태그를 붙일 수 있다. 요구사항을 분석해서 만든 스.. 2024. 3. 18. 이전 1 다음