프로젝트

DB설계 전략

content0474 2025. 1. 23. 20:12

1. 캐시 읽기 전략: Look-aside vs Read-through

Look-aside 전략

작동 방식:

애플리케이션이 먼저 캐시(Redis)에서 데이터를 조회.

캐시에 데이터가 없는 경우(PostgreSQL에서 조회) 필요한 데이터를 DB에서 가져오고, 가져온 데이터를 캐시에 저장.

이 프로젝트와의 적합성:

크롤링된 모든 데이터의 캐싱:

이 프로젝트는 챗봇이 크롤링 데이터를 처리한 후 Redis와 PostgreSQL에 모든 데이터를 저장합니다.

사용자 요청 시 Redis에서 우선 데이터를 조회하고, 캐시에 없는 경우에만 PostgreSQL에서 데이터를 가져옵니다.

효율적인 사용자 요청 처리:

사용자 요청 시 캐시를 먼저 조회하여 빠르게 데이터를 제공하며, Redis에서 데이터를 찾지 못할 경우 PostgreSQL을 조회하여 필요한 데이터를 가져옵니다.

데이터 갱신과 유연성:

Redis는 크롤링 후 모든 데이터를 저장하되 TTL(1일)을 설정하여 최신 데이터를 유지합니다.

사용자 요청 시 필요한 데이터를 동적으로 관리할 수 있어 Look-aside 전략의 유연성을 유지합니다.

Read-through 전략과의 비교

왜 Read-through를 선택하지 않았는가?:

자동 캐싱 오버헤드: Read-through는 모든 데이터를 캐시에 자동으로 저장하므로, 요청되지 않은 데이터도 캐시를 차지해 메모리 낭비가 발생할 수 있습니다.

효율성 부족: 주기적으로 크롤링된 데이터 중 일부만 사용자 요청으로 활용되므로, Read-through는 캐시에 필요 이상으로 많은 데이터를 저장하게 됩니다.

실시간 맞춤형 처리 부족: 이 프로젝트는 사용자 요청 시점에 동적으로 데이터를 관리하는 것이 중요하므로 Look-aside가 더 적합합니다.

2. 캐시 쓰기 전략: Write-through vs Write-around vs Write-back

Write-through 전략

작동 방식:

데이터를 PostgreSQL과 Redis에 동시에 저장.

업데이트나 생성 작업 시 데이터 일관성을 유지.

이 프로젝트와의 적합성:

데이터 일관성 보장:

Redis와 PostgreSQL에 데이터를 동시에 쓰므로, 캐시와 DB의 데이터가 항상 동기화됩니다.

크롤링 데이터를 챗봇이 처리한 즉시 Redis와 PostgreSQL에 저장하여 실시간 요청 처리에서 최신 데이터를 제공합니다.

단순한 캐시 관리:

캐시와 DB를 동시에 업데이트하기 때문에 추가적인 캐시 무효화(invalidation) 로직이 필요 없습니다.

실시간 데이터 업데이트:

크롤링한 데이터와 챗봇 처리 결과가 Redis와 PostgreSQL에 즉시 반영되므로, 사용자 요청 시 데이터를 바로 제공할 수 있습니다.

Write-around 전략과의 비교

왜 Write-around를 선택하지 않았는가?:

캐시 미스 증가: Write-around는 캐시에 데이터를 저장하지 않고 DB에만 저장하므로, 사용자가 새로운 데이터를 요청할 때 캐시 미스가 발생하고, PostgreSQL에 불필요한 부하를 줄 수 있습니다.

실시간 데이터 제공 한계: 새로운 데이터를 캐시에 저장하지 않기 때문에 실시간 요청 처리에서 Redis의 장점을 살릴 수 없습니다.

Write-back 전략과의 비교

왜 Write-back을 선택하지 않았는가?:

데이터 손실 위험: Write-back은 캐시에만 데이터를 저장하고 나중에 DB에 반영하므로, Redis 장애 시 데이터 손실 가능성이 있습니다.

복잡한 동기화: 캐시와 DB 간의 동기화 로직을 추가로 구현해야 하므로 관리 복잡성이 증가합니다.

프로젝트의 실시간 요구사항 미충족: Write-back은 데이터베이스에 반영이 지연되기 때문에, 최신 데이터를 제공해야 하는 실시간 서비스에는 부적합합니다.

'프로젝트' 카테고리의 다른 글

비동기 작업 도구 선택  (1) 2025.01.27
DB설계 전략-2  (0) 2025.01.24
도커 실행 시 크롬드라이버와 크롬 버전 불일치  (1) 2025.01.22
ResourceExhausted  (0) 2025.01.21
소셜계정 연동 시 중복확인 문제  (0) 2025.01.20