MongoDB – GridFS

広告

GridFS は画像、音声ファイル、動画ファイルなど大きなファイルを保存、検索する MongoDB 仕様です。 ファイルを保存するファイルシステムのようなものですが、データは MongoDB のコレクション内に保存されます。

GridFS はファイルをチャンクに分割し、データの各チャンクを個別のドキュメントに格納します(各チャンクの最大サイズは 255k)。 各チャンクは一意の _id ObjectId フィールドによって識別されます。 fs.files は親ドキュメントとして機能します。 fs.chunks ドキュメントの files_id フィールドは、チャンクをその親にリンクします。

Following is a sample document of fs.files collection –

{ "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5": "7b762939321e146569b07f72c62cca4f", "length": NumberInt(646)}

このドキュメントには、ファイル名、チャンクサイズ、アップロード日、および長さが特定されます。

Following is a sample document of fs.chunks document –

{ "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data"}

GridFSへのファイル追加

さて、GridFSを使ってputコマンドでMP3ファイルを保存します。

コマンドプロンプトを開き、MongoDBインストールフォルダーのbinフォルダーにあるmongofiles.exeに移動し、次のコードを入力します。 データベースが存在しない場合、MongoDB は自動的にその場で新しいドキュメントを作成します。 Song.mp3 はアップロードされたファイルの名前です。 データベース内のファイルのドキュメントを見るには find クエリ –

>db.fs.files.find()

上記のコマンドは次のドキュメントを返しました –

{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 }

また、fs.DB に存在するすべてのチャンクを見ることができます –

{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 }

また、fs.DB に存在するすべてのチャンクを見ることができます。

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

私の場合、クエリは 40 個のドキュメントを返しました。これは、全体の mp3 ドキュメントが 40 個のデータのチャンクに分割されていることを意味します。

コメントを残す

メールアドレスが公開されることはありません。