2010-01-18 3 views
0

인트라넷에서 발견 된 내부 자산 (코드 생성물 ...)에 태그를 지정해야 나중에 쉽게 검색 할 수 있습니다. 특정 엔티티와 연관된 태그의 수를 렌더링하는 기본 방법은 무엇입니까?

우리는 ( https://stackoverflow.com/tags 훨씬 유사) 특정 태그 이름 태그 자산의 수를 보여 드리고자합니다. 사용자가이 페이지를 방문하거나 태그 및 태그와 관련된 항목 수에 대한 정보가 들어있는 tag_count 테이블에서이 계수를 동적으로 측정하는지 이해하고 싶습니다 (참고 :이 tag_count 테이블은 비동기식으로 자산과 연관된 태그의 수를 주기적으로 업데이트). 자산의 수는 수천의 10 년대의 범위에있는 경우

무엇, 위의 문제를 해결하기 위해 선호하는 방법이 될 것이다?

답변

1

다른 옵션 대신 태그 카운트 테이블 태그가/계산하고 다시 전에 일정 기간 동안 결과 데이터 캐시를 표시하는 데 사용하는 어떤 응용 프로그램을 유도 할 수있는 간단한 쿼리의 ... 여기있다 카운트 카운트. 이 옵션이 있습니까? 웹 시나리오에서 이것은 훨씬 더 일반적인 접근 방식입니다.

+0

우리는 우리의 2 레벨 캐시와 ORM 층과으로 Ehcache으로 최대 절전 모드를 사용하고 있습니다. 이것은 캐싱 관점에서 도움이 될 것이지만, 별도의 테이블에 저장되어 있지 않으면 카운트의 우선 순위를 정하는데 도움이 될 것입니다. (즉, 가장 높은 카운트를 가진 모든 엔트리가 먼저 나열됩니다.) – Joe

+0

수십만 개의 태그를 다루지 않는 한, 결과의 메모리 정렬이 매우 빠릅니다 (예 :'SortedList '을 채우거나 캐시하면됩니다) –

+0

예,이 접근 방식을 사용합니다 – Joe

1

내가 말할 것 : 올바른/정확한 숫자이기 때문에 요청의 시간을 계산하는의 선호하는 방법입니다.

하지만

당신이 방법의 성능 제약 충돌 가능성이 높습니다. 이 경우 별도의 테이블을 사용하는 것이 좋습니다.

사용중인 RDBMS에 따라 당신에게 적절한 성능과 excact/정확한 결과를 제공 할 수있을 구체화 된 뷰의 옵션을 가질 수 있습니다.

+0

개발자 환경에서 h2를 사용하고 있습니다. 프로덕션을 위해 MySQL 또는 Postgres. 위의 모든 데이터베이스에서 구체화 된보기 또는 이에 상응하는 항목 (http://en.wikipedia.org/wiki/Materialized_view)이 지원됩니다. 매우 구체적인 데이터베이스로 만들 수있는 솔루션을 피하고 싶습니다. – Joe

관련 문제