Database/Redis

캐시 전략 정리

minturtle 2024. 11. 15. 15:23
반응형

캐시의 읽기 전략

  1. Look-Aside : 먼저 캐시에 데이터 조회 -> 없으면 DB에서 조회후 캐시 저장하는 방식입니다.
    1. 장점 : 캐시에 장애가 발생해도 DB에서 데이터를 읽어올 수 있으므로 전체에 치명적인 영향을 주지 않습니다.
    2. 단점 : 동시에 여러 요청이 같은 키에 대해 캐시 미스가 발생할 경우, 데이터베이스에 중복 쿼리가 발생할 수 있습니다.
  2. Read-Through: 캐시에 데이터 조회, 없으면 DB에서 조회해와서 캐시에 저장 -> 캐시의 값을 반환하는 방식입니다.
    1. 장점: 어플리케이션이 캐시에만 값을 참조하므로 어플리케이션의 일관성이 존재합니다.
    2. 단점: 어플리케이션이 무조건 캐시 서버에서 데이터를 조회하므로 캐시서버가 다운되면 문제가 될 수 있습니다.
  • 요약 : 캐시 미스시 어플리케이션이 DB에 접근하면 Look Aside, 캐시가 DB에 접근하면 Read Through입니다.

캐시의 쓰기 전략

  1. Write-Back : 쓰기 작업을 우선 캐시에만 업데이트하고 특정 시점마다 DB에 한번에 저장하는 방식입니다.
    1. 장점: 쓰기 속도가 빠르고, DB INSERT 횟수를 줄일 수 있습니다.
    2. 단점: 캐시에서 오류가 발생하면 데이터를 소실할 수 있습니다. 주기적으로 영속화하는 작업이 추가로 필요합니다.
  2. Write-Through : 캐시에 먼저 기록한 후 바로 DB에 저장하는 방식으로, 하나의 요청에 cache write, DB write가 두번 일어납니다. 단, 쓰기 작업을 Application이 아닌 Cache에 위임합니다.
    1. 장점: 데이터 유실이 발생하지 않습니다. 캐시-DB간의 데이터 정합성이 100% 유지됩니다.
    2. 단점: 쓰기 속도가 지연될 수 있고, 자주 읽히지 않는 데이터도 캐시에 저장됩니다.
  3. Write-Around : 모든 데이터를 DB에 저장하고 이후 조회시 cache miss가 발생하는 경우에 캐시에 저장하는 방식입니다.
    1. 장점: Write Through 보다 빠릅니다.
    2. 단점: 캐시 미스율이 높아질 수 있고, 데이터 불일치가 발생할 수 있습니다.
  • 요약 : 어플리케이션이 Cache에만 쓰기 작업시 Write Back(후처리 필요), Cache, DB 둘다 쓰면 Write Through, DB에만 쓰면 Write Around입니다.

전략 조합별 비교

  1. Read-through + Write-Back
    • 장점: 읽기와 쓰기에서 모두 좋은 성능을 낼 수 있고, DB 부하를 감소시킬 수 있습니다.
    • 단점: 데이터 유실 가능성이 존재합니다.
  2. Look-aside + Write-around
    • 장점: 가장 일반적으로 사용하는 방식으로, 쓰기 작업의 성능이 좋고, 캐시 서버가 동작하지 않아도 문제가 발생하지 않습니다.
    • 단점: 새로운 데이터를 업로드할때마다 읽기시 캐시로 올려야 하고, 데이터 정합성이 깨질 수 있습니다.
  3. Read-through + Write-through
    • 장점: Application이 Cache만 참조하면 되므로 일관성있는 처리가 가능합니다.
    • 단점: 캐시 서버가 동작하지 않으면 치명적입니다.

참고

반응형