2013-06-27 3 views
0

을 단축 할 수있는 방법이 있나요 이 지금이 시간이 많이 걸립니다SOLR - 내가 관계형 데이터베이스 모델을 내 오기

<entity name="MyMainEntity" pk="pID" query="select ... from [dbo].[TableA] inner join TableB on ..."> 
    <entity name="Entity1" pk="Id1" query="SELECT [Text] Tag from [Table2] where ResourceId = '${MyMainEntity.pId}'"></entity> 
      <entity name="Entity1" pk="Id2" query="SELECT [Text] Tag from [Table2] where ResourceId2 = '${MyMainEntity.pId}'"></entity> 
    <entity name="LibraryItem" pk="ResourceId" 
      query="select SKU 
        FROM [TableB] 
        INNER JOIN ... 
        ON ... 
        INNER JOIN ... 
        ON ... 
        WHERE ... AND ...'"> 
    </entity> 
</entity> 

내 데이터-config.xml 파일의 기본이다.
첫 번째 쿼리에서 10000 개의 행을 처리 한 다음 나중에 각각의 내부 엔터티를 가져옵니다 (각각 약 10 개의 행).

db 프로필러를 사용하는 경우 세 개의 내부 엔터티 쿼리가 반복 실행됩니다 (3 개의 문장을 다시 선택하는 것보다 3 개의 문장을 반복하여 선택 함)
이것은 실제로 효율적이지 않습니다.
가져 오기가 40 시간 이상 실행될 수 있습니다.
이제
더 빠르게 실행할 수있는 옵션은 무엇입니까?

  1. 분명히 하나의 큰 테이블에 테이블을 플랫 화하는 옵션이 있지만, 다른 많은 부작용이 생길 것입니다. 나는 그 여분의 노력을 피하고 생산 관계형 테이블에서 solr을 실행하고 싶습니다.
    지금까지는 상자에서 벗어나 잘 작동하며 구성을 조정할 경우 여기를 검색하고 있습니다.
  2. 행을 플랫 화하려면 schema.xml도 변경해야합니까? 또는 여러 값을 가진 동일한 필드는 여러 값을 유지합니다.

감사합니다.

+0

단일 하위 엔터티 인 경우 여러 쿼리를 실행하는 대신 테이블을 통해 뷰를 작성하는 방법은 무엇입니까? 그것은 훨씬 더 빠릅니다. – Jayendra

+0

뷰를 생성하면 다른 기본 키가 생성됩니다 (곱하기 때문에). 가능한 한 많이 피하고 싶습니다. – Jeb

답변

1

DB 스키마를 변경하지 않고 시도한 첫 번째 작업은 caching입니다. 내부 엔티티가 잘 캐시되면 이득이 상당합니다.

wiki가 uptodate가 아니 어서 jira 문제를 확인해야합니다 (즉, solr-2382). solr-2948도 있습니다.

두 번째 경로가 멀티 스레딩 DIH를 시도 할 수 있지만 더 까다 롭습니다. 한순간에 이것은 선택 사항 이었지만 나중에 버그가있어서 제거되었으므로 다시 구현하려고하는 jira 문제가 있었을 것으로 생각합니다. 먼저 살펴보고 시도해 보도록 권장합니다.