20day - Debouce, Throttle, Lodash

이주영·2022년 12월 3일
0

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

Deboucing

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

Throttling

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

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

0개의 댓글