共有する

MongoDBデータベースツール&ユーティリティの紹介

どのデータベースを使用しているかにかかわらず、データベースを操作するのに役立つデータベースツールがおそらく利用できるでしょう。データベースツールとは、データベース管理タスクを実行する際に作業を容易にするツール、ユーティリティ、アシスタントの総称です。

必須ではありませんが、データベースツールとユーティリティは時間と労力を節約できます。MongoDBには、デプロイメントで使用できる非常に役立つ、知っておくべきコマンドラインユーティリティの公式コレクションがあります。この記事では、インストールについて簡単に触れた後、最も便利なユーティリティについて説明します。

MongoDBはそのツールとユーティリティを、バイナリインポート/エクスポート、データインポート/エクスポート、診断ツール、GridFSの4つのカテゴリに分けているので、それに応じて説明します。

MongoDBデータベースツールのインストール

MongoDBバージョン4.4以降、MongoDBデータベースツールはMongoDBサーバーのダウンロードとは別にリリースされています。また、これらのツールがそれぞれのMongoDBサーバーバージョンと同時にリリースされていた以前のインスタンスと比較して、独自のバージョン管理で保守されています。

インストール手順については触れませんが、MongoDB 4.4以降を使用している場合は、以下の記事で各OSのインストールプロセスを説明しています。

バイナリのインポート/エクスポート

mongodump

mongodumpは、データベースの内容のバイナリ形式でのエクスポートを作成するためのユーティリティです。このユーティリティは、スタンドアロン、レプリカセット、およびシャードクラスターのデプロイメントからデータをエクスポートできます。エクスポートはmongodまたはmongosインスタンスのいずれからでも実行できます。mongodumpmongoシェルではなく、システムコマンドラインから実行する必要があることに注意することが重要です。

mongodumpは、完全なバックアップおよびリカバリ戦略の一部を形成するために、mongorestore(今後さらに説明)と連携することができます。mongodumpは、コレクション、クエリ、または本番環境から開発環境への同期に基づいて部分的なバックアップを生成することもできます。

小規模なデプロイメントには有効な戦略ですが、大規模なMongoDBデプロイメントの場合、mongodumpは別のバックアップ戦略のために脇に置いておくべきです。mongodumpは実行中のmongodインスタンスと対話することで動作するため、実行中のデータベースのパフォーマンスに影響を与える可能性があります。トラフィックを生成するだけでなく、このツールはデータベースがすべてのデータをメモリを通して読み取ることを強制します。MongoDBがめったにアクセスされないデータを読み取る必要がある場合、これはより頻繁にアクセスされるデータからリソースを奪い、通常のワークロードのパフォーマンスを低下させる可能性があります。

mongodumpの基本的な構文は、システムコマンドラインで次のようになります。

mongodump <options> <connection-string>

mongodumpはファイルを生成し、アクセスできるようにdump/ディレクトリに保存します。公式MongoDBドキュメントで、接続文字列の設定とその他のオプションについて詳しく読むことができます。

mongorestore

mongorestoreは、小規模なデプロイメントの十分なバックアップ戦略を作成するためのmongodumpのパートナーツールです。mongorestoreプログラムは、バイナリデータベースダンプ(mongodumpファイル)または標準入力からデータをmongodまたはmongosインスタンスにロードします。

mongodumpと同様に、mongorestoremongoシェルではなく、システムコマンドラインで実行する必要があります。これも実行中のmongodインスタンスに対して動作するため、小規模なデプロイメント以上の復元戦略としては非効率です。

mongorestoreの基本的な構文は次のようになります。

mongorestore <options> <connection-string> <directory or file to restore>

mongorestoreの追加オプションは、バックアップ戦略やスタンドアロンインポートに必要な要件に合わせて追加できます。

bsondump

bsondumpは、mongodumpを使用して生成されたバイナリファイルを読み取るためのツールです。bsondumpユーティリティは、BSONファイルをJSONを含む人間が読める形式に変換します。

bsondumpはコマンドラインで実行する必要があり、BSONファイルを検査するための診断ツールです。データ取り込みやその他のアプリケーション用途に使用することを意図していません。

bsondumpは、データをフォーマットするためにExtended 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データ型を保持するには、Extended JSON v2.0 (Canonical mode)を指定する必要があります。

JSONはBSONでサポートされている型の一部しか直接表現できないため、これは知っておくべき重要なオプションです。したがって、--jsonFormatオプションを追加し、canonicalに設定する必要があります。例は次のようになります。

mongoexport --jsonFormat=canonical --collection=<coll> <connection-string>

mongodumpと同様に、mongoexportには、エクスポートされたファイルをMongoDBにインポートできるようにレンダリングするパートナーインポートツールがあります。

mongoimport

mongoimportツールは、mongoexportツールで作成されたExtended JSON(BSONデータ型を保持するmongoexportファイル)、CSV、またはTSV形式のエクスポートからキャプチャされたデータをインポートします。正しい形式であれば、mongoimportはサードパーティのエクスポートツールからのファイルもインポートできます。

mongoimportツールは、mongoシェルではなく、システムコマンドラインからのみ使用できます。その基本的な構文は次のとおりです。

mongoimport <options> <connection> <file>

mongoimportは、mongoexportで取得したバックアップからデータベースを復元します。したがって、両方の引数のほとんどは同じです。バックアップ戦略のためにこれらのツールを一緒に使用する場合は、同じバージョンを使用するのが最善です。

mongoimportは、UTF-8エンコードされたデータファイルのみをサポートしています。他のエンコードでインポートしようとすると、エラーが発生します。追加オプションの完全なリストは、公式MongoDBドキュメントに記載されています。

診断ツール

mongostat

MongoDBには、データベースインスタンスに関する洞察を収集するための便利なツールもあります。その1つがmongostatです。mongostatは、現在実行中のmongodまたはmongosインスタンスのステータスを迅速に概要する診断ツールです。UNIX/Linuxに詳しい方なら、MongoDBのコンテキストにおけるvmstatに似ていると感じるでしょう。

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>: GridFSストア内のファイルで、<string>のいずれかの部分に名前が一致するものを一覧表示します。
  • delete <filename>: 指定されたファイルをGridFSストレージから削除します。

mongofilesは、ローカルファイルシステムとGridFS間の相互接続性を提供し、システムコマンドライン経由で便利に操作できます。これにより、データベース管理者にとってファイル管理とファイルストレージがより簡単なタスクになり、データ処理が強化されます。

結論

この記事では、コマンドライン経由で重要なデータベースタスクを簡素化するMongoDBデータベースツールおよびユーティリティの一部について説明しました。ツールは、日常のデータベース管理操作に不可欠な場合もあれば、アドホックにのみ必要とされる場合もあります。

健全なバックアップ/リカバリ戦略を維持するためのデータのエクスポート/インポート、データベースまたはコレクションレベルでの診断監視、ファイル管理のためのファイルシステム間のインターフェースの簡素化など、MongoDBがカバーしています。

著者について
Alex Emerich

アレックス・エメリック

アレックスは、典型的なバードウォッチング好きで、ヒップホップ好きの読書家であり、データベースについて書くことも楽しんでいます。現在ベルリンに住んでおり、レオポルド・ブルームのように街を目的もなく歩いている姿を見かけることができます。
© 2025 prisma.dokyumento.jp. All rights reserved.