MongoDB Atlas Search

2024. 5. 1. 22:06Database

MongoDB

 
 
프로젝트에서 검색 방법을 바꿔야 할 필요가 있어요.
관심이 생겨 찾아보는데 정리해 두면 좋을 것 같아서 생각의 흐름을 적어봐요.
근본적인 시스템을 바꾸지 않고는 지금 구조에서는 지금 생각이 베스트 같은데 혹시 더 좋은 방법이 있으면 알려주세요...
 

요구사항

  • 검색어로 RDB 에 저장된 부동산 이름 및 주소를 검색
  • 부동산 타입별 검색
  • 특정 부동산 타입에 대해서는 내부적으로 정의한 count 가 많은 순으로 정렬
  • 검색하는 갯수 지정

추가적으로 데이터 업데이트는 거의 일어나지 않음
 

문제

  • 현재는 검색을 위한 tsv 파일을 만들고, 서버 실행 시 메모리에 올려두고 사용함.
  • 데이터가 추가되면서 tsv 파일의 사이즈가 너무 커짐. 대략 10GB
  • 이 방법으로 사용하려면 현재 사용 중인 AWS ECS 대신 EC2 로 변경하거나, ECS 인스턴스 사양을 올려야 함.
  • ECS 인스턴스 사양을 올린다고 해도 컨테이너 실행 과정에서 tsv 파일을 가져오는라 처음 컨테이너 시작하는데 시간이 늘어남.

 

기존의 RDB 사용하기

  • 그냥 지금 사용 중인 RDB 에서 Full-Text Search, LIKE 쿼리를 잘 쓰면 안 될까?

문제점

  • 검색어로 2글자가 쓰인 경우가 많을 텐데, Full-Text Search 사용 시 2글자 검색을 할 수 없음.
    • 현재 사용 중인 AWS RDS for Aurora 에서는 innodb_ft_min_token_size 설정을 바꿀 수 없다.
  • LIKE 쿼리를 쓴다면 (*검색어*) 와 같이 검색어 양쪽에 와일드카드가 쓰여야 할 텐데 그러면 B-Tree Index를 제대로 사용하지 못한다.
  • 결론은 쿼리가 너무 느리고 RDB 로 쓰기 어려울 것 같다.

 

다른 방법

  • AWS CloudSearch
    • search.m4.large / 0.255$
    • 최소 사양이 너무 비쌈.
    • 처음에 document insert 가 편리한 거 말고 큰 장점을 모르겠음.
  • AWS OpenSearch
    • 1개 노드기준 / t3.small.search / 0.056$
    • CloudSearch 보다 저렴
  • MongoDB Atlas Search
    • 3개 노드 기준 / M10 Tier / 0.08$
    • Storage 10GB
    • 나중에 Vector DB 도입하는 것도 고려함.
  • AWS 를 쓰고 있어서 OpenSearch 쓰는 것도 고민되는데 지금 생각은 MongoDB Atlas Search 사용하는 게 베스트 같음.

 

MongoDB Atlas Search 확인

  • MongoDB Atlas 에서 무료플랜으로 써볼 수 있어서 console 에서 작은 사이즈로 데이터 넣고 Search Index 생성해서 테스트해 봤는데 기대한 대로 작동한다.
  • console 이 친절하게 잘 되어 있어서 MongoDB 를 처음 사용해도 쓰기 어렵지 않았다.

 

결론

  • RDB 를 메인으로 쓰고 있는데 작은 규모의 검색이 필요하며, 나중에 NoSQL 데이터 저장을 고려한다면 MongoDB Atlas 사용이 좋은 것 같아요.
  • 상세한 구현 과정은 아직 결제를 못해서... 지금 생각한 구조로 진행하게 되면 다음 기회에 적어볼게요.

 
 

찾으면서 보니까 MongoDB 좋은 것 같아서 나중에 개인 프로젝트 할 일 있으면 메인으로 써보고 싶어요.
 

 

'Database' 카테고리의 다른 글

공동주택 공시가격 DB 저장하기  (2) 2024.02.15
mysql whitespace to null  (0) 2024.02.14
MySQL wait_timeout  (0) 2023.10.27
PostgreSQL collate 한글 컬럼 정렬  (2) 2023.04.04
PostgreSQL Index  (2) 2023.02.26