본문 바로가기

AWS Design Pattern/관계 데이터베이스 패턴

Inmemory DB Cache - 자주 사용되는 데이터 캐시화

ㅁ  풀어야 할 문제

데이터베이스 부하의 대부분은 읽기에 관한 것인 경우가 많다. 그 때문에 데이터베이스의 읽기 성능을 개선하면 시스템 전체의 성능 향상과 연결된다.

 

  해결/패턴

데이터베이스에서 읽기 성능을 높이는 방법으로 읽기에 자주 사용되는 데이터를 메모리에 캐시하는 것이 일반적이다. 한번 사용한 데이터를 캐시에 올려두고 다음에 사용할 때(디스크가 아닌)메모리에서 읽기 처리를 끝내는 방법이다.

캐시하는 데이터의 전형적인 예로, 데이터베이스 처리에 있어서 시간이 걸리는 쿼리 결과나 복잡한 계산 결과 등을 들 수 있다.

 

  구현

AWS ElastiCache는 메모리 캐시 서비스다 이 서비스는 장애 시의 자동 복구 기능 등도 가지고 있다.

-       메모리 캐시를 준비한다. ElastiCache를 사용해도 되며, EC2에 오픈 소스인 mem-cached를 이용해도 된다.

-       데이터를 읽을 때 먼저 메모리 캐시의 데이터를 참조한다. 데이터가 없다면 DB에서 읽어오고 캐시에 데이터를 등록한다.

ㅁ  장점

-       캐시로 빠른 메모리를 이용하여 데이터베이스의 읽기 부하를 줄이고 시스템 전체의 성능을 높일 수 있다.

-       ElastiCache를 사용하면 효율적인 운영이 가능하고 장애에도 강해 짐

ㅁ  주의점

-       쿼리의 결과를 캐시 할 때는 트레이드 오프를 고려해야 한다. 특정 쿼리의 읽기와 쿼리에 관련된 테이블의 쓰기 비율이 중요하다.

-       예를 들어, 참조를 매우 많이 하고(분당 몇 차례) 갱신이 얼마 없는(매일 또는 매시간마다) 경우는 캐시 할 필요가 있다. 그러나 캐시에 오래된 데이터가 남아 있지 않도록 처리가 필요하다.

-       캐시를 이용하려면 DB에 액세스하는 프로그램을 수정해야 한다.