1

シャーディングセットにデータを挿入するために、mongosを介してJavaスクリプトファイルを実行したいと思います。それに加えて、動的変数とNULL値を追加したい-

私は(手動で)シェルにログインします

mongo hostip:port / admin my_script.js

私のjsは次のようになります:

var amount = 1000000; var x = 1; var doc ='';

for (i=0; i<amount; i++)
{

doc = { a: '1', b: '2', c: 'text' , d:  'x', e: 'NULL'}
db.mycol.insert(doc);
x=x + 1

}

(「x」ではなく「i」を使用できます)「d」は「x」の値を書き込みますか、それとも「x」の文字だけを書き込みますか?「e」はテキスト「Null」または..「データベースNULL」を書き込みますか?その手順を正しく行う方法はありますか?(モンゴス/シャーディングセットへの接続方法について)

よろしくお願いします

編集:そして非常に重要です-時間を把握するにはどうすればよいですか?mongodb /シャーディングセットはすべてのデータを保存する必要がありますか?そしてそれをバランスさせましたか?

2番目の編集:

こんにちはロス、

2つのシャード(2つのレプリカセット)で構成されるシャーディングセットがあります。現在、テストを行っているため、シャードキーとしてループカウンターを使用しています。javascript内で時間を確認する方法はありますか?

アップデート:

では、データの保存に必要な時間を測定することは、JavaScriptが実行される時間と同じですか?(または、実行のためにmongoシェルにアクセスできない時間)

その仮定は、クエリの応答時間を測定するために受け入れられますか?(Javaスクリプトファイルはどこに保存する必要がありますか?)

4

1 に答える 1

1

iforループの反復ごとにインクリメントするため、複数のカウンターを保持する必要はありません。文字列ではなく値が必要なため、文字列の代わりにi値を使用しdます-クリーンアップされたループは次のとおりです。null"NULL"

var amount = 1000000;
for (i=1; i<amount+1; i++) {
  doc = { a: '1', b: '2', c: 'text' , d:  i, e: null }
  db.mycol.insert(doc);
}

データの保存/バランス調整にかかる時間については、いくつかの要因によって異なります。

まず、シャードキーは何ですか?ランダムな値ですか、それとも増加する値(タイムスタンプなど)ですか。シャードキーのランダムパターンは、書き込みの均等な分散を保証するのに役立ちます。シャードキーの範囲がわかっている場合は、シャードを事前に分割して、データの読み込み時にバランスが保たれるようにすることができます。シャードキーがタイムスタンプのように増加している場合、1つのシャードがホットになり、常に範囲の上限になり、チャンクを分割してデータを他のシャードに移行する必要があります。

MongoDB UKでは、シャーディングに関するいくつかの優れたプレゼンテーションがありました。シャーディングの概要とシャーディングのベストプラクティスです。

アップデート:

シャードのバランスがとれるまでにかかる時間については、マシンの負荷によって異なります。バランシングは軽量プロセスであるため、バックグラウンド操作と見なす必要があります。mongosシャーディングされたシステムであっても、データがクエリ用にアクセス可能なシステムに書き込まれるとすぐに注意することが重要です。したがって、データのロード中にシャードのバランスが崩れた場合でも、データにアクセスできます(シャードのロードと新しいデータの追加によっては、シャードのバランスを取り直すのに時間がかかる場合があります)。つまり、移行する前にチャンクを分割する必要があります。

Update2

の挿入mongosは同期的であるため、スクリプトの実行にかかる時間は、挿入の適用にかかる時間です。getLastErrorを使用した書き込みの耐久性については、書き込みの書き込み中にブロックする時間の基本的なオプションが他にもあります。シェルはgetLastError()透過的に呼び出しますが、選択した言語のデフォルトは非同期であり、サーバーの応答を待機しません。

javascriptファイルをどこに保存しますか?-それはあなた次第です-そのアプリケーションコード。ほとんどのユーザーは、好みの言語でアプリケーションを作成し、ドライバーを使用してmongodbを呼び出します。

于 2012-09-06T13:08:41.847 に答える