-1

私はアプリケーションを持っています。オブジェクト グラフを Mongo に書き込みます。特定のコレクションについては、データを正規化し、リレーショナル データベース (SQL Server または SQLite) にミラーリングしたいと考えています。

これを行う最善の方法は、コレクションで MapReduce ジョブを使用することだと考えていました。これは正しい方法でしょうか?これは可能ですか?それが違いを生む場合、私たちはWindowsで実行しています。

アップデート

私が探しているのは、JavaScript の MapReduce ジョブがこれにアプローチする最善の方法であるかどうかについての一般的なガイダンスです。2 つのフィールドを持つオブジェクトがあるFirstNameとしLastNameます。FirstNameこれをコレクションに書き込むときは、リレーショナル データベース (との 2 つの列があるLastName) に行が必要です。

もちろん、コレクションに書き込む時点で、アプリケーションの SQL テーブルにこれを書き込むこともできます。しかし、おそらくそれを行うのに適した場所はデータベース内であると思いました。これにより、必要に応じて、データをリレーショナル データベースに書き込む前に整形することができます。

少し詳しく説明したので、明示的には尋ねなかったが関連する他のいくつかの質問を見ることができます。MapReduce ジョブを実行する JavaScript は、Mongo の外部にアクセスすることさえできますか? サンドボックス化されていますか?そして、これを MapReduce ジョブとして実行すると、書き込みパフォーマンスに影響を与えます (そうではないと思いますが、IANAE、したがって質問です)。

4

2 に答える 2

2

前の答えを補強するために、いいえ。

Map reduce 環境は、他の DB などのドライバーに直接接続することはできません。これにより、控えめに言っても統合ヘアボールが発生します。

Map Reduce は、実行中のシステムのパフォーマンスに常に影響を与えるため、MR がハードウェアと互換性のある方法で実行されていることを確認してください。大規模なデータセットを実行する多くの個人は、結果コレクションに対する一種のデルタ更新を段階的に処理します。

また、いいえ、MySQL はトリガーからの他の外部データソース (最後にチェックしたもの) への ping をサポートしていません。

これは、アプリの Active Record ハンドラー内でより適切に適合します。ネットワーク全体で統合する方がはるかに柔軟で、はるかに簡単です。

于 2012-08-10T13:56:14.480 に答える
2

いいえ、MapReduce ジョブは SQL データベースに書き込めません。outmongo コレクション (オプションで指定されたもの以外) に書き込むことさえできません。

同様に、mysql トリガーから mongodb への書き込みも試みますか? アイデアは私には奇妙に思えます:)

そのため、アプリケーションで行うことをお勧めします。

于 2012-08-10T13:26:05.487 に答える