序章

MongoDBは、無料でオープンソースのドキュメント指向データベースです。 従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。 代わりに、動的スキーマを持つJSONのようなドキュメントを使用します。 リレーショナルデータベースとは異なり、MongoDBでは、データベースにデータを追加する前に事前定義されたスキーマは必要ありません。 更新されたスキーマを使用して新しいデータベースをセットアップしなくても、いつでも必要な頻度でスキーマを変更できます。

このチュートリアルでは、CentOS7サーバーにMongoDBCommunityEditionをインストールする方法について説明します。

前提条件

このチュートリアルを実行する前に、root以外の通常のユーザーが sudo 特権。 これらの権限を持つユーザーを設定する方法の詳細については、ガイドCentOSでSudoユーザーを作成する方法を参照してください。

ステップ1-MongoDBリポジトリを追加する

The mongodb-org パッケージはCentOSのデフォルトリポジトリ内に存在しません。 ただし、MongoDBは専用のリポジトリを維持しています。 サーバーに追加しましょう。

とともに vi エディター、作成 .repo のファイル yum、CentOSのパッケージ管理ユーティリティ:

  1. sudo vi /etc/yum.repos.d/mongodb-org.repo

次に、MongoDBのドキュメントの Install on Red Hat セクションにアクセスし、最新の安定版リリースのリポジトリ情報をファイルに追加します。

/etc/yum.repos.d/mongodb-org.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

ファイルを保存して閉じます。

先に進む前に、MongoDBリポジトリが yum 効用。 The repolist コマンドは、有効なリポジトリのリストを表示します。

  1. yum repolist
Output
. . . repo id repo name base/7/x86_64 CentOS-7 - Base extras/7/x86_64 CentOS-7 - Extras mongodb-org-3.2/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7 - Updates . . .

とともに MongoDB Repository 所定の位置で、インストールを続行しましょう。

ステップ2–MongoDBをインストールする

インストールできます mongodb-org を使用したサードパーティリポジトリからのパッケージ yum 効用。

  1. sudo yum install mongodb-org

二つあります Is this ok [y/N]: プロンプト。 1つ目はMongoDBパッケージのインストールを許可し、2つ目はGPGキーをインポートします。 MongoDBの発行者は、ソフトウェアに署名し、 yum キーを使用して、ダウンロードしたパッケージの整合性を確認します。 各プロンプトで、次のように入力します Y 次にを押します ENTER 鍵。

次に、MongoDBサービスを systemctl 効用:

  1. sudo systemctl start mongod

このチュートリアルでは使用しませんが、MongoDBサービスの状態を変更することもできます。 reloadstop コマンド。

The reload コマンドは、 mongod プロセスは構成ファイルを読み取り、 /etc/mongod.conf、再起動せずに変更を適用します。

  1. sudo systemctl reload mongod

The stop コマンドはすべての実行を停止します mongod プロセス。

  1. sudo systemctl stop mongod

The systemctl ユーティリティは、実行後に結果を提供しませんでした start コマンドですが、サービスが開始されたことを確認するには、 mongod.log とファイル tail 指図:

  1. sudo tail /var/log/mongodb/mongod.log
Output
. . . [initandlisten] waiting for connections on port 27017

接続待ちの出力は、MongoDBが正常に開始され、MongoDBシェルを使用してデータベースサーバーにアクセスできることを確認します。

  1. mongo

<$>[注] ノート: MongoDBシェルを起動すると、次のような警告が表示される場合があります。

** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

MongoDBはスレッド化されたアプリケーションです。 ワークロードを処理するために追加のプロセスを起動できます。 警告は、MongoDBが最も効果的であるためには、スピンアップが許可されているプロセスの数が、任意の時点で開くことができるファイルの数の半分である必要があることを示しています。 警告を解決するには、 processes のソフトrlimit値 mongod 編集することによって 20-nproc.conf ファイル:

  1. sudo vi /etc/security/limits.d/20-nproc.conf

ファイルの最後に次の行を追加します。

/etc/security/limits.d/20-nproc.conf
. . .
mongod soft nproc 32000

MongoDBで利用できる新しい制限については、 systemctl 効用:

  1. sudo systemctl restart mongod

