3

ビジネス要件ごとに、GridFS 上の一部のファイルのコンテンツをコピーする可能性を提供する必要があります。もちろん、ドメイン固有のレイヤーで実行できます。しかし、この場合、いくつかのオーバーヘッドが見られます。

  • mongo-server からストリームを取得
  • ビジネス層にメモリを割り当てる
  • 読んだ
  • mongo-server に戻す

明らかな解決策は、単一サーバーの境界でコピーを実行する mongo-side JavaScript を作成することです。だから私の質問:

  • JavaScript で GridFS を管理する API の説明はどこにありますか?
  • GridFS がシャーディングされている場合、何か問題はありますか?
  • GridFS がレプリケートされている場合、何か問題はありますか?

前もって感謝します

4

3 に答える 3

3

GridFS ファイルは不変であるため、単一のサーバー内で GridFS ファイルをコピーする必要はありません。作成、読み取り、または削除することはできますが、変更することはできません。したがって、コピーを作成する理由はありません。

あるサーバーから別のサーバーへのコピーは、ドライバーを介して行う必要があります。MongoDB サーバーから別のサーバーに直接コピーするための組み込みサポートはありません。

于 2012-06-27T21:54:36.573 に答える
0

「通常の」js ドライバーは GridFS をサポートしていません。

Node.js でそれを行うことができます。ドキュメントは次のとおりです。

http://mongodb.github.com/node-mongodb-native/markdown-docs/gridfs.html

レプリカ セットの場合、Node.js のドキュメントは次の場所にあります。

http://mongodb.github.com/node-mongodb-native/markdown-docs/replicaset.html

一部のファイルの単純な 1 回限りのコピーには、コマンド ラインで mongofiles を使用できます (一時ファイル :( ) を使用):

http://www.mongodb.org/display/DOCS/GridFS+Tools

mongofiles --host HOST get currentfilename
mongofiles --host HOST put -l currentfilename newfilename
rm currentfilename

ただし、モンゴファイルがシャーディングとレプリカでどの程度うまく機能するかはわかりませんが、機能することを期待しています。

于 2012-06-27T20:21:02.547 に答える
0
gridfs_session = gridfs.GridFS(mongo.session)
out_file = gridfs_session.get(file_id)
new_copy = gridfs_session.put(out_file, content_type=out_file.content_type)
于 2013-03-15T11:26:22.063 に答える