-
캐시(Cache)란?
일시적으로 저장해두는 의미이자 기능이다.
캐시 메모리라 하면 실제 메모리와 CPU 사이에서 빠르게 전달을 위해 미리 데이터를 저장해두는 좀더 빠른 메모리이다.
네트워크에서 캐시는 로컬에 파일을 미리 받아놓고, 그 내용을 보거나 웹서비스에서도 매번 로딩해야 하는 파일들을 미리 로딩해두고 응답을 주기도 한다.
왜 캐시를 사용 하는가?
우리나라 기업용 웹애플리케이션은 대부분 RDBMS를 백엔드 서버로 두고 데이터 트랜잭션 위주로 운영되는 경우가 많다.
규모가 큰 사이트의 경우 성능을 위해 애플리케이션 서버나 데이터베이스 서버를 이중화 한다.
사용자가 많이 몰리면 결국 병목현상(bottleneck)이 발생하고 주로 데이터베이스인 경우가 많다고 한다.
이러한 데이터베이스의 성능을 향상하는 방법중 가장 근본적인 방법은 질의문을 줄이는 방법이 있다.
애플리케이션 입장의 캐시는 데이터베이스의 데이터를 정적인 메모리에 보관해 두었다가 필요할 때 데이터베이스가 아닌 메모리에서 바로 꺼내 쓰면 되는 것이다.
캐시의 기본적인 형태
데이터를 쌓아두고 원하는 데이터를 바로 찾을 수 있도록 Key-Value 쌍으로 구성하여 호출할 때 해당 Key를 캐시에 넘기면 그에 해당하는 데이터를 반환하게 하는 것이다. 이러한 방법은 Hash-Table을 사용하여 구현할 수 있다.
캐시에 들어갈 데이터는 자주 사용하면서 변경은 자주 일어나지 않고 (자주 읽지만 쓰기 빈도는 적은것), 그 데이터 양이 너무 크지 않은 것을 선택하는 것이 적합하다.
자주 사용하는 것을 캐싱할 수록 성능 향상에 도움이 되는데 양이 크다면 그 만큼 사용할 메모리를 소모하므로 메모리 성능에 악영향을 줄 수 있다. 또, 변경이 자주 일어나면 캐시나 데이터베이스를 그에 맞게 갱신해야 하므로 트랜잭션이 자주 발생하는 문제가 생긴다.
자바에서 캐시 구현하기 - 예정
Key - Value 형식의 캐시를 구현해보자.
데이터 질의문 - Key를 받아 원하는 Data를 찾아 Return하기
캐시 적재 - 데이터베이스에서 Data 로딩하기
'CS' 카테고리의 다른 글
잡다한 CS 지식 공부 (0) 2020.12.09 Thread (쓰레드) (0) 2020.12.01 Data base 2 (0) 2020.08.16 DataBase (0) 2020.08.16 운영체제_2 (0) 2020.07.08