2017-07-18 7 views
0

この質問は非常に奇妙なようですが、私はこの種の問題を解決するには非常に興味があります。Djangoの一時的なマージORMで他のDBの結果

問題は、私は2つの異なるWebプラットフォームを持っていることであると言うことができます:専用OracleSQL DBサーバと

プラットフォームAローカルネットワークアプリケーション(Javaがベース)。

PostgresのSQLと

プラットフォームBジャンゴ

すべてのシステムは、ローカルネットワーク内にあります。

プラットフォームBでは、システムAからの集約データを必要とするいくつかのジャンゴビューがありますが、このデータは要求ごとに必要です。

つまり、システムAは製品の価格設定に関する情報のみを持つERPソフトウェアであり、プラットフォームB(django)は製品リスト自体を持っています。

だから私は価格で注文された製品をリストするdjangoのビューを作成する必要があります。どのようにこれを行うことができますか?

私は製品のdjangoに問い合わせることを考えていました。製品リストをRAMストレージにロードしてから、製品ID配列リストを送信する価格をPlatform Aに問い合わせてから、RAMメモリにマージして生成します価格で注文されたクエリーセット。

この目的にはどのような効果がありますか?

OracleDBに直接アクセスでき、特定のエンドポイント・サービスをプラットフォームAで開発することもできます.API-JSONエンドポイントと言うことができます。

私の質問を明らかにするためには、データフローは次のようになります。

要求は:私の製品

-> PlatformB <-> getPrices() <-> PlatformA 
PlatformB:Products | Prices:PlatformA 
<- result <- PlatformB 

を与えるの質問は、このPlatformBを取得する方法である:製品|価格:PlatformAのパフォーマンス。

は、あなたの時間をあなたに

敬具を非常にありがとうございました!

答えて

0

実際にマージされたデータを配信するエンドポイントはB(ジャンゴベースのアプリケーション)である場合、あなたは可能性があり、あなたが既に提案しているよう:

  1. をなどのIDごとに製品データをフェッチするためにAでのRESTエンドポイントを作成しますhttp://a-host/products/[pk]/prices
  2. Djangeが製品+価格の要求を受け取ると、AからのRESTエンドポイントを使用して製品データをフェッチします。デカントキャッシュヘッダー(A)を追加し、キャッシング(Django)を使用してAキャッシュ時間は、価格の更新頻度やユーザーごとにパーソナライズされているかどうかによって異なります。

また、DjangoとAは同じ製品IDを知っている必要があります。


また、自分で提案したとおりにデータをRedisに読み込むこともできます。AとBの両方によってアクセス可能なレディスをすでにお持ちの場合、そして製品データが非常に安定している場合、たとえば、製品が1日に1回ロードされている場合、すぐにRedisでデータをリロードすることができます。

これは主に高性能なPKルックアップです。検索可能な製品が必要な場合は、最良の選択肢ではありません。

また、AとBの両方が同じ製品IDを使用し、要求時に製品IDがわかっていることが必要です。

第三のオプションとして

に、あなたは、検索、ソート可能、濾過可能なデータが必要な場合、および高性能:

あなたはすでに完全にその構造で製造し、SOLRや弾性などの検索インデックスにすべてを読み込むことができますあなたはそれが届けられる必要があります。これにより、製品名を検索し、自動完成、ファセット作成、並べ替え、結果構造などのページングを行うことができます。特に、ファセット(Elasticの集計とも呼ばれます)は、役に立つと思われるものです。

また、時間のかかる作業をインポートプロセスに移して、そのプロセスからの要求を解放します。インポート処理中に、AとBがでない場合は、は同じ製品IDを使用してデータを整列させることができます。


環境、データ、ユースケースに適したソリューションを実際に決定するために、システムに関する多くの情報は提供されていません。

+0

ご返信ありがとうございます。 これは、製品/価格が表示されるWebフロントエンドがあるため、プラットフォームB(django)のprincing情報が必要なことです。 Elasticsearchソリューションはオプションです。 –

関連する問題