亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
gridfとは何ですか?なぜそれを使用するのですか?
gridfsを使用してファイルを保存する方法
1. MongoDBドライバーをインストールします
2。ファイルをアップロードします
gridfsからファイルを取得する方法
1.ファイルによってファイルをダウンロードします
2.すべてのファイルをリストします
ベストプラクティスと考慮事項(xiàng)
考慮すべき代替案
ホームページ データベース モンゴDB Mongodb Gridfsを使用して、大きなファイルを保存および取得します

Mongodb Gridfsを使用して、大きなファイルを保存および取得します

Sep 13, 2025 am 06:02 AM

GRIDFSは、MongoDBが16MB以上の大きなファイルを保存するための組み込みソリューションです。ファイルを255kbブロックに分割し、2セットのfs.files(メタデータ)とfs.chunks(データブロック)に保存します。ストリーミングのアップロードとダウンロード、部分的な読み取り、および追加のメタデータをサポートし、データベースと密接に統(tǒng)合する必要があるシナリオに適しています。 1. GRIDFSを使用するには、MongoDBドライバーを介してGRIDFSバケットを作成し、OpenuPloadStreamを呼び出してファイルをアップロードする必要があります。 2.ダウンロードするときは、OpendOwnLoadStreamByNameを使用して、名前でストリーミングして読み取ります。 3.すべてのファイルは、uploads.filesコレクションを照會(huì)することでリストできます。大きなファイルにのみ使用され、小さなファイルを避けてオーバーヘッドを減らし、インデックスを使用し、TTLを自動(dòng)的に合理的にクリーンアップし、大規(guī)模なシナリオでS3などの専用オブジェクトストレージの統(tǒng)合ソリューションを評価することをお?jiǎng)幛幛筏蓼埂W罱K的に、GRIDFSは、トランザクションの一貫性と集中管理を必要とするファイルストレージのニーズに適しています。

Mongodb Gridfsを使用して、大きなファイルを保存および取得します

データベースに大きなファイルを保存するのは難しい場合があります。特に、MongoDBの16MBのドキュメントサイズ制限を押した場合。 Gridfsが登場します。これは、16MBを超えるファイルを小さなチャンクに分割し、複數(shù)のドキュメントに保存することにより、ファイルを16MB以上処理するためのMongoDBの組み込みソリューションです。それがどのように機(jī)能するか、そしてそれを効果的に使用する方法は次のとおりです。

Mongodb Gridfsを使用して、大きなファイルを保存および取得します

gridfとは何ですか?なぜそれを使用するのですか?

GRIDFSは、MongoDBのドキュメントサイズ制限を超える大きなファイル(畫像、ビデオ、バックアップ、PDFなど)を保存および取得するための仕様です。ファイルを単一のドキュメントに保存する代わりに、gridfsはそれをより小さな部品(それぞれ255kb)の小さな部品(それぞれ255kb)に分割し、2つのコレクションに個(gè)別のドキュメントとして保存します。

  • fs.files :ファイル(ファイル、アップロード日、コンテンツタイプなど)に関するメタデータを保存します。
  • fs.chunks :バイナリデータチャンクを保存します。それぞれが親ファイルを參照します。

このアプローチでは:

Mongodb Gridfsを使用して、大きなファイルを保存および取得します
  • 16MBを超えるファイルを保存します。
  • すべてをメモリにロードせずにファイルの部分にアクセスします。
  • メタデータをファイルに添付します。
  • 分散システム全體で大規(guī)模なデータセットを効率的に管理します。

注:gridfsは必ずしも最良の選択ではありません。単純なファイルサービングの場合、専用のオブジェクトストア(AWS S3やMINIOなど)がより効率的になる場合があります。ただし、既にMongodbを使用していて、緊密な統(tǒng)合が必要な場合は、GRIDFSはしっかりしています。


gridfsを使用してファイルを保存する方法

MongoDBシェル、ネイティブドライバー、またはmongofilesなどのツールを介してGRIDFSを使用できます。 Node.jsドライバーを使用した例を以下に示します。これは、最新のアプリで一般的です。

Mongodb Gridfsを使用して、大きなファイルを保存および取得します

1. MongoDBドライバーをインストールします

npmインストールmongodb

2。ファイルをアップロードします

const {mongoclient} = require( 'mongodb');
const fs = require( 'fs');

