MongoDB
MongoDB データベースツールとユーティリティ入門
MongoDB データベースツールとユーティリティ入門
使用しているデータベースに関係なく、データベースの操作に役立つデータベースツールが利用できる可能性があります。データベースツールは、データベース管理タスクを実行する際に生活を楽にするツール、ユーティリティ、およびアシスタントの総称です。
必須ではありませんが、データベースツールとユーティリティを使用すると、時間と労力を節約できます。MongoDB には、デプロイメントで使用できる非常に役立つ、知っておくと役立つコマンドラインユーティリティのファーストパーティコレクションがあります。この記事では、インストールについて簡単に触れ、知っておくべき最も役立つユーティリティについて説明します。
MongoDB は、ツールとユーティリティをバイナリインポート/エクスポート、データインポート/エクスポート、診断ツール、GridFS の 4 つのカテゴリに分類しているため、それに応じて説明します。
MongoDB データベースツールのインストール
MongoDB バージョン 4.4 以降では、MongoDB データベースツールは MongoDB サーバーのダウンロードとは別にリリースされています。これらのツールがそれぞれの MongoDB サーバーバージョンと一緒にリリースされていた以前のインスタンスと比較して、独自のバージョン管理で保守されています。
インストール手順については説明しませんが、MongoDB 4.4 以降を使用している場合は、以下で各 OS のインストールプロセスについて説明します。
MongoDB を使用している場合は、Prisma のMongoDB コネクタをチェックしてください!Prisma Client を使用して、本番環境の MongoDB データベースを自信を持って管理できます。
MongoDB と Prisma の使用を開始するには、ゼロからの開始ガイド、または既存のプロジェクトに追加する方法を確認してください。
バイナリインポート/エクスポート
mongodump
mongodump
は、データベースの内容のバイナリエクスポートを作成するためのユーティリティです。このユーティリティは、スタンドアロン、レプリカセット、およびシャーディングされたクラスタデプロイメントからデータをエクスポートできます。エクスポートは、mongod
または mongos
インスタンスのいずれかから実行できます。mongodump
は mongo
シェルではなく、システムコマンドラインから実行する必要があることに注意することが重要です。
mongodump
は、完全なバックアップおよび復旧戦略の一部を形成するために、mongorestore
(後述) と連携できます。mongodump
は、コレクション、クエリ、または本番環境から開発環境への同期に基づいて、部分バックアップを生成することもできます。
小規模なデプロイメントには実行可能な戦略ですが、大規模な MongoDB デプロイメントの場合は、mongodump
を別のバックアップ戦略のために脇に置く必要があります。mongodump
は実行中の mongod
インスタンスと対話することで動作するため、実行中のデータベースのパフォーマンスに影響を与える可能性があります。トラフィックを作成するだけでなく、このツールはデータベースにすべてのデータをメモリ経由で読み取ることを強制します。MongoDB がめったにアクセスされないデータを読み取る必要がある場合、これはより頻繁にアクセスされるデータから奪い、通常のワークロードのパフォーマンスを低下させる可能性があります。
mongodump
の基本構文は、システムコマンドラインでは次のようになります。
mongodump <options> <connection-string>
mongodump
はファイルを生成し、アクセスできるように dump/
ディレクトリに保存します。接続文字列構成と、公式 MongoDB ドキュメントの追加のオプションの詳細を読むことができます。
mongorestore
mongorestore
は、小規模なデプロイメントに十分なバックアップ戦略を作成するための mongodump
のパートナーツールです。mongorestore
プログラムは、バイナリデータベースダンプ (mongodump
ファイル) または標準入力から mongod
または mongos
インスタンスにデータをロードします。
mongodump
と同様に、mongorestore
も mongo
シェルではなく、システムコマンドラインで実行する必要があります。実行中の mongod
インスタンスに対しても動作するため、小規模なデプロイメント以上の復元戦略としては非効率的です。
mongorestore
の基本構文は次のようになります。
mongorestore <options> <connection-string> <directory or file to restore>
mongorestore
の追加のオプションは、バックアップ戦略またはスタンドアロンインポートに必要な要件を満たすために追加できます。
bsondump
bsondump
は、mongodump
を使用して生成されたバイナリファイルを読み取るためのツールです。bsondump
ユーティリティは、BSON ファイルを JSON を含む人間が読める形式に変換します。
bsondump
はコマンドラインで実行する必要があり、BSON ファイルを検査するための診断ツールです。データインジェストやその他のアプリケーションでの使用を目的としたものではありません。
bsondump
は、データをフォーマットするために拡張 JSON v2.0 (Canonical Mode) を使用します。デフォルトでは、bsondump
は標準出力に書き込みます。JSON ファイルを作成するには、次の --outFile
オプションを使用できます。
bsondump --outFile=file.json file.bson
--outFile
は、bsondump
が出力 JSON データを書き込むファイルのパスを指定します。file.bson
は、変換するファイルを指定します。その他の追加オプションについては、MongoDB ドキュメントで詳しく説明されています。
bsondump
は、ファイルを人間が読めるようにする必要がある mongodump
デバッグタスクに特に役立ちます。たとえば、次の操作を実行してデバッグ出力を生成できます。
bsondump --type=debug file.bson
データインポート/エクスポート
mongoexport
mongoexport
ツールは、MongoDB インスタンスからデータをエクスポートすることもできます。ただし、このコマンドラインツールは、mongodump
のようなバイナリダンプではなく、JSON または CSV エクスポートを生成するため、操作が遅くなります。
mongoexport
を使用するには、ユーザーはターゲットデータベースに対する少なくとも読み取りアクセス権が必要です。mongod
または mongos
インスタンスのいずれかに接続できます。mongoexport
の基本構文は次のようになります。
mongoexport --collection=<coll> <options> <connection-string>
接続ニーズとユースケースに応じて組み込むことができる追加オプションが多数あります。mongoexport
は JSON または CSV エクスポートを生成するため、インスタンス全体のバックアップのためにすべての豊富なBSON データ型を保持するには、拡張 JSON v2.0 (Canonical モード) を指定する必要があります。
JSON は BSON でサポートされている型の一部しか直接表現できないため、これは知っておくべき重要なオプションです。したがって、--jsonFormat
オプションを追加し、canonical
に設定する必要があります。例としては、次のようになります。
mongoexport --jsonFormat=canonical --collection=<coll> <connection-string>
mongodump
と同様に、mongoexport
には、エクスポートされたファイルを MongoDB にインポートするためにレンダリングできるパートナーインポートツールがあります。
mongoimport
mongoimport
ツールは、mongoexport
ツールから作成された拡張 JSON (mongoexport
ファイルで BSON データ型を保持)、CSV、または TSV エクスポートからキャプチャされたデータをインポートします。適切なフォーマットを使用すると、mongoimport
はサードパーティのエクスポートツールからのファイルをインポートすることもできます。
mongoimport
ツールは、システムコマンドラインからのみ使用でき、mongo
シェルからは使用できません。基本的な構文は次のとおりです。
mongoimport <options> <connection> <file>
mongoimport
は、mongoexport
で作成されたバックアップからデータベースを復元します。したがって、両方の引数のほとんどは同じです。これらのツールをバックアップ戦略のために一緒に使用する場合は、同じバージョンを使用するのが最善の方法です。
mongoimport
は、UTF-8 エンコードされたデータファイルのみをサポートしています。他のエンコードでインポートしようとすると、エラーが発生します。追加のオプション構成の網羅的なリストは、公式 MongoDB ドキュメントにあります。
診断ツール
mongostat
MongoDB には、データベースインスタンスに関する洞察を収集するための便利なツールもあります。そのようなツールの 1 つが mongostat
です。mongostat
は、現在実行中の mongod
または mongos
インスタンスの状態の概要をすばやく提供する診断ツールです。UNIX/Linux に詳しい場合は、vmstat
に似ていますが、MongoDB のコンテキストでは異なります。
mongostat
ユーティリティは、システムコマンドラインからのみ実行でき、mongo
シェルからは実行できません。mongod
インスタンスに接続して mongostat
ツールを使用するには、ユーザーはクラスタの serverStatus
特権アクションを持っている必要があります。MongoDB には、これを提供する clusterMonitor
という組み込みロールがあります。他のロールをカスタマイズして mongostat
を活用することもできます。
mongostat
の基本構文は次のとおりです。
mongostat <options> <connection-string> <polling interval in seconds>
デフォルトでは、mongostat
は 1 秒間の操作を反映する値を報告します。ただし、これは<sleeptime>
引数で調整できます。この期間を 1 秒より長く調整すると、統計が 1 秒あたりの平均操作数を反映するように平均化されます。
mongostat
は多くのフィールドを返し、関心のあるフィールドのみを返すようにカスタマイズできます。知っておくべきもう 1 つの重要なオプションは、--rowcount=<number>, -n=<number>
です。このオプションは、mongostat
によって返される行数を制限します。返されるフィールドの例を次に示します。
inserts
: 1 秒あたりにデータベースに挿入されたオブジェクトの数。query
: 1 秒あたりのクエリ操作の数。vsize
: 最後のmongostat
呼び出し時のプロセスで使用された仮想メモリの量 (メガバイト単位)。repl
: メンバーのレプリケーションステータス。
公式 MongoDB ドキュメントには、さらに多くのフィールドが記載されていますが、これらのいくつかの例は、システムコマンドラインからのデータベース監視に対する mongostat
ユーティリティの機能を示しています。
mongotop
mongostat
はデータベースレベルでの監視に役立つツールですが、mongotop
はコレクションレベルごとの統計を提供するのに役立つツールです。具体的には、mongotop
は、mongod
インスタンスが 1 秒あたりにデータの読み取りおよび書き込みに費やす時間を追跡する方法を提供します。
mongotop
はコマンドラインからのみ実行でき、基本的な構文は次のようになります。
mongotop <options> <connection-string> <polling interval in seconds>
mongotop
は次のフィールドを返します。
mongotop.ns
: これはデータベース名前空間であり、データベース名とコレクションの組み合わせです。mongotop.total
:mongod
が名前空間で操作に費やした合計時間を提供します。mongotop.read
:mongod
が名前空間で読み取り操作を実行するのに費やした時間を提供します。mongotop.write
:mongod
が名前空間で書き込み操作を実行するのに費やした時間を提供します。mongotop.<timestamp>
: 返されたデータのタイムスタンプを提供します。
mongotop
を使用すると、データベースユーザーはデータベース内のコレクションのトラフィックを監視できます。コレクションで読み取りまたは書き込み操作のスパイクまたは低迷が発生している時期を把握できます。
GridFS
GridFS は、MongoDB データベースに大きなファイルを保存するための規約です。公式の MongoDB ドライバはすべてこの規約をサポートしており、次の mongofiles
プログラムも同様です。ビデオ、オーディオ、画像などの大きなファイルのストレージとリカバリの抽象化レイヤーとして機能します。
mongofiles
mongofiles
ツールを使用すると、システムコマンドラインから MongoDB インスタンスに GridFS オブジェクトとして保存されているファイルを操作できます。これは、ファイルシステムに保存されているオブジェクトと GridFS の間にインターフェースを提供するため、特に役立ちます。
mongofiles
の基本構文は次のとおりです。
mongofiles <options> <connection-string> <command> <filename or _id>
<command>
コンポーネントは、mongofiles
ユーティリティに実行させたいアクションを決定します。 コマンドの例を次に示します。
list <prefix>
: GridFS ストア内のファイルを一覧表示します。<prefix>
部分はオプションで、返されるアイテムのリストをその文字列で始まるファイルに制限します。search <string>
:<string>
の任意の部分に一致する名前を持つ GridFS ストア内のファイルを一覧表示します。delete <filename>
: 指定されたファイルを GridFS ストレージから削除します。
mongofiles
は、ローカルファイルシステムと GridFS の間の相互接続性を提供し、システムコマンドラインを介して簡単にナビゲートできます。これにより、ファイル管理とファイルストレージがデータベース管理者にとってより簡単なタスクになり、データ処理が強化されます。
結論
この記事では、コマンドラインから重要なデータベースタスクを簡素化する MongoDB データベースツールとユーティリティの一部について説明しました。ツールは、日常のデータベース管理操作に不可欠な場合もあれば、アドホックに必要な場合もあります。
健全なバックアップ/復旧戦略を維持するためのデータのエクスポート/インポート、データベースまたはコレクションレベルでの診断監視、またはファイル管理のためのファイルシステム間のインターフェースの簡素化など、MongoDB はあなたをカバーします。
MongoDB を使用している場合は、Prisma のMongoDB コネクタをチェックしてください!Prisma Client を使用して、本番環境の MongoDB データベースを自信を持って管理できます。
MongoDB と Prisma の使用を開始するには、ゼロからの開始ガイド、または既存のプロジェクトに追加する方法を確認してください。