내 잡다한 노트

Cache의 갱신 방식 본문

DB

Cache의 갱신 방식

peanutwalnut 2024. 12. 9. 15:03

캐싱에서 갱신 방식은 캐시와 원본 데이터(예: 데이터베이스, 파일 시스템) 간의 동기화를 어떻게 처리할지 결정하는 중요한 요소입니다. 갱신 방식에 따라 데이터 일관성과 성능이 크게 달라질 수 있습니다. 아래에서 주요 갱신 방식의 동작 원리와 장단점을 더 자세히 설명하겠습니다.

 

1. Write Through

  • 개념: 데이터를 캐시에 쓰는(write) 동시에 원본 데이터에도 저장하는 방식입니다.
  • 작동 흐름:
    1. 클라이언트가 데이터를 캐시에 저장 요청.
    2. 캐시는 데이터를 저장한 후 원본 데이터베이스에도 동일한 데이터를 저장.
    3. 캐시와 원본 데이터는 항상 동기화된 상태를 유지.

장점:

  • 데이터 일관성이 높음(캐시와 원본 데이터가 항상 동일).
  • 데이터 유실 가능성이 낮음(캐시에 장애가 발생해도 데이터베이스에 데이터가 남아 있음).

단점:

  • 쓰기 작업이 느림(캐시와 원본 데이터에 두 번 기록해야 함).
  • 쓰기 작업이 많을수록 성능 저하 가능.

사용 사례:

  • 데이터 일관성이 매우 중요한 시스템(예: 금융 시스템).

 

 

2. Write Back (Write Behind)

  • 개념: 데이터를 캐시에만 저장하고, 이후 특정 조건(예: 주기적 또는 비동기적)에서 원본 데이터베이스에 저장하는 방식입니다.
  • 작동 흐름:
    1. 클라이언트가 데이터를 캐시에 저장 요청.
    2. 캐시는 데이터를 저장하지만, 데이터베이스에는 즉시 저장하지 않음.
    3. 데이터는 일정 시간이 지난 후(또는 트리거 발생 시) 데이터베이스에 반영.

장점:

  • 쓰기 작업이 빠름(캐시에만 저장하므로).
  • 캐시에만 접근하므로 데이터베이스의 부하가 감소.

단점:

  • 캐시에 장애가 발생하면 데이터 유실 가능성.
  • 데이터베이스와 캐시 간의 일관성 유지가 어려울 수 있음.

사용 사례:

  • 쓰기 작업이 많고 데이터 일관성 요구가 낮은 경우(예: 로그 수집, 분석 데이터).

 

3. Read Through

  • 개념: 데이터를 읽는 요청이 들어왔을 때, 캐시에 데이터가 없으면 원본 데이터에서 읽고, 읽은 데이터를 캐시에 저장하는 방식입니다.
  • 작동 흐름:
    1. 클라이언트가 캐시에 데이터를 요청.
    2. 캐시에 데이터가 없으면 캐시가 원본 데이터베이스에 요청.
    3. 가져온 데이터를 캐시에 저장하고, 클라이언트에 반환.

장점:

  • 읽기 요청에 대해 캐시가 자동으로 데이터베이스에서 데이터를 가져옴.
  • 구현이 간단하며, 캐시 적중률이 높아질수록 성능이 개선됨.

단점:

  • 처음 요청 시 데이터베이스 접근으로 인해 지연 발생(Cache Miss의 성능 저하).
  • 쓰기 작업은 별도의 방식으로 처리해야 함.

사용 사례:

  • 데이터 읽기 빈도가 높고, 데이터베이스 부하를 줄이고 싶은 경우(예: API 응답 캐싱).

 

 

4. Write Around

  • 개념: 데이터를 캐시에 저장하지 않고, 원본 데이터베이스에만 저장하는 방식입니다. 읽기 요청 시 데이터가 없으면 캐시에 저장.
  • 작동 흐름:
    1. 클라이언트가 데이터를 저장 요청.
    2. 데이터는 캐시에 저장되지 않고, 데이터베이스에만 저장.
    3. 이후 클라이언트가 데이터를 요청하면, 데이터베이스에서 읽어 캐시에 저장.

장점:

  • 캐시가 쓰기 작업에 의한 오버헤드를 피할 수 있음.
  • 최근에 자주 읽히는 데이터만 캐시에 저장(자주 읽히지 않는 데이터는 캐시에 저장되지 않음).

단점:

  • 초기 읽기 요청이 많을 경우 Cache Miss가 많이 발생하여 성능 저하 가능.
  • 데이터가 쓰인 직후 바로 읽힐 경우 캐시에 저장되지 않아 비효율적.

사용 사례:

  • 데이터 읽기 빈도가 불규칙하거나, 캐시 크기가 제한적인 경우.

 

 

갱신 방식 선택 가이드

갱신 방식장점단점적합한 사용 사례

Write Through 높은 데이터 일관성 쓰기 성능 저하 데이터 일관성이 중요한 경우 (예: 금융)
Write Back 쓰기 성능 우수, 데이터베이스 부하 감소 데이터 유실 가능성, 일관성 낮음 쓰기 작업이 많고 데이터 일관성이 덜 중요한 경우
Read Through 캐시가 데이터베이스와 자동으로 동기화 Cache Miss 시 성능 저하 읽기 빈도가 높은 데이터
Write Around 캐시의 부담 최소화 읽기 직후 성능 저하 가능 읽기와 쓰기 패턴이 불규칙한 데이터

 

 

 

'DB' 카테고리의 다른 글

DB에서 Join 이란?  (0) 2024.12.09
데이터 정규화(Normalization)  (0) 2024.12.09
트랜잭션(Transaction)  (1) 2024.12.09
DB에서 ACID 성질  (0) 2024.12.09