2011-08-15 12 views
0

私は仕事中のサッカーの試合を予測するシステムに取り組んでいます。いくつかのベンダーが他のベンダーよりも多くのデータを提供していますが、私は幅広く同じデータを含むいくつかの既存のデータベースを持っています。私は自分のアプリケーションが使用すると、すべてのベンダーが提供している分野のコアセットがあります。これらのデータベースは、異なるソースから来ているので同じデータを含む複数のスキーマを処理する方法

homeTeamId、awayTeamId、fullTimeHomeGoals、fullTimeAwayGoalsなどhomeShotsOnTarget、awayShotsOnTargetを、...

をフィールド名は異なります。また、このデータの一部は主観的なものです(ターゲット上のショットの定義が異なります)。これは、どのベンダーがマッチしたのかを知る必要があることを意味します。いくつかのベンダーが特定のマッチのデータを持つため、重複もあります。

現時点では、一度に1つのデータソースを使用していますが、今後、そのベンダーが対象とする競争に基づいて2人以上のベンダーを同時に使用します(競合に基づいて、マッチ)。

私の解決策は、XMLを使用してfieldNameのマッピングを格納することでした。例えば

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

その後、私は、ベンダーを見て、ユーザがジョブ設定XMLで指定し、そのデータベンダーに関連するフィールドをルックアップしている、SQLクエリのフィールドを必要なとき。私たちが2つのベンダーからの結果を使用するようになったとき、私はビューを使用してこれをXMLの新しいベンダーとして扱う予定でした。

これはかなり一般的な問題であるに違いありませんが、私はそれに取り組む方法についてオンラインで何かを見つけることができませんでした。私の腸の本能は、DBはこれを内部的に(おそらくビューで)扱うことができるはずだと言いますか?

アドバイスやアイデアに感謝します。

バックグラウンドでは、MySqlとJavaを使用してこのアプリケーションを開発しています。

+0

私には[ETL](http://en.wikipedia.org/wiki/Extract,_transform,_load)のような問題があります。 –

答えて

0

あなたがしていることは良いと思います。

スキーマごとにこれらの設定を保存するクラスを作成する必要があります。これらの設定をMapに保存します。あなたと同じように、これらのエントリとその設定が設定ファイルから来ていることを確認してください。

私はここにSpringをお勧めします。それはあなたの人生を楽にします。新しいベンダーを追加するたびに、この設定ファイルを編集してアプリを再起動するだけです。

関連する問題