MongoDB: ドキュメント指向データベース入門

Database tutorial - IT technology blog
Database tutorial - IT technology blog

MongoDBを選ぶ理由 (背景と利点)

開発者として、従来のRDBMSが少し制約が多いと感じることがあるかもしれません。まさにそこで、MongoDBのようなドキュメント指向データベースが真価を発揮します。MongoDBは、柔軟なドキュメントデータモデルに基づいて構築された、主要なNoSQLデータベースとして際立っています。厳格な行と列の代わりに、BSON(バイナリJSON)ドキュメントにデータを格納します。これらは、本質的に非常に適応性の高いJSONライクレコードです。

では、なぜドキュメント指向データベースを選ぶのでしょうか?データ構造が常に変化したり、多様なフィールドを持つデータを保存する必要があるアプリケーションを構築する場面を想像してみてください。たとえば、各ユーザーが異なる情報セットを持つ可能性のあるユーザープロファイルなどです。

あるユーザーは「phone_number」と「address」を持っているかもしれませんが、別のユーザーは「email」と「social_media_links」しか持っていないかもしれません。MongoDBでは、事前に厳密なスキーマを定義する必要はありません。各ドキュメントは独自の構造を持つことができ、驚くべき柔軟性を提供します。この適応性により、MongoDBはアジャイル開発、コンテンツ管理システム、分析、および大規模で多様なデータセットを扱うあらゆるアプリケーションに最適です。

JSONライクなドキュメントがもたらす適応性は、本当に強力です。私は、特にシステム間でデータを転送したり、分析のために準備したりする場合に、さまざまな形式のデータを頻繁に扱います。たとえば、新しいプロジェクトやテスト環境のセットアップのために、データインポートのためにCSVをJSONに素早く変換するために、toolcraft.app/ja/tools/data/csv-to-jsonをよく利用します。

これはブラウザで直接動作するため、プライバシーの面で優れています。つまり、機密情報が私のマシンから離れることはありません。このデータの変換と統合の容易さは、なぜ多くの開発者がMongoDBのドキュメントモデルに惹かれるのかを完璧に示しています。

MongoDBは、その柔軟性に加えて、卓越したパフォーマンスとスケーラビリティのために構築されています。シャーディングと呼ばれる技術で、データを多数のサーバーに分散させることで、大量のデータを効率的に管理します。このアプローチにより、データベースはアプリケーションとともにシームレスに拡張できます。小さな概念実証から、毎秒何百万ものリクエストを処理するグローバルに展開されたサービスへと進化させることが可能です。

MongoDBのインストール

MongoDBをシステムにセットアップしましょう。一般的なLinuxディストリビューションとmacOSでのインストールについて説明します。常に公式パッケージリポジトリを使用してください。これにより、最新の安定バージョンと信頼性の高いアップデートが保証されます。

Ubuntu/Debian

Debianベースのシステムでは、通常、MongoDBの公式GPGキーとリポジトリエントリーを追加します。


# MongoDBの公開GPGキーをインポート
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
   sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-7.0.gpg

# MongoDB用のリストファイルを作成
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | \
   sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# ローカルパッケージデータベースをリロード
sudo apt update

# MongoDBをインストール
sudo apt install -y mongodb-org

インストール後、MongoDBサービスを開始して有効にします


sudo systemctl start mongod
sudo systemctl enable mongod

CentOS/RHEL

Red Hatベースのシステムでは、.repoファイルを作成します。


# .repoファイルを作成
sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo

ファイルに以下の内容を追加します。


[mongodb-org-7.0]
name=MongoDBリポジトリ
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc

その後、MongoDBをインストールします。


sudo yum install -y mongodb-org

サービスを開始して有効にします。


sudo systemctl start mongod
sudo systemctl enable mongod

macOS (Homebrewを使用)

Homebrewを使用すると、macOSでのインストールが大幅に簡素化されます。


# Homebrewをアップデート
brew update

# MongoDB Community Editionをインストール
brew install [email protected]

MongoDBをバックグラウンドサービスとして開始するには:


brew services start [email protected]

または、手動で実行するには:


mongod --config /opt/homebrew/etc/mongod.conf # Intel Macを使用している場合はパスを調整

MongoDB設定の基本

MongoDBの主要な設定ファイルは通常mongod.confという名前です。Linuxでは、通常/etc/mongod.confにあります。Homebrewを使用しているmacOSでは、/opt/homebrew/etc/mongod.conf(ARM Macの場合)または/usr/local/etc/mongod.conf(Intel Macの場合)にあることが多いです。

