2011-08-15 5 views
0

직장에서 축구 경기를 예측하는 시스템에서 작업하고 있습니다. 일부 벤더가 다른 벤더보다 더 많은 데이터를 제공하지만, 각 벤더는 거의 동일한 데이터를 포함하는 기존의 여러 데이터베이스를 보유하고 있습니다. 내 응용 프로그램에서 사용하는 모든 공급 업체가 제공하는 분야의 핵심 설정 :이 데이터베이스는 서로 다른 소스에서 온 때문에동일한 데이터를 포함하는 여러 스키마를 처리하는 방법

homeTeamId, awayTeamId, fullTimeHomeGoals, fullTimeAwayGoals 등 homeShotsOnTarget, awayShotsOnTarget을 ...

을 필드 이름은 다양합니다. 또한이 데이터 중 일부는 주관적입니다 (타겟의 샷 정의가 다릅니다). 이것은 어떤 업체가 어떤 업체인지 알 필요가 있음을 의미합니다. 여러 공급 업체가 특정 일치 항목에 대한 데이터를 보유하게되므로 중복되는 경우도 있습니다.

현재 우리는 한 번에 하나의 데이터 소스를 사용하고 있지만, 향후에 해당 공급 업체가 대상으로하는 경쟁을 기반으로 한 번에 둘 이상의 공급 업체를 사용하게됩니다 (중복 문제를 제거한 경쟁에 따라 선택 함). 성냥).

내 솔루션은 XML을 사용하여 fieldName의 매핑을 저장하는 것이 었습니다. 나는 SQL 쿼리에 대한 필드를 필요할 때마다 예컨대

<Schemas> 
    <Schema> 
     <SchemaName>VendorA</SchemaName> 
     <TableName>VendorA_MatchResults</TableName> 
     <FullTimeHomeGoals>homeFullTimeScore</FullTimeHomeGoals> 
     Etc... 
    </Schema> 
</Schemas> 

그런 다음, 사용자가 작업 구성 XML에서 지정한 공급 업체보고 데이터 공급 업체에 관련된 필드를 조회. 두 벤더의 결과를 사용할 때 뷰를 사용하여 이것을 XML의 새로운 벤더로 간주 할 계획이었습니다.

상당히 합리적 인 문제 여야하지만 온라인 태클 방법을 찾을 수 없습니다. 내 직감은 본질적으로 DB가 내부적으로이를 처리 할 수 ​​있어야한다고 생각합니다.

조언이나 아이디어에 감사드립니다.

배경으로,이 응용 프로그램을 개발하기 위해 MySql과 Java를 사용하고 있습니다.

+0

나에게 [ETL] (http://en.wikipedia.org/wiki/Extract,_transform,_load) 문제가 발생합니다. –

답변

0

당신이하고있는 것이 좋다고 생각합니다.

각 스키마에 대해 이러한 구성을 저장하는 클래스를 만들어야합니다. 이 구성들을 Map에 저장하십시오. 당신이했던 것처럼 설정 파일에서이 엔트리와 설정을 가져 왔는지 확인하십시오.

여기에 Spring을 권하고 싶습니다. 새 벤더를 추가 할 때마다이 설정 파일을 편집하고 앱을 다시 시작하면됩니다.

관련 문제