Elasticsearch 사용의 장점
1.고성능 텍스트 검색
- Full-Text Search: Elasticsearch는 역색인 방식(Inverted Index)을 사용하여 텍스트 검색을 빠르게 처리합니다. 이는 MySQL의
LIKE '%keyword%'
쿼리에서 발생하는 풀 스캔 문제를 해결할 수 있습니다.
- 다양한 검색 기능: 텍스트 기반 검색에서 완전 일치뿐만 아니라 부분 일치, 접두사 검색, 근접 검색 등 다양한 고급 검색 기능을 제공합니다.
<aside>
💡
고객이 "피자"라는 단어로 검색할 때, Elasticsearch를 사용하면 미리 정리된 인덱스를 사용해 "피자"라는 단어가 포함된 식당 이름이나 해시태그가 어디 있는지 빠르게 찾을 수 있습니다.
</aside>
2. 동시성 문제 완화
- MySQL: MySQL은 트랜잭션 격리 수준에 따라 읽기와 쓰기 작업이 동시에 일어날 때 잠금이 발생할 수 있으며, 동시 사용자가 많을 경우 병목 현상이 생길 수 있습니다. 특히 실시간 검색 서비스나 대규모 트래픽을 처리하는 경우, 검색 쿼리가 쓰기 트랜잭션과 충돌해 성능 저하가 발생할 수 있습니다.
- Elasticsearch: Elasticsearch는 데이터 검색과 읽기 작업에 있어 동시성을 훨씬 더 잘 처리합니다. 분산형 아키텍처로 설계되어 있어 여러 노드에서 검색 작업을 병렬로 처리할 수 있기 때문에 동시 검색이 많은 환경에서도 성능이 유지됩니다.
<aside>
💡
MySQL에서 트랜잭션 격리 수준을 낮출 수도 있지만 이로 인해 데이터 일관성 문제가 발생할 수 잇습니다. Elasticsearch를 도입하면 일관성을 포기하지 않으면서도 빠른 검색을 제공할 수 있습니다.
</aside>
참고자료
https://hanamon.kr/elasticsearch-검색엔진-nori-형태소-분석기-검색-고도화-방법/
https://zero-zae.tistory.com/248?category=1052506