2012-03-21 1 views
0

Azure로 이동할 ASP.net 응용 프로그램이 있습니다. 이 응용 프로그램에는 9 개의 테이블을 조인하여 사용자 레코드를 생성하는 쿼리가 있습니다. 그런 다음 각 레코드는 json에서 직렬화되고 클라이언트와 함께 앞뒤로 전송됩니다. 쿼리 성능을 높이려면 처음 9 개의 쿼리를 실행하고 json에서 레코드를 serialize하면 결과 문자열이 JsonUserCache라는 테이블에 저장됩니다. 이 테이블에는 2 개의 열만 있습니다 : JsonUserRecordID (고유) 및 JsonRecord. 클라이언트로부터 사용자 레코드가 요청 될 때마다 JsonUserCache 테이블이 먼저 쿼리되어 9 개의 조인으로 쿼리를 수행하지 않도록합니다. 사용자가 로그 오프하면 JsonUserCache에서 작성한 레코드가 삭제됩니다.Azure가있는 NoSQL 및 AppFabric

테이블 JsonUserCache는 SQL Server입니다. 나는 단순히 모든 것을 그대로 남겨 둘 수 있지만 더 좋은 방법이 있는지 궁금해하고 있습니다. 키/값을 저장하고 해당 사전을 AppFabric에 저장하는 간단한 사전을 만드는 방법에 대해 생각하고 있습니다. 또한 NoSQL 공급자를 사용하고 Azure에 대한 옵션이 있거나 AppFabric의 사전을 고수해야하는지 고려 중입니다. 아니면 다른 대안이 있습니까?

의견을 보내 주셔서 감사합니다.

+0

AppFabric이라는 용어로 무엇을 언급하고 있는지 명확히 할 수 있습니까? 캐싱 서비스를 의미합니까? 또는 다른 것? –

+0

사전을 AppFabric에 저장한다는 의미입니다. 나는 AppFabric이 RAM 저장소라고 읽었으므로이 두 가지는 하드 드라이브 IO에 의존하기 때문에 SQL Azure 또는 Table storage보다 빠를 수도 있습니다. – frenchie

답변

1

"컴퓨터 무언가에는 캐시 무효화 및 이름 지정과 관련된 두 가지 문제가 있습니다."

필 Karlton

캐시를 만료하는 문제를 가지고 당신은 분명 캐시에 대해과 일반적인 원칙으로, 당신이 (다른 곳 SQL 또는) 캐시 된 데이터를 유지하지 않아야 이야기 (현재있는 것처럼) 삭제 작업을 수행해야합니다. 어딘가에서 결과를 저장하고 나중에 정리하는 데 신경 쓰지 않는다면 Azure blob에 넣으십시오. 브라우저에서 쉽게 액세스 할 수 있으며 요청을 자신의 응용 프로그램에서 처리 할 필요가 없습니다.

전통적인 캐시로 구현하려면이 옵션을 살펴보십시오.

  1. 웹 캐싱의 메모리에 캐시하는 ASP.NET 캐싱을 즉시 사용할 수 있습니다. 즉, 사용자가가는 모든 인스턴스에서 조인이 다시 실행되지만 인스턴스의 수와 평균 세션의 지속 기간에 따라 구현이 가장 간단 할 수 있습니다.
  2. AppFabric 캐시를 사용하십시오. 이것은 배울 수있는 추가 API이며 많은 고유 방문자가있는 경우 상당히 높은 추가 비용이 발생할 수 있습니다.
  3. Memcached와 같은 특수 분산 캐시를 사용하십시오. 이것은 모든 비용을 스스로 부담해야하는 번거 로움이 있지만, 장기적으로는 많은 유연성을 제공합니다.

편집 : 모두 RAM 기반입니다. ASP.NET 캐싱을 사용하면 구현이 더 간단 해지고 동일한 머신에 있기 때문에 캐시에서 데이터를 빠르게 검색 할 수 있지만 웹 역할의 각 인스턴스 (즉, 분산되어 있지 않음)에 대해 캐시를 채워야합니다. AppFabric 캐싱은 분산되어 있지만 네트워크 지연이 조금 느립니다. 확장 성있는 AppFabric 캐싱이 의미하는 바에 따르면 현재 규모가 조금씩 비정상적으로 동작하므로 테스트를 실행하십시오. 확장 가능하고 기능이 풍부한 분산 캐싱을 원한다면 애플리케이션의 큰 부분을 차지하고 Memcached에 넣으십시오.

+0

RAM에서이 옵션 중 어느 것이 작동할까요?나는 AppFabric이 이것을한다고 생각한다; ASP.net 캐싱도? wcf 서비스를 따라 실행되는 asp.net 엔진을 사용하여 여러 인스턴스에서 앱을 실행할 계획이라고 언급 했어야합니다. 작업자 역할이 너무 늦어지게 될 것입니다. ASP.net 캐시와 AppFabric의 차이점은 무엇입니까? 참고로 비용, 확장 성 및 성능에 대해서는 신경 쓰지 않습니다. blob이 작동하지 않는 것처럼 보입니다. json 문자열은 HTTPS를 통해 전송되는 사용자 중요 데이터입니다. – frenchie