その後、MongoDBシェルに接続すると、警告は表示されなくなります。 <$>

シェルからMongoDBを操作する方法を学ぶために、の出力を確認できます。 db.help() dbオブジェクトのメソッドのリストを提供するメソッド。

  1. db.help()
Output
DB methods: db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] db.auth(username, password) db.cloneDatabase(fromhost) db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) db.createCollection(name, { size : ..., capped : ..., max : ... } ) db.createUser(userDocument) db.currentOp() displays currently executing operations in the db db.dropDatabase() . . .

出て mongod プロセスはバックグラウンドで実行されていますが、シェルを終了します exit 指図:

  1. exit
Output
Bye

ステップ3–スタートアップの確認

データベース駆動型アプリケーションはデータベースなしでは機能できないため、MongoDBデーモンが mongod、システムから開始します。

使用 systemctl 起動ステータスを確認するユーティリティ:

  1. systemctl is-enabled mongod; echo $?

ゼロの出力は、必要なデーモンが有効になっていることを確認します。 ただし、1つは、起動しない無効化されたデーモンを確認します。

Output
. . . enabled 0

デーモンが無効になっている場合は、 systemctl それを有効にするユーティリティ:

  1. sudo systemctl enable mongod

これで、システムの再起動後に自動的に起動するMongoDBの実行中のインスタンスができました。

ステップ4–サンプルデータセットのインポート(オプション)

他のデータベースサーバーとは異なり、MongoDBにはデータが含まれていません test データベース。 本番データを使用して新しいソフトウェアを試したくないので、「Getting StartedwithMongoDB」ドキュメントの「ImportExampleDataset」セクションからサンプルデータセットをダウンロードします。 JSONドキュメントにはレストランのコレクションが含まれており、MongoDBとの対話を練習し、機密データに害を及ぼすことを回避するために使用します。

書き込み可能なディレクトリに移動することから始めます。

  1. cd /tmp

使用 curl コマンドとMongoDBからのリンクでJSONファイルをダウンロードします。

  1. curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

The mongoimport コマンドは、データをtestデータベースに挿入します。 The --db フラグは、使用するデータベースを定義します。 --collection フラグは、データベース内のどこに情報が保存されるかを指定し、 --file フラグは、インポートアクションを実行するファイルをコマンドに指示します。

  1. mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

出力は、からのデータのインポートを確認します primer-dataset.json ファイル:

Output
connected to: localhost imported 25359 documents

サンプルデータセットを配置したら、それに対してクエリを実行します。

MongoDBシェルを再起動します。

  1. mongo

シェルは test デフォルトでは、データをインポートした場所であるデータベース。

レストランコレクションをクエリします。 find() データセット内のすべてのレストランのリストを表示するメソッド。 コレクションには25,000を超えるエントリが含まれているため、オプションを使用してください limit() クエリの出力を指定された数に減らすメソッド。 さらに、 pretty() メソッドは、改行とインデントを使用して情報をより人間が読めるようにします。

  1. db.restaurants.find().limit( 1 ).pretty()
Output
{ "_id" : ObjectId("57e0443b46af7966d1c8fa68"), "address" : { "building" : "1007", "coord" : [ -73.856077, 40.848447 ], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [ { "date" : ISODate("2014-03-03T00:00:00Z"), "grade" : "A", "score" : 2 }, { "date" : ISODate("2013-09-11T00:00:00Z"), "grade" : "A", "score" : 6 }, { "date" : ISODate("2013-01-24T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-11-23T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2011-03-10T00:00:00Z"), "grade" : "B", "score" : 14 } ], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" }

サンプルデータセットを引き続き使用して、MongoDBに慣れたり、MongoDBを削除したりできます。 db.restaurants.drop() 方法:

  1. db.restaurants.drop()

最後に、シェルを終了します exit 指図:

  1. exit
Output
Bye

結論

このチュートリアルでは、サードパーティのリポジトリをに追加する方法について説明しました。 yum、MongoDBデータベースサーバーのインストール、サンプルデータセットのインポート、および単純なクエリの実行。 MongoDBの機能の表面をかろうじてかじっただけです。 複数のコレクションを使用して独自のデータベースを作成し、それらに多数のドキュメントを入力して、堅牢なアプリケーションの構築を開始できます。