2016-11-23 1 views
0

정기적으로 업데이트중인 데이터베이스가 있습니다. 나는 ehcache와 mysql 데이터베이스를 사용하고있다.캐시를 데이터베이스와 동기화하는 방법은 무엇입니까?

이제 데이터베이스가 업데이트되면 업데이트에 따라 데이터베이스에서 일부 정보를 추출하여 캐시에 게시해야합니다.

  1. 내 데이터베이스를 캐시와 동기화 상태로 유지해야합니까 (데이터베이스가 업데이트되면 캐시가 업데이트되어야합니까?).
  2. 데이터베이스가 업데이트 된시기를 어떻게 알 수 있습니까?
+1

은 동일한 응용 프로그램 또는 다른 응용 프로그램을 통해 데이터베이스에 직접 업데이트되는 데이터베이스입니까? –

+0

동일한 응용 프로그램 인 경우 데이터베이스가 업데이트 될시기를 알고 있습니다. –

+0

하지만 내 데이터베이스를 ehcache와 동기화하는 방법 –

답변

2

이것은 캐싱에 의해 도입 된 고전적인 문제입니다. 데이터베이스와 캐시에서 데이터를 복제하는 순간 일관성 문제가 발생합니다.

대답이 없습니다.

1에 대한 대답은 오래된 데이터가 캐시에서 제공되는 것을 방지하는 것이 얼마나 중요한지에 달려 있습니다. 경우에 따라 문제가되지 않으며 짧은 만료 시간으로 문제를 해결할 수 있습니다. 다른 경우에는 캐시에 최신 데이터가 있어야하며 캐시 된 항목이 무효화되었는지 확인해야합니다.

완전히 안전한 방법으로이 작업을 수행하는 것은 어렵습니다. 따라서 Hibernate has so many second level cache strategies은 안전하고 안전하지만 느리고 느립니다.

2 번 질문의 경우 이는 응용 프로그램에 따라 다릅니다. 응용 프로그램 만 데이터베이스를 업데이트하는 경우 캐시를 무효화합니다. 데이터베이스가 외부 적으로 업데이트 된 경우 무효화를 보낼 수 있도록 해당 시스템에서 응용 프로그램 (또는 적어도 캐시)을 인식하도록해야합니다.

관련 문제