데이터베이스 3

MongoDB 복합 인덱스 최적화 - ESR 룰

몽고DB 조회 속도 개선을 위해 인덱스를 하나둘 걸어 보게 되고그게 적절한 수준을 넘어서 조잡해지면서 되려 복잡도만 올라가고 효용은 떨어지는 경험을 하게된다몽고DB 아틀라스에서 자체적으로 인덱스 조합을 추천해주기도 하지만 이 또한 만능은 아니다. 자주 변경되는 요구사항에 대응하며 최적화를 진행해야하는데..몽고DB에서 권장하는건 ESR룰이다 E : equlityS : sortR : range 이 순서로 인덱스를 건다는 의미인데정확히 일치하는 필드로 조회,동등성 검증 후 정렬,정렬된 데이터들의 범위를 제한해 성능을 개선한다는 것이다. 조회할 데이터의 동등 조건으로 쿼리 대상을 줄인 뒤에 정렬을 배치하면논블로킹으로 정렬이 가능하다. 몽고DB는 범위 필터 결과에 인덱스 정렬을 수행할 수가 없기 때문에 정렬 이..

데이터베이스 2024.11.06

MySQL - 전문검색 쿼리 (자연어, BOOLEAN)

전문 검색 쿼리 모드MySQL 서버의 전문 검색 쿼리는 자연어 검색모드, BOOLEAN 검색모드를 지원하고 default 는 자연어 검색이다.자연어 검색모드와 같이 사용할 수 있는 검색어 확장 기능도 지원한다.자연어 검색 (NATURAL LANGUAGE MODE)자연어 검색은 검색어에 제시된 단어들을 가장 많이 가지고 있는 순으로 정렬해서 결과를 반환한다.SELECT id, title, contents, MATCH(title, contents) AGAINST ('뿌링클' IN NATURAL LANGUAGE MODE) AS scoreFROM articleWHERE MATCH(title, contents) AGAINST ('MySQL' IN NATURAL LANGUAGE MODE);BOOLEAN 검색자연어 ..

데이터베이스 2024.10.06

MySQL - LIKE 문에서 전문검색으로의 전환

FULL TEXT INDEX검색을 개선해보자데이터가 점차 쌓이다 보니 슬로우 쿼리도 생기고 정확도 순으로의 검색도 도입해보자LIKE문 에서 FULLTEXT조회로 변환한다전문검색MySQL 서버의 인덱스라 하면 B-Tree 자료구조로 단어를 검색이 가능하지만 MySQL 서버는 용량이 큰 문서를 단어 수준으로 잘게 쪼개 문서검색이 가능한데 이것을 전문검색(Full-text Search)라고 한다.예전 버전의 MySQL서버는 일부 스토리지 엔진에서만 제공됐던 전문검색 기능을 8.0 버전부터 InnoDB 스토리지 엔진에서도 사용 가능하도록 개선되었다.문서의 단어들을 분리해 형태소를 찾고 인덱싱하는 방법은 서구권 언어에서는 적합하지만 한국어에는 적합하지 않다. 이것을 보완하기 위해 MySQL 8.0에서부터 형태소나..

데이터베이스 2024.10.03