-
MongoDB Atlas SearchDatabase 2024. 5. 1. 22:06
프로젝트에서 검색 방법을 바꿔야 할 필요가 있어요.
관심이 생겨 찾아보는데 정리해 두면 좋을 것 같아서 생각의 흐름을 적어봐요.
근본적인 시스템을 바꾸지 않고는 지금 구조에서는 지금 생각이 베스트 같은데 혹시 더 좋은 방법이 있으면 알려주세요...
요구사항
- 검색어로 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