0

同僚、私は v2.2 の Mongo と Java Mongo ドライバー 2.9.0 を使用しています。

一部のビジネス ロジックは約 25 のスレッドを作成し、各スレッドは GridFS 上に 150 のファイルを作成します。1000 あたり約 20 ファイルが正しく返されないgetId()ため、結果は null です。スループットの観点からは正しい動作だと思います(間違っていれば訂正してください)。しかし、私は本当にこのIDが必要です。通常の DBCollection の場合は を設定WriteConcern.FSYNC_SAFEしますが、GridFS のメソッドが存在するかどうかを確認できませんsetWriteConcern。ファイルを強制的にフラッシュする方法をいくつか考えていますか?

4

1 に答える 1

0

GridFS.java のドライバー コードを見ると、次のようになります。

_filesCollection = _db.getCollection( _bucketName + ".files" );

GridFS の作成後に同じ名前のコレクションを解決できるため、書き込み懸念を設定したコードは次のようになります。

_fs = new GridFS(_db, "MyBucketName");
DBCollection col = _db.getCollection( "MyBucketName" + ".files" );
col.setWriteConcern(WriteConcern.SAFE);

テストを開始すると、すべてのファイルが正しい ID を正常に返すことがわかります。

于 2012-10-12T16:00:04.993 に答える