2

コレクション内のデータを標準のpythonファイルのようなオブジェクトのように扱うことができるmongodbへのインターフェースが必要です。これらはかなり小さなファイル (最大でキロバイト単位) であり、特に、これらのいわゆるファイルに追加する機能が必要です。(したがって、この質問はだまされていません。 )

GridFS のドキュメントを読みましたが、特に小さなファイルには使用しないでくださいと書かれています。私が見つけた唯一の他の実装は、すべて PHP でした。コードの詳細を書くのに助けを求めているわけではありませんが、ファイル API 全体を実装するのは大変な作業のようです。

  1. Python 2 でファイルのようなオブジェクトを簡単に実装するためのショートカットやツールはありますか?
  2. 誰かがすでにこれを行っていることを見逃していますか?

(なぜこれを行うのか? ファイルを透過的に処理できないマルチノード クラウド環境にcsv ファイルを生成する既存のアプリケーションを展開するという 11 時間目の要件を受け取ったからです。)

4

2 に答える 2

2

io質問1については、モジュール、特にをチェックしてくださいIOBase。それは、かなり賢明な一連のメソッドの観点から、すべてのファイルライクを実装します。

于 2012-06-21T20:10:36.950 に答える
0

データをバイナリまたはテキストとして MongoDB コレクションに格納するだけです。しかし、次の 2 つの問題があります。

  1. 他のコードが実装することを期待するのと同じくらい多くの Python ファイル プロトコルを実装する必要があります。

  2. 「ファイル」に追加すると、ドキュメントは MongoDB で大きくなり、ディスク上でより大きなドキュメントを保持するのに十分なスペースがある場所に移動する必要がある可能性があります。ドキュメントの移動にはコストがかかります。

GridFSを使用してください-ドキュメントでは静的ファイルに使用することを思いとどまらせていますが、PyMongoがMongoDBデータ用のPythonのファイルプロトコルを実装する作業を行っているため、あなたの場合は完璧です. GridFS ファイルに追加するには、ファイルを読み取り、追加データを含む新しいバージョンを保存し、以前のバージョンを削除する必要があります。しかし、これはとにかく、大きくなったドキュメントを移動するよりもはるかに高価ではありません.

于 2012-06-22T16:13:18.330 に答える