async関數(shù)uploadfile(){
  const client = new mongoclient( 'mongodb:// localhost:27017');
  client.connect();

  const db = client.db( 'myApp');
  const bucket = new mongoclient.gridfsbucket(db、{
    BucketName:「アップロード」//オプション:デフォルトは「FS」になります
  });

  const fileStream = fs.createreadStream( 'large-video.mp4');
  const uploadstream = bucket.openuploadstream( 'my-video.mp4'、{
    contentType: 'Video/Mp4'、
    メタデータ:{著者:「ジョン?ドゥ」}
  });

  fileStream.pipe(uploadStream);

  uploadStream.ON( 'finish'、()=> {
    console.log( 'ファイルアップロードされたファイル');
    client.close();
  });
}

uploadfile();

このコード:

  • Mongodbに接続します。
  • Gridfsバケットを作成します(名前を付けることができます。デフォルトはfsです)。
  • 大きなビデオファイルをストリーミングし、チャンクにアップロードします。
  • メタデータとコンテンツタイプを取り付けます。

gridfsからファイルを取得する方法

取得は、特にコンテンツをストリーミングする場合(たとえば、ビデオ再生やファイルのダウンロードなど)と同じくらい簡単です。

1.ファイルによってファイルをダウンロードします

async関數(shù)downloadfile(){
  const client = new mongoclient( 'mongodb:// localhost:27017');
  client.connect();

  const db = client.db( 'myApp');
  const bucket = new mongoclient.gridfsbucket(db、{bucketname: 'uploads'});

  const downloadStream = bucket.opendownloadStreamByName( 'my-video.mp4');
  const fileStream = fs.createwritestream( 'download-video.mp4');

  downloadStream.Pipe(FileStream);

  fileStream.on( 'finish'、()=> {
    console.log( 'ファイルがダウンロードされました');
    client.close();
  });
}

downloadfile();

これにより、ファイルはMongodbからディスクに直接ストリーミングされます。これは、すべてをメモリにロードすることなくです。

2.すべてのファイルをリストします

const files = await db.collection( 'uploads.files')。find({})。toarray();
files.foreach(file => {
  console.log( `filename:$ {file.fileName}、size:$ {file.length} bytes`);
});

ベストプラクティスと考慮事項(xiàng)

  • 意味のあるファイル名とメタデータを使用してください:ファイルのクエリと整理を支援します。
  • インデックス:GRIDFSは、 filesコレクションのfilenameuploadDateを自動(dòng)的にインデックス付けします。メタデータで頻繁にクエリする場合は、カスタムインデックスを追加します。
  • 小さなファイルを避けてください:Gridfsには頭上があります。數(shù)百kbの下のファイルに使用しないでください。代わりに、通常のドキュメントにbase64として貯蔵します。
  • チャンクサイズ:デフォルトは255kbです。バケットの作成中に調(diào)整できますが、必要に応じて(例:パフォーマンスチューニングの場合)。
  • クリーンアップ:古いファイルを手動(dòng)で削除します。 TTLインデックスを使用しない限り、GRIDFSはデータを自動(dòng)化しません。

考慮すべき代替案

gridfsはうまく機(jī)能しますが、考えてみてください:

  • S3統(tǒng)合を備えたMongodb Atlas :S3へのオフロードファイルストレージとMongoDBの參照を保持します。
  • 専用のオブジェクトストレージ:S3、Google Cloud Storage、またはMinioは、大規(guī)模なファイルを提供するためにより速く、安価なことがよくあります。

ただし、すべてが1か所で必要で、データとのトランザクションの一貫性が必要な場合は、Gridfsはしっかりした適合性です。


GRIDFSの使用は複雑ではありませんが、誤用するのは簡単です。大きなファイルに固執(zhí)し、可能な場合はストリーミングし、メタデータを便利に保ちます。適切なユースケースを使用すると、Mongodbを有能なファイルストアにします。

以上がMongodb Gridfsを使用して、大きなファイルを保存および取得しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調(diào)査により賢明な意思決定を?qū)g現(xiàn)

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Mongodbのクエリパフォーマンスを最適化する方法 Mongodbのクエリパフォーマンスを最適化する方法 Sep 17, 2025 am 08:59 AM

UseProperIndexesonQuery、sort、andprojectionfields、abowndexessequalitybforerangefields、andavoidover-dexing;

Mongodbでチャットアプリケーションを構(gòu)築する方法 Mongodbでチャットアプリケーションを構(gòu)築する方法 Sep 20, 2025 am 03:28 AM

node.js、socket.io、mongodbを使用して、チャットアプリケーションを構(gòu)築します。まず、テクノロジースタックを構(gòu)築し、ユーザーとメッセージのデータモデルを設(shè)計(jì)します。マングースを使用してスキーマを定義し、インデックスを作成してクエリ効率を向上させます。次に、socket.ioを介して、ユーザーは部屋に參加し、リアルタイムでメッセージを送信して受信し、履歴メッセージを読み込みます。メッセージを受け取った後、サーバーはそれをMongodbに堆積させ、部屋の他のメンバーにプッシュします。メッセージの履歴と拡張をサポートするために、MongoDBクエリを使用してメッセージを時(shí)間ごとにソートし、メッセージを取得し、ページングまたは無限のスクロールと組み合わせてより多くのコンテンツをロードします。 Mongodbatlas Cloud Serviceは自動(dòng)拡張とバックアップを達(dá)成し、必要に応じて期限切れのメッセージを自動(dòng)的にクリーンアップするためにTTLインデックスを設(shè)定することをお?jiǎng)幛幛筏蓼埂?/p>

MongoDBクエリのパフォーマンスを説明する計(jì)畫分析で最適化します MongoDBクエリのパフォーマンスを説明する計(jì)畫分析で最適化します Sep 16, 2025 am 12:11 AM

MongoDBクエリパフォーマンスボトルネックを正確に見つけるには、説明( "ExecutionStats")を使用します。コアは、TotalDocsexaminedがTotalDocSreturnedよりもはるかに大きいことを確認(rèn)することです。 2。Collscanは完全なテーブルスキャンを意味し、インデックスを作成する必要があります。 3.スキャンするドキュメントが多すぎる場合、または返信するドキュメントが非常に少ない場合、{status:1、created:-1}など、コンポジットインデックスを使用する必要があります。 4。ExecutionTimemillisは50?100msを超え、インデックスを最適化する必要があるか、結(jié)果セットが制限されています。 5.クエリがindexonlyによって上書きされていることを確認(rèn)してください:改善に忠実です

Mongodbでの自動(dòng)データの有効化にTTLインデックスを使用する方法 Mongodbでの自動(dòng)データの有効化にTTLインデックスを使用する方法 Sep 16, 2025 am 01:28 AM

TTLインデックスは、期限切れのドキュメントを自動(dòng)的に削除できます。これは、ログ、セッション、その他の時(shí)間のかかるデータに適しています。日付フィールドに基づいて作成する必要があり、expireaftersecondsは時(shí)限クリーニングを?qū)g裝するように設(shè)定されており、バックグラウンドタスクが60秒ごとにチェックされ、データが自動(dòng)的にクリアされるようにします。

Mongodbで製品カタログのスキーマを設(shè)計(jì)する方法 Mongodbで製品カタログのスキーマを設(shè)計(jì)する方法 Sep 21, 2025 am 01:31 AM

designaroundAccesspatternsbyusinging fleximawitemwithemdeddocumentsforporformance;

シャードとスケーリングの実用的なガイド シャードとスケーリングの実用的なガイド Sep 21, 2025 am 06:43 AM

shardingisessentialforscalingmongodbwhendataex seceex single-servercapacitythroughputlimits、enablinghorizo??ntalscalingbydistributingdataacrossmultipleshards.2.ashardedclusterconsistsofshards(dataStorage)、mongosroters(metrouting)、confighers、andsuntrouts、andsustrouters(quiryrouting)など

Mongodbのストレージ利用を最適化する方法 Mongodbのストレージ利用を最適化する方法 Sep 19, 2025 am 06:25 AM

効率的なものは、schemadesign、properindexing、andcompression.schemasshortfieldnamesを使用して、在庫を維持するために、効率的なものを採用しました

Mongodbクエリで正規(guī)表現(xiàn)を使用する方法は? Mongodbクエリで正規(guī)表現(xiàn)を使用する方法は? Sep 24, 2025 am 12:34 AM

MongoDBは、主に$ regexオペレーターまたはJavascriptregexpオブジェクトを介して実裝されている正規(guī)表現(xiàn)を使用したパターンマッチングをサポートしています。 2。db.users.find({name:{$ regex: "john"、$ options: "i"}})を使用して、「ジョン」が含まれており、ケース非感動(dòng)的なドキュメントを見つけます。 3. db.users.find({email:/.* \。com$/i})などのJavaScriptの通常の構(gòu)文を使用して、「.com」で終わるメールを一致させることもできます。

See all articles