Search Process

훈이·2022년 10월 20일
0
post-custom-banner

Search Process

사용자가 브라우저에 검색어를 입력하면 백엔드 API로 요청이 들어가며 백엔드 서버에서는 검색어에 대한 결과를 데이터베이스에서 찾아 그 결과를 사용자에게 보여준다.

검색어에 대한 결과를 MySQL과 같은 데이터베이스에서 찾게되면 매우 오래걸린다. 그러면 어떻게 빠른검색을 구현할 수 있을까???

Index

  • 인덱스(책갈피)는 데이터베이스의 테이블을 빨리 조회하기 위해 테이블 데이터에 포인터를 주는 검색 방법이다.
  • 특정 컬럼에 인덱스를 지정해주면 테이블 조회시에 인덱스를 이용해 빠르게 조회할 수 있다.

Redis

  • Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하며 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원한다.

  • Redis는 모든 데이터를 메모리에 저장하고 조회한다.

  • Redis는 Key,Value 형태로 데이터를 저장한다.

    위의 이미지와 같이 다양한 자료구조를 지원하여 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.

  • 그래서 메모리에 저장하는 데이터베이스인 Redis를 이용하고 Redis에서 제공하는 Sorted-Set(유일한 값들의 모임인 자료구조 이지만 순서는 관리해주지 않는 Set자료구조에서 순서 관리 특성을 더한 것)이라는 자료구조를 사용하면 빠르고 간단하게 데이터를 정렬할 수 있다.


그래서 위의 이미지에서 Redis에 검색결과가 저장되어 있다면 빠르게 가져올 수 있으며 없다면 MySQL 또는 Elasticsearch로 간다.

Elasticsearch

  • 엘라스틱서치(Elasticsearch)는 모든 데이터를 색인(Indexing)하여 저장하고 검색, 집계 등을 수행한다.
  • 엘라스틱서치는 기본적으로 역파일 색인(inverted file index)라는 구조로 데이터를 저장하여 가공된 텍스트를 검색한다.
  • 엘라스틱서치는 검색을 위해 단독으로 사용되기도 하지만, Logstash, Kibana와 같이 ELK스택으로 같이 사용된다.

Logstash : 다양한 소스(DB, csv파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 엘라스틱서치로 전달한다.

Kibana : 엘라스틱서치의 빠른 검색을 통해 데이터를 시각화 및 모니터링 한다.

참고한 사이트 : https://victorydntmd.tistory.com/308

profile
백엔드 개발자가 되자!
post-custom-banner

0개의 댓글