숏폼프로젝트의 검색기능을 강화 하고자 MongoDB 아틀라스서치와 Elasticsearch 에 대한 이야기가 팀내에서 나왔고
1두가지의 공통점과 2. 차이점을 비교한후 3. 어떤 것을 선택했는지 4. 그것을 선택했을때 어떠한 장점이 있는지를 간단하게 서술하고자 합니다.
우선 검색 부분에서 몽고DB 와 아틀라스 서치의 비교
MongoDB Atlas Search는 전체 텍스트 검색 기능을 제공하지만,
복잡한 검색 시나리오를 위한 Elasticsearch만큼 기능이 풍부하거나 성능이 뛰어나지는 않습니다.
기본에서 중간 정도의 검색 요구 사항을 충족하려면 Atlas 검색으로 충분할 수 있습니다.
엘라스틱 서치와 몽고DB 의 주요 차이점
Elasticsearch는 주로 빠르고 복잡한 검색 쿼리, 특히 텍스트 검색에 최적화된 검색 엔진이며, MongoDB는 범용 문서 지향 데이터베이스입니다. Elasticsearch는 검색 기능과 실시간 데이터 분석에서 뛰어난 성능을 발휘하며, MongoDB는 다양한 데이터 형식과 구조를 저장하는 데 더 적합합니다.
Elasticsearch와 MongoDB는 모두 좋은 확장성을 제공하지만, 방식은 다릅니다. Elasticsearch는 데이터를 여러 노드에 분산시켜 빠른 검색 및 검색을 가능하게 하여 검색 작업의 확장성을 높입니다. MongoDB는 샤딩을 사용하여 여러 서버에 데이터를 분산시켜 대량의 데이터와 높은 쓰기 부하를 효율적으로 처리할 수 있게 합니다.
Elasticsearch는 일반적으로 복잡한 텍스트 검색, 집계 및 실시간 분석, 특히 대량의 텍스트 데이터를 사용할 때 더 나은 성능을 발휘합니다. MongoDB는 간단한 쿼리, 문서 검색, 빈번한 업데이트가 필요한 시나리오에 더 효율적입니다. 성능은 특정 사용 사례와 데이터 크기에 따라 달라질 수 있습니다.
Elasticsearch는 빠른 검색 및 검색에 최적화된 Lucene 세그먼트를 사용하여 데이터를 역 인덱스에 저장합니다. MongoDB는 데이터를 BSON 형식(Binary JSON)으로 저장하고 메모리 매핑 파일을 사용합니다. 이 파일은 일반 데이터베이스 사용에 더 유용하며 더 넓은 범위의 데이터 유형과 구조를 지원합니다.
언제 MongoDB 대신 엘라스틱서치를 를 선택해야하는지 에 대하여
주요 요구 사항이 전체 텍스트 검색, 로그 및 이벤트 데이터 분석, 실시간 분석 대시보드 또는 추천 시스템일 때 Elasticsearch를 선택합니다. 복잡한 검색 기능과 빠른 데이터 검색이 필요한 애플리케이션에 이상적입니다.
어떤 시나리오에서 MongoDB 가 엘라스틱 서치보다 나은 선택이 되는지에 대하여
MongoDB는 콘텐츠 관리 시스템, 모바일 앱 백엔드, IoT 데이터 저장 및 분석, 그리고 이커머스 제품 카탈로그에 적합합니다. 유연한 데이터 모델링, 효율적인 CRUD 작업, 다양한 데이터 유형의 저장이 필요한 애플리케이션에 가장 적합합니다.
프로젝트 내 현재 계획에 엘라스틱서치를 활용한 만큼의 복잡한 텍스트 검색이나 집계를 실시간으로 분석한다거나 하는 것에 대한 계획이 당장 없는거에 비해 다양한 리소스들이 추가로 더 들어감을 가정 했을때
엘라스틱 서치보다는 아틀라스서치가 비용적,시간적,복잡성,볼륨 등에 상당한 이점이 있다고 판단하여 아틀라스 서치를 이용하기로 했습니다.
다음은 아틸라스 서치를 이용했을시 검색기능이 실제로 얼마나 강화되는지에대해서 서술하겠습니다.
아틸라스 서치란 데이터 베이스, 검색 엔진, 동기화 메커니즘을 하나의 통합된 완전 관리 플랫폼에 통합함으로써,아틀라스서치는 관련성 기반 검색 기능을 애플리케이션에 직접 구축하는 가장 빠르고 쉬운 방법입니다.
현재는 영상을 업로드 할떄 타이틀, 설명, 해시태그 등으로 등록하고 해당하는 것을 검색함으로써
검색된 영상들이 나오게 하고있습니다 하지만 검색에 오타가 난다거나 ( 동의어 ) 의미가 어긋나거나 ( 의미검색)했을때
아무런 검색결과도 나오지않고 또한 검색에 자동완성과 빠른 패싱기능 또한 없습니다
사용자가 해당 서비스를 이용시 검색기능 관련 사용자 경험이 떨어질거라고 생각이 되었습니다 그리하여
추후 우리 프로젝트에서 추후 아틸라스 서치를 이용하여 검색기능을 현재보다 강화하여
보다나은 서비스를 제공하기위해 아틀라스서치를 도입할 계획입니다.
'Deep Dives > Technical Notes' 카테고리의 다른 글
용어 정리 (4) | 2025.05.23 |
---|---|
의사결정 PostgreSQL vs MySQL (3) | 2024.12.19 |
프로젝트 보안 강화를 위한 Helmet과 다른 것들 비교 , XSS attack (1) | 2024.12.08 |
동영상 쇼츠 서비스 프로젝트 기술적 의사 결정 part 2 테스트 도구편 Artillery를 선택한 이유 vs K6 vs Locust 그리고 APM 을 선택한 이유 vs 다른 도구들 (0) | 2024.12.03 |
Node.js백 엔드 서버 개발자 주니어의 동영상 쇼츠 서비스 프로젝트 기술적 의사 결정 (4) | 2024.11.28 |