2013-07-22 11 views
0

DB에 엄청난 양의 데이터를 저장하고 캐시해야하는 응용 프로그램을 작성 중입니다. 클라이언트 요청이 오면 서버는 캐시에서 데이터를 가져 와서 동일한 데이터를 반환해야합니다. (오프라인 프로세스) 1. 우리는 json 파일 (약 6MB 크기)을 가져 오는 스프링 배치 응용 프로그램을 가지고 있습니다. 2. 각 개체를 읽고 DB에 저장합니다. 3. 약 17K 개의 레코드가 DB에 저장됩니다.파일을 사용하여 서버에 데이터를 캐시하는 방법

(온라인 프로세스) 4. 요청이 서버 (웹 응용 프로그램 - 스프링 웹 MVC)에 도착하면 응용 프로그램은 DB에서 데이터를 가져 와서 응답을 반환합니다.

여기서 DB 저장을 피할 계획입니다. DB를 사용하는 대신 파일 서버에 파일을 추가하고 서버가 시작될 때마다 파일에있는 데이터를 캐시 할 수 있습니까?

기존 방법론이 있다면 알려주십시오.

답변

0

캐시는 지속성을 대체하지 않습니다. 당신은 db 대신 파일 시스템에 데이터를 저장할 수 있지만, 처음에는 db를 가지고 있다는 요점은 일반적인 파일 시스템보다 db에서 데이터 저장 및 검색이 훨씬 빠릅니다. 왜냐하면 데이터 및 인덱싱을보다 잘 구조화하기 때문입니다 (데이터를 얻기위한 질의의 용이성의 큰 이점과 함께). 당신은 항상 거대한 파일 형식의 데이터베이스에 데이터를 덤프 할 수 있습니다 (권장하지 않음)

캐싱을 위해 memcached 또는 redis를 사용할 수 있습니다. 캐싱은 100 % 신뢰할 만하지 않습니다. 캐시가 지워 져야하는 시간을 지정하도록 캐시를 구성 할 수 있습니다. 또한 db에 데이터를 생성/업데이트 할 때마다 캐시 데이터를 계속 업데이트해야합니다. 캐시가 가득 차면 일반적으로 사용량이 가장 적은 리소스가 새 데이터를 수용하기 위해 먼저 캐시에서 지워집니다.

이상적인 솔루션은 memcache와 같은 캐싱 레이어와 함께 확장 가능한 (비 관계형 읽기) 데이터베이스를 사용하는 것입니다. 한 쪽 메모에서 Spring과 함께 memcache를 사용하는 것은 매우 쉽습니다 (아직 응용 프로그램에서 redis를 사용하지 않았습니다). json 데이터 형식에 대해 언급 했으므로 지속성을 위해 mongodb을 살펴보십시오.

관련 문제