2010-06-24 2 views
0

내가 성장하는 데이터베이스가 포함 된 한의 관련성에 따라 순위 :매칭, 각 기준

  • 요구 (여러 기준)
  • 이벤트의 테이블 (여러 기준)

의 테이블 기준은 문자열 (예 : 국가 이름), 부울, 숫자, 숫자 일 수 있습니다.

다소 많거나 적음 (업무 은행, 중매 등)과 일치하는 모든 수요 제공을 찾고 싶습니다.

테이블이 많은 다음과 같이 내가 계산합니다 행이 포함되지 않은 경우 : 각 수요

  • 을 각각 계산은 각 기준의 관련성을 평균하여 일치의 관련성을 제공합니다.

중요한 데이터베이스의 경우 너무 많은 시간이 걸릴 것입니다. 그렇지 않습니까?

어떤 솔루션을 추천하십니까?

답변

0

나는 당신이 묘사하는 방식대로 하겠지만 롤링 캐싱 메커니즘과 일부 인덱스를 사용한다.

작성과 관련성을 알아 낸 다음 어떻게되는지 확인하십시오. 주파수가 낮 으면 증분 추가가 좋을 수 있습니다 (하이 읽기, 로우 쓰기). 양 끝이 높으면 두 데이터베이스로 나눌 수 있습니다. 하나의 데이터베이스에서 업데이트를 처리 한 다음 정기적으로 후 처리 된 데이터를 다른 데이터베이스로 푸시합니다.이 원본은 읽는 기본 소스입니다.

+0

답변 해 주셔서 감사 드리며 AJ. – Richard

+0

이상적인 상황은 아니지만 컴퓨팅에서는 거의 발생하지 않습니다! 당신이 성공하기를 바랍니다. –

1

2010 년 6 월 24 일부터 답변을 확장하십시오. Join 테이블 (수요 키, 오퍼 키, 관련성 점수)에서 사전 계산 된 관련성 점수를 캡처하십시오. 이 조인 테이블은 Count (Demands) * Count (Offers) 레코드를 저장할 수 있습니다. 임계 값보다 높은 관련성 점수를 가진 레코드 만 저장하는 것이 좋습니다.

이 접근법은 데이터 삽입시 O (n)의 계산 복잡성이 있습니다. 만약 Feature Space for Demands (오퍼와 유사)가 동일한 Offer의 Relevance Scores가 높은 두 개의 Demand가 또한 'Close'내에 있다고 가정한다면이 복잡성을 O (log (n))로 줄일 수 있습니다. 자신의 기능 공간, 보유 :

  • 약 (n)을 설정하여 데이터를 기록 할 K의 값을 수요의 비교 기능에 K-가장 가까운 이웃 분석을 수행 (별도로 쿠폰)와 제한합니다.
  • 클러스터의 대표 특징 벡터 간의 일치 성 일치도를 계산하고 데이터베이스 표에 저장하십시오.
  • 삽입시 새 레코드와 해당 유형의 각 클러스터 사이에 '거리'를 측정하고 새 레코드에 클러스터에 외래 키를 저장하십시오.
  • 수요와 일치하는 오퍼를 검색 할 때 - 수요와 해당 클러스터의 링크를 따라 가장 관련있는 오퍼 클러스터 - 개별 오퍼로 연결하십시오.

이것은 속도면에서 특이성을 나타냅니다. Demand의 샘플을 각 Offer와 비교하고 Relevance에 정렬하여 초기 가정의 정확성을 확인하십시오. 주문한 오퍼 집합을 탐색하고 누락 된 항목을 찾기 전에 클러스터 검색의 결과 집합에서 발견 한 개수를 계산합니다.이 테스트의 주관적인 분석을 통해 클러스터링이 얼마나 많은 비용을 지출하는지 알 수 있습니다.