以下に、調整したい可能性のある一般的な設定をいくつか示します。


# /etc/mongod.conf (設定例スニペット)

# データの保存場所と方法。
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

# ログの書き込み場所。
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# ネットワークインターフェース
net:
  port: 27017
  bindIp: 127.0.0.1  # デフォルトではlocalhostのみをリッスン

# セキュリティ設定 (本番環境では強く推奨)
security:
  authorization: enabled # 認証を有効にする

# オペレーションプロファイリング
operationProfiling:
  mode: off
  slowOpThresholdMs: 100

# プロセス管理
processManagement:
  fork: true  # フォークしてバックグラウンドプロセスとして実行
  pidFilePath: /var/run/mongodb/mongod.pid

主要な設定ポイント:

  • storage.dbPath: これはMongoDBがデータファイルを保存する場所です。このディレクトリが存在し、MongoDBがそこに書き込むための適切な権限を持っていることを確認してください。
  • systemLog.path: MongoDBのログファイルへのパス。トラブルシューティングに不可欠です。
  • net.port: MongoDBがリッスンするポート(デフォルトは27017)。
  • net.bindIp: 非常に重要ですが、これはMongoDBがリッスンするIPアドレスを決定します。デフォルトでは127.0.0.1(localhost)であり、同じマシンからの接続のみが許可されます。外部アクセス(例:アプリケーションサーバーから)の場合、これを変更する必要があります。0.0.0.0(すべてのインターフェース)または特定のネットワークインターフェースIPに設定できます。不正なアクセスを防ぐために、必ず適切なファイアウォールルールでサーバーを保護してください
  • security.authorization: enabled: データの保護のため、初期のローカル開発環境以外のすべての環境でこれを有効にすることを強くお勧めします。有効にすると、ユーザーはデータベースにアクセスするために認証が必要になります。

mongod.confに変更を加えた後、変更を有効にするにはMongoDBサービスを再起動する必要があります。


sudo systemctl restart mongod # Linux向け
brew services restart [email protected] # macOS Homebrew向け

MongoDBインスタンスの確認と監視

MongoDBがインストールされ設定されたので、それが機能していることを確認し、基本的な監視を見てみましょう。

MongoDBへの接続

MongoDBと対話するための主要なコマンドラインツールはmongosh、つまりMongoDB Shellです。実行中のインスタンスに接続するには、次を使用します。


mongosh

認証を有効にしている場合は、特定のユーザーとして接続します。


mongosh --authenticationDatabase admin -u "yourAdminUser" -p "yourPassword"

接続すると、プロンプト(例:test>)が表示されます。既存のデータベースに切り替えるか、新しいデータベースを作成するには、それを使用するだけです。


use myNewDatabase;
// myNewDatabaseに切り替えました

基本的な操作 (CRUD)

すべてが機能していることを確認するために、基本的な作成、読み取り、更新、削除(CRUD)操作を実行しましょう。

作成: ドキュメントの挿入


db.users.insertOne({
  name: "Alice",
  age: 30,
  email: "[email protected]",
  interests: ["コーディング", "ハイキング"]
});

読み取り: ドキュメントの検索


db.users.find(); // 'users'コレクション内のすべてのドキュメントを検索
db.users.find({ name: "Alice" }); // 名前がAliceのドキュメントを検索

更新: ドキュメントの変更


db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 31, "address.city": "New York" } }
);

削除: ドキュメントの削除


db.users.deleteOne({ name: "Alice" });

MongoDBの監視

mongoshシェルからすばやくステータスを確認するには:


db.serverStatus();

このコマンドは、サーバーの運用状態に関する広範な詳細を提供します。メモリ使用量、アクティブな接続、バックグラウンドプロセスをカバーしています。これは、パフォーマンスの問題を診断するための優れた出発点です。

システムのコマンドラインから、サービスステータスを確認できます。


sudo systemctl status mongod # Linux向け
brew services info [email protected] # macOS Homebrew向け

さらに、mongod.confで設定されたMongoDBログを監視します。Linuxでは、ログファイルは通常/var/log/mongodb/mongod.logにあります。


tail -f /var/log/mongodb/mongod.log

このコマンドはリアルタイムのログエントリーを表示し、アクティビティの監視や問題のトラブルシューティングに不可欠です。

MongoDBを始めることは、柔軟でスケーラブルなデータ管理の世界に足を踏み入れることを意味します。このガイドは強固な基盤を提供します。最初のドキュメント指向データベースインスタンスをインストール、設定、および自信を持って操作できるようにします。さあ、NoSQLの堅牢な機能を探索しましょう!

Share: