20day - Debouce, Throttle, Lodash

이주영·2022년 12월 3일

데이터베이스에서 특정 단어가 들어간 게시글을 검색하는 방법에는 테이블 풀스캔이라는 방식이 있다. 일일히 하나하나 게시글을 확인해 단어가 들어가는지 확인하는 방식인데 너무 비효율적이다.
그래서 단어 별로 묶은 테이블을 하나 더 만드는데, 역인덱스 방식(Inverted Index)을 자동으로 만들어주는 프로그램이 엘라스틱서치(ElasticSearch)이다.
이런 단어 하나하나를 토큰이라고 부르고, 토큰을 쪼개는 과정을 토크나이징이라고 한다.
데이터가 들어오면 토크나이징을 하게 되고 그 토큰을 역인덱스로 색인하게 된다.
또 검색 결과를 메모리에 저장하고 빠르게 사용할 수 있도록 도와주는 메모리기반 데이터베이스가 있는데 이것을 Redis라고 한다.

Deboucing

예를 들어 '안녕'이라는 검색어를 입력한다고 하면 Graphql에는 ㅇ, 아, 안, 안ㄴ, 안녀, 안녕 이런 식으로 하나하나 다 데이터 요청이 들어가게 된다.
이런 비효율적인 메모리 낭비를 막기 위해서, 마지막으로 요청한 데이터만 보내고 싶을 때 사용할 수 있는 것이 Debounce이다.
마지막 입력을 기준으로 특정 시간 내에 추가 입력이 없으면 1번 실행해준다. - 마지막 한 번 요청

Throttling

Debouce와 반대이다. 최초 입력을 기준으로 특정 시간 내에 발생한 추가 입력을 무시하는 것이다. - 먼저 한 번 요청

이러한 기능들을 사용할 수 있도록 만들어주는 라이브러리가 lodash이다.

0개의 댓글