소비자가 키워드를 입력하여 제품을 검색 할 수있는 전자 상거래 사이트를 구축한다고 가정합니다. 최대 200,000 개의 제품이 있으며 시스템을 사용하는 수백만 명의 소비자가 있다고 가정 해보십시오. 제품 테이블이 자주 업데이트된다고 가정 해 봅시다. 제품 수는 그다지 많지 않으므로 아마도 데이터베이스에 도달하는 대신 전체 제품 테이블을 메모리에 저장하고 검색 할 수 있습니다. 동일한 데이터를 저장하지만 고 가용성 및 성능상의 이유에서 다른 서버에 상주하는 분산 캐시를 생성하기를 원하며 제품 테이블이 수정 될 때 이러한 캐시간에 데이터를 동기화하고 캐시를 무효화 할 수 있어야합니다.트래픽이 많은 웹 사이트에서의 캐싱에 대한 질문
우리의 응용 프로그램은 ASP.NET MVC와 NHibernate를 사용하여 만들어졌습니다. 나는 NHibernate의 레벨 2 캐싱이 내 상황에 도움이되는지 이해하려고 노력하고있다. 너희들이 이것에 대해 밝힐 수 있다면 정말 고마워.
레벨 2 캐싱은 쿼리 결과를 캐시하는 데 도움이되므로 두 명의 다른 사용자가 동일한 키워드를 사용하여 검색하는 경우 L2 캐시는 데이터베이스가 아닌 캐시의 결과를 제공합니다. 하지만 제품 테이블이 자주 업데이트되고 캐시 된 결과가 오래되어 도움이되지는 않습니다. 제 질문은 제가 L2 캐싱을 올바르게 이해하고 있으며, 여러 가지 캐시, 동일한 데이터, 캐시 간 동기화 및 캐시 무효화와 같은 방식으로 캐시를 관리하는 데 도움이되는 것이 있습니다. 어떤 생각을 높게 평가됩니다.
재규어이 유용한 정보를 제공해 주셔서 감사합니다! 나는 NHibernate.Search와 Lucene.NET을 연구 중이지만 Oren Eini의 블로그에있는 리소스 외에 많은 리소스를 찾을 수 없었다. 다른 유용한 링크를 아는 경우, 정말로 전달해 주시면 고맙겠습니다. 캐시 또는 DB가 업데이트 될 때 Lucene.NET에 의해 색인이 생성 된 문서가 캐시 또는 DB와 어떻게 동기화되는지 궁금한 다른 질문이 있습니까? 게시물에서 L2 캐시처럼 보이고 NHibernate.Search/Lucene.NET이 잘 작동하는 것 같습니다. – mwong
글쎄, 나는 Hibernate Search (http://www.manning.com/bernard/)의 일부를 읽었으며 사용상의 차이점은 거의 같다. 또한 Lucene이 무엇인지, 그리고 Lucene이 어떻게 작동하는지에 대해 강하게 파악하려면 Lucene in Action (http://www.manning.com/hatcher2/)을 강력하게 권장합니다. 두 번째 질문에서 캐시는 항상 db를 나타냅니다. lucene 인덱스는 db 항목과 동기화되며 예는 제대로 작동합니다. – Jaguar