[CS] 캐싱

sing sang song·2022년 9월 22일
0

CS

목록 보기
4/8

캐시란 한 번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결과값을 받을 수 있도록 도와주는 공간이다.

같은 요청이 여러번 들어오는 경우에 캐시서버에서 바로 결과값을 반환하기 때문에 DB부하를 줄일 수 있다.

Look aside (lazy loading)Permalink

서버에 데이터를 요청한다.

캐시에 해당 데이터가 있는지 확인한다.

캐시에 데이터가 있으면 DB를 거치지 않고 해당 데이터를 반환한다.

데이터가 없으면 DB에서 데이터를 가져온다.

가져온 데이터를 캐시에 저장하고 클라이언트에 반환한다.

look aside cache는 캐시를 한번 접근하여 데이터가 있는지 판단한 후, 있다면 캐시의 데이터를 사용하며 없다면 실제 DB 또는 API를 호출하는 로직으로 구현. 대부분의 cache를 사용한 개발이 해당 프로세스를 따른다.

장점 :

요청 받은 데이터만 캐시에 저장, 파르토의 법칙에 따르면 전체 데이터 중 20% 정도에만 접근 하고 나머지 80%는 거의 접근이 없음. 따라서 실제로 접근이 있는 데이터만 캐시에 담을 수 있다.
캐싱 미스가 발생했을 때 실제 데이터에 접근하여 최신의 데이터를 가져오기 때문에 치명적이지 않음.
단점 :

캐시의 데이터가 DB의 최신 데이터와 동일하지 않을 수 있다. 캐시의 데이터를 반환했는데 부정확한 데이터가 반환될 수 있다.
캐시에 요청된 데이터가 있는지 확인하고, 없다면 DB에서 확인 후 DB 데이터를 캐시에 저장하는 구조기 때문에 캐싱미스가 많이 일어난다면 딜레이가 생길 수 있다.
Write-ThroughPermalink
Write-Through 전략은 데이터를 추가하거나 업데이트할 때 캐시에 동시에 업데이트하는 전략이다.

읽기 작업을 할 때는 DB에 접근할 필요 없이 캐시만 읽으면 된다.

장점 :

DB와 캐시를 동시에 업데이트 하기 때문에 데이터의 일관성을 유지할 수 있다.
단점 :

쓰기 작업을 할 때마다 캐시와 DB에 모두 생성해야 하기 때문에 쓰기 작업이 많은 시스템이라면 딜레이를 유발할 수 있다.
대부분의 데이터는 읽히지 않으므로 리소스 낭비로 이어질 수 있다.
Write BackPermalink
데이터를 캐시에 먼저 저장해놓고 일정기간 혹은 일정한 크기가 됐을 때 캐시에 모여있는 데이터를 DB에 저장한 후 캐시에 있던 데이터를 삭제하는 방식이다.

장점 :

Write-Through보다 훨씬 빠르다.
단점 :

속도가 빠르지만 캐시에만 데이터를 업데이트 하기 때문에, 캐시와 DB의 데이터가 서로 다른 경우가 발생할 수 있다

profile
세상을 선명하게

0개의 댓글