2012-03-12 15 views
1

からデータをロードするには、私がログにクランチ一部を行いますPlayアプリケーション(1.2.4)に取り組んできました。フレームワークが使用される典型的なものではありませんが(基本的に私はおそらく唯一のユーザーです)、アイデアをテストするのはとても速いので、これを使用することに決めました。プレイフレームワーク - 外部データベース

は、私は、イベント間の相関を行い、その後、ローカルデータベースに保存して、イベントや別のアプリケーションのログ(データベース)に格納されている関連口座の異なる種類の多くをロードすることがあります。これまでは、ログをファイルに取り込んでデータベースにインポートしましたが、時間がかかったときにエラーが発生しやすく、遅く、エラーが発生しやすく、ファイルがかなり大きくなりました。

私は、2つの外部データベースへの読み取りアクセス権を取得する方法を見つけ出すクエリを実行して、ローカルデータベースにローカルに保存されているオブジェクトを作成したいと思います。両方の外部データベースには異なるスキーマがありますが、もちろんローカルのスキーマは異なる2つです。接続はインポート時にのみ必要です。データをインポートするテーブルには、多くのカラムが含まれています(いくつかのサーバは遠くにあります)。私はカラムだけをクエリする方が好きです必要。結果セットから直接ローカルに格納されたモデルを直接作成することができますので、外部データベースに基づいてモデルを定義する必要はありません。また、データベースBから取得したデータに基づいて外部データベースAからデータを取得する必要があります(たとえば、ログ行にローカルに保存していないユーザーが含まれている場合、イベントを保存する前に他のサーバーからデータを取得します)。接続はインポート時にのみ必要で、理論的にはワンタイムイベントです。また、再起動することなく(たとえば、ローカルデータベースにホスト/ポートを格納してからインポートを開始する前に値を読み取るなど)、データソース設定を構成することができます。私は、複数のDBのを使用する方法について見つける

ほとんどのスレッドが複数のインスタンス上で同じスキーマとデータを分散することで負荷を軽減することに関連すると思われます。私は、別のスキーマを持つ別々のデータベースを持っていることについていくつかのスレッドを見つけましたが、ソリューションが私のニーズにどれだけうまく適応できるかを決めることはできませんでした。どんなフィードバックも高く評価されます。

答えて

2

あなたは、通常と同じように、あなたの外部データベースに接続することができます - JDBC、Hibernateは、または何でも。 Playは内部的に管理されたモデルにフレームワークの魔法を少し追加しますが、n個のフレームワークに対してn種類のアクセス方法を追加することは何もありません。トランザクション状態などを自分で管理する必要がありますが、それはいつもと変わりません。

あなたはまた、これらの外部のデータベースを構成するために春を使用することもできます。

これがワンクリックインポートの場合は、これを実行するための移行ツールを作成し、主なアプリケーションをその日の仕事に集中させることを検討するとよいでしょう。メインアプリとマイグレーションアプリの間でDBモデルを共有することができるので、Playを使用してマイグレーションアプリを作成してください。私たちはこれまでのプロジェクトでこれを行い、とてもうまく機能しました。

+0

ありがとう、これはうまくいくように見えました。私は移行ツールがうまくいくと思っていますが、データをかなり動的にフェッチできるようにしたいので、最初に1か月のフェッチをしてください。また、私はそれが必要なときにのみ、飛行中にいくつかのデータを取得することを考えています。私はちょうど完璧に動作するように見えるJDBCを設定します。 – kamina

関連する問題