2011-12-05 5 views
1

내 Azure 역할에서 SQL Azure 데이터베이스에 저장해야하는 항목이 많습니다. 현재 엔티티를 읽어야 할 때마다 SQL Azure 쿼리 만 실행합니다.Azure 역할에서 데이터베이스 읽기를 캐시하는 방법은 무엇입니까?

곧 병목 현상이 발생하여 일종의 캐싱을 구현해야한다고 생각합니다. 첫 번째 액세스에서 데이터를 읽은 다음 일정 기간 동안 데이터를 저장하고 후속 읽기에서 캐싱 된 데이터를 반환하는 일부 메모리 구조. 그런 구조를 만드는 것은 어렵지 않아야한다. 나는 쉽게 사용할 수있는 코드를 찾을 수있을 것이라고 확신한다.

문제는 여러 인스턴스의 쓰기 작업과 관련이 있습니까? 예를 들어, 인스턴스 1은 데이터를 읽고 캐시하여 인스턴스 2는 데이터베이스를 변경합니다. 인스턴스 1이 데이터베이스를 다시 읽어야하고 실제로 데이터베이스를 다시 읽지 않는다면 잘못된 데이터와 함께 작동합니다. 나는 그것을 쉽게하는 방법을 모른다.

다른 인스턴스의 캐시를 일관되게 유지하는 간단한 방법이 있습니까?

답변

4

이 어디 플레이에 캐싱 comee을 배포하고, 푸른에 일반적으로 Windows Azure AppFabric Caching

을 의미 분산 캐싱 뒤에 아이디어는 캐시가, 그런 식의 중앙이며, 잠재적으로 (효율성) 여러 서버에 분산이다 데이터 요청은 일반적으로 성능면에서 상대적으로 비싼 데이터베이스로 갈 필요는 없지만 똑같이 각 프로세스에서 로컬로 캐시 할 필요가 없습니다. ,

  1. 그것은 사실 기본 과정 중 캐시와
  2. 소스
  3. (그리고, 여러 번 호출을 방지 않습니다 -에 - PROC 캐싱 분명히 효율적이지 하다니

    는 분산 캐싱은 여러 가지 장점이 있습니다 다른 서버에서) 로컬 메모리에 대한 부담을 덜어줍니다.

  4. 클라이언트가 서로의 페치를 통해 이익을 얻습니다. 즉, 한 클라이언트가 데이터를 캐시에 가져오고 보안 설정이 허용되면 다른 클라이언트가 이제이 정보에 액세스 할 수 있으므로 캐시 활용 더 커질 수 있습니다.

이것은 또한 '진실'에 대한 최신 지식을 가진 클라이언트가 캐시를 업데이트하거나 실제로 무효화 할 수 있음을 의미합니다. 즉, 동일한 캐시를 공유하는 다른 모든 클라이언트에게 즉각적인 이점이 있습니다.

Azure에서도 캐시 팜을 확장하여 여러 요청을 처리 할 수 ​​있습니다. 캐시가 서비스로 제공되므로 이는 플랫폼이 소유자가 아니라 관리하는 것입니다. PaaS 및 Windows Azure의 큰 장점 중 하나임 캐시 정보 정보

1

Yossi는 AppFabric 캐싱을 사용할 수 있지만 Memcached도 사용할 수 있습니다.

1

Azure AppFabric 캐싱을 사용하려는 경우 데이터의 일관성을 유지하려는 경우 로컬 캐싱을 해제 할 수 있습니다.

단점은 요청 당 캐시에서 두 개 이상의 아이템을 꺼내는 것이 주요 병목 현상이 될 것이라는 점입니다. 캐시 된 객체를 하나의 큰 객체로 결합하여이 문제를 해결할 수 있습니다.

I posted a question Microsoft 포럼에서이 내용을 다루었으며 로컬 캐싱이 필요한 경우 오래된 데이터는 부실 데이터입니다.

참고로 로컬 캐싱이 필요하고 웹 역할을 사용하는 경우 일반 ASP.Net 캐싱이 더 좋은 옵션 일 수 있으며 별도의 요금이 부과되지 않습니다.

관련 문제