• Cache


 - 정의
  • 나중에 필요할 수도 있는 무언가를 저장하였다가 신속하게 회수할 수 있는
   보관 장소로, 어떤 식으로든 보호되거나 숨겨진다

• 메모리 계층 구조(기본 이론1)


 - 데이터를 저장하는 공간의 속도와 용량은 반비례 관계
  • 속도가 빠른 메모리일수록 용량이 작음
  • 용량이 큰 저장장치는 속도가 느림
  • 둘 다 잡기에는 비용이 너무 많이 든다
  => 데이터 저장 공간은 속도와 용량에 따라 특성에 맞게 역할을 나누어 사용한다

 - 데이터 저장 공간을 속도 용량 순서대로 쌓으면 마치 피라미드와 같은 형상이 나타난다
   (Memory Hierarchy)

• 파레토의 법칙(기본 이론2)


 - 이탈리아의 경제학자 빌프레도 파레토가 발견한 현상
 - 원인 중 상위 20%가 전체 결과의 80%를 만든다는 법칙
 - 2 대 8 법칙이라고도 한다
 - 여러 곳에서 관찰할 수 있는 이 법칙
  • 인구의 20%가 전체 부의 80%를 가지고 있다
  • 잘 팔리는 제품 20%가 매출의 80%를 차지한다
  • 많이 쓰이는 단어 20%가 언어 사용빈도의 80%를 차지한다

• 데이터 지역성의 원리(기본 이론3)


 - 자주 쓰이는 데이터는 시간적 혹은 공간적으로 한 곳에 몰려 있을 가능성이 높다

  • 시간 지역성(Temporal Locality)
    예를 들어 for문에서 조건변수(int i = 0;)를 선언했을 때,
    해당 변수는 for문이 끝나기 전까지 계속 쓰일 확률이 높은 것

  • 공간 지역성(Spatial Locality)
    예를 들어 for문에서 어떤 배열에 접근했을 때, 해당 배열이 위치한 메모리 공간의
    내용은 for문이 끝나기 전까지 계속 쓰일 확률이 높은 것

    for문에서 array[0], array[1], array[2]… 와 같이 배열에 접근할 때,
    다음번에는 array[3]에 접근할 확률이 높은 것을 따로 분류하여
    순차 지역성(Sequential Locality)이라고 부르기도 한다

• 캐시의 작동 방식


 - 원본 데이터(System-of-Record)와는 별개로 자주 쓰이는 데이터(Hot Data)들을
   복사해둘 캐시 공간을 마련한다 캐시 공간은 상수 시간[O(1)] 등 낮은 시간 복잡도로
   접근 가능한 곳을 주로 사용한다

 - 데이터를 달라는 요청이 들어오면, 원본 데이터가 담긴 곳에 접근하기 전에
   먼저 캐시 내부부터 찾는다

 - 캐시에 원하는 데이터가 없거나(Cache miss) 너무 오래되어 최신성을 잃었으면
   (Expiration) 그때서야 원본 데이터가 있는 곳에 접근하여 데이터를 가져온다
   이 때 데이터를 가져오면서 캐시에도 해당 데이터를 복사하거나 혹은 갱신한다

 - 캐시에 원하는 데이터가 있으면 원본 데이터가 있는 공간에 접근하지 않고
   캐시에서 바로 해당 데이터를 제공한다(Cache hit)

 - 캐시 공간은 작으므로, 공간이 모자라게 되면 안 쓰는 데이터부터 삭제하여
   공간을 확보한다(Eviction)

• 캐시가 쓰이는 사례


 - CPU의 캐시 메모리
 - 하드디스크, 데이터베이스
 - CDN(Content Delivery Network)
 - 웹 캐시
 - 브라우저 캐시
 - Redis
 - EHcache


출처 : 우아한Tech(10분 테코톡)

댓글남기기