0

コードが期待する特定のプロパティ セットを持つドキュメントのコレクションがあります。ただし、このコレクションには、まったく異なるプロパティ (またはフィールド) を持つさまざまなデータソースからのデータを入力する必要があります。これには、何らかの形式のフィールド マッピングが必要になります。

これには多くの方法があります。

  1. アプリケーション層にデータを取り込み、正しい形式に変換してから、Mongo にダンプします (これは非常に非効率的です)。
  2. データを Mongo の一時コレクションに直接ダンプし、各ドキュメントを反復処理し、フィールド マッピングを実行し、最終的に正しいコレクションに格納します (これはより良いアプローチのようですが、それでも厄介です)。
  3. オプション 2 と同じですが、マップ (または同様の) 関数を使用してフィールド マッピングを実行します (これは良い選択のようですが、私が見つけた唯一のものは map-reduce に関連しているように見えません。このタスクの正しい方法)。
  4. データマッパーパターンを実装しますが、それに関するリソースも見つかりません (これは、アプリケーションを永続層から完全に分離するための私の推奨ソリューションです)。

何を提案しますか?

明確化:私は Laravel (PHP) を使用しています。ステップ 1 はすべてアプリケーション レイヤーで行いますが、ステップ 2 と 3 は mongo スクリプトで実装できます。

明確化の更新:データは Curl を介して取り込まれ、保存されます。データベースに直接ダンプすることの背後にある考え方は、データの取得を高速化し、サーバーを停止させないようにすることです (シナリオ 1)。オプション 2 と 3 はマッピングをデータベース レイヤーにオフロードします。マッピングされたドキュメントごとにネットワーク トラフィックが発生しないため、はるかに効率的です。要するに、オプション 4 が存在するかどうか、存在しない場合はオプション 1 から 3、またはそれらのスマートな組み合わせに頼ることができると思います (おそらく、ドキュメントがアプリケーション層から格納されるため、データベース層にマッピングします)。

4

0 に答える 0