2011-08-15 30 views
0

我正在研究預測工作中足球比賽的系統。我有幾個預先存在的數據庫,每個數據庫都包含大致相同的數據,儘管一些供應商提供的數據比其他數據多。我有一組核心,我的應用程序使用和所有供應商提供的字段:如何處理包含相同數據的多個模式

homeTeamId,awayTeamId,fullTimeHomeGoals,fullTimeAwayGoals,homeShotsOnTarget,awayShotsOnTarget等..

因爲這些數據庫都來自不同的來源字段名稱會有所不同。還有一些數據是主觀的(目標鏡頭的定義各不相同)。這意味着我需要知道哪個供應商來自哪個供應商。也有重疊,因爲有些供應商會獲得特定匹配的數據。

目前我們一次只使用一個數據源,但我們將根據該供應商未來競爭對手一次使用兩個或更多供應商(通過根據競爭對手選擇我們移除重複問題火柴)。

我的解決方案是使用XML來存儲fieldName的映射。 E.g

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

然後每當我需要一個領域的SQL查詢,看看用戶在任務配置XML已指定的供應商,並查找相關的數據供應商等領域。當我們開始使用來自兩個供應商的結果時,我打算使用一個視圖並將其視爲XML中的新供應商。

這一定是一個相當普遍的問題,但我在網上找不到任何討論如何解決它的問題。我本能的直覺表示數據庫應該能夠在內部處理這個問題,也許有一種觀點?

我會很感激任何意見或想法。

爲了背景,我使用MySql和Java來開發這個應用程序。

+0

聽起來像[ETL](http://en.wikipedia.org/wiki/Extract,_transform,_load)問題給我。 –

回答

0

我覺得你在做什麼很好。

您應該爲每個模式創建一個存儲這些配置的類。將這些配置存儲在Map中。確保這些條目及其配置來自配置文件,就像您一樣。

我會在這裏推薦Spring,它會讓你的生活更輕鬆。每次當你想添加一個新的供應商,你只需要編輯這個配置文件,並重新啓動你的應用程序。

相關問題