[ MongoDB](https://cloud.tencent.com/product/mongodb?from=10680)は、無料のオープンソースソフトウェアであるドキュメント指向のデータベースです。従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。代わりに、JSONのようなドキュメントと動的パターンを使用します。リレーショナルデータベースとは異なり、MongoDBは、データベースにデータを追加する前に事前定義されたスキーマを必要としません。更新されたスキーマで新しいデータベースを設定しなくても、必要に応じていつでもスキーマを変更できます。
このチュートリアルでは、CentOS7サーバーにMongoDBCommunityEditionをインストールする方法について説明します。
sudo
コマンドを使用できる非rootアカウントのCentOS サーバーがセットアップされ、ファイアウォールがオンになっています。サーバーをお持ちでない方は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [開発者ラボ](https://cloud.tencent.com/developer/labs?from=10680)を使って実験してから[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
mongodb-org
パッケージは、CentOSのデフォルトリポジトリに存在しません。ただし、MongoDBは専用のリポジトリを維持しています。サーバーに追加します。
vi
エディターを使用して、CentOS管理ユーティリティの yum
パッケージ用の .repo
ファイルを作成します。
sudo vi /etc/yum.repos.d/mongodb-org.repo
次に、MongoDBドキュメントの[Install on Red Hat](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum)セクションにアクセスし、リポジトリ情報の最新の安定バージョンをファイルに追加します。
[ 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
ファイルを保存して閉じます。
続行する前に、 yum
ユーティリティにMongoDBリポジトリが存在することを確認する必要があります。 repolist
コマンドは、有効なリポジトリのリストを表示します。
yum repolist
...
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リポジトリ
で、インストールを続けましょう。
yum
ユーティリティを使用して、サードパーティのリポジトリから mongodb-org
パッケージをインストールできます。
sudo yum install mongodb-org
2つの Is this ok [y / N]:
プロンプトがあります。 1つ目はMongoDBパッケージのインストールを許可し、2つ目はGPGキーのインポートを許可します。 MongoDBパブリッシャーはソフトウェアに署名し、 yum
はキーを使用してダウンロードされたパッケージの整合性を確認します。各プロンプトで「Y」と入力し、「ENTER」キーを押します。
次に、 systemctl
ユーティリティを使用してMongoDBサービスを開始します。
sudo systemctl start mongod
このチュートリアルでは使用しませんが、 reload
および stop
コマンドを使用してMongoDBサービスのステータスを変更することもできます。
reload
コマンドは、 mongod
プロセスに構成ファイル / etc / mongod.conf
を読み取り、再起動せずに変更を適用するように要求します。
sudo systemctl reload mongod
stop
コマンドは、実行中のすべての mongod
プロセスを一時停止します。
sudo systemctl stop mongod
systemctl
ユーティリティは start
コマンドの実行後に結果を提供しませんが、次の tail
コマンドを使用して mongod.log
でファイルの終わりを調べることにより、サービスが開始されたかどうかを確認できます。
sudo tail /var/log/mongodb/mongod.log
...[ initandlisten] waiting for connections on port 27017
接続の出力がMongoDBが正常に開始されたことを確認するのを待って、MongoDBシェルを使用してデータベースサーバーにアクセスできます。
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の警告文として最も効果的なのは、開始が許可されているプロセスの数を、いつでも開くことができるファイルの数の半分にすることです。警告を削除するには、 mongod``20-nproc.conf
ファイルを編集して、 processes
のソフトrlimit値を変更してください。
sudo vi /etc/security/limits.d/20-nproc.conf
ファイルの最後に次の行を追加します。
...
mongod soft nproc 32000
MongoDBで新しい制限を利用できるようにするには、 systemctl
ユーティリティを使用して再起動します。
sudo systemctl restart mongod
その後、MongoDBシェルに接続すると、警告は表示されなくなります。
シェルからMongoDBを操作する方法を理解するために、** db **オブジェクトのメソッドのリストを提供する db.help()
メソッドの出力を表示できます。
db.help()
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
コマンドを使用してシェルを終了します。
exit
Bye
データベース駆動型アプリケーションはデータベースなしでは実行できないため、MongoDBデーモン mongod
がシステムから起動するようにします。
systemctl
ユーティリティを使用して、起動ステータスを確認します。
systemctl is-enabled mongod; echo $?
デーモンが有効になっていて必要であることを確認するための出力はゼロです。ただし、起動できないことが確認された無効化されたデーモン。
...
enabled
0
デーモンが無効になっている場合は、 systemctl
ユーティリティを使用して有効にします。
sudo systemctl enable mongod
これで、実行中のMongoDBインスタンスができました。これは、システムの再起動後に自動的に起動します。
他のデータベースサーバーとは異なり、MongoDBの test
データベースにはデータがありません。新しいソフトウェアのテストに本番データを使用したくないので、「MongoDBの概要」ドキュメントの「[サンプルデータセットのインポート](https://docs.mongodb.com/getting-started/shell/import-data/)」セクションからサンプルデータセットをダウンロードします。 JSONドキュメントには一連のレストランが含まれており、機密データへの害を回避するために、それを使用してMongoDBとの対話を練習します。
まず、書き込み可能なディレクトリを入力します。
cd /tmp
curl
コマンドとMongoDBのリンクを使用して、JSONファイルをダウンロードします。
curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
mongoimport
コマンドは、** test **データベースにデータを挿入します。 --db
フラグは使用するデータベースを定義し、 --collection
フラグはデータベースに保存されている情報の場所を指定します。--file
フラグはコマンドにインポート操作を実行するファイルを指示します。
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
primer-dataset.json
ファイルからデータをインポートするための確認を出力します。
connected to: localhost
imported 25359 documents
サンプルデータセットが配置されたら、クエリを実行します。
MongoDBシェルを再起動します。
mongo
シェルはデフォルトで test
データベースを選択します。これは、データをインポートする場所です。
find()
メソッドを使用して** restaurants **コレクションにクエリを実行し、データセット内のすべてのレストランのリストを表示します。コレクションには25,000を超えるエントリが含まれているため、オプションの limit()
メソッドを使用して、クエリの出力を指定された数に減らします。さらに、 pretty()
メソッドは、情報を読みやすくするために改行とインデントを使用します。
db.restaurants.find().limit(1).pretty()
{"_ 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に慣れるか、次の db.restaurants.drop()
メソッドを使用して削除できます。
db.restaurants.drop()
最後に、次の exit
コマンドを使用してシェルを終了します。
exit
Bye
このチュートリアルでは、 yum
にサードパーティのリポジトリを追加する方法、MongoDBデータベースサーバーをインストールする方法、サンプルデータセットをインポートする方法、および簡単なクエリを実行する方法を紹介しました。 MongoDBの機能の表面にはほとんど触れていません。複数のコレクションを使用して独自のデータベースを作成し、それらに多くのドキュメントを入力して、強力なアプリケーションの構築を開始できます。
その他のCentOSチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。
参照:「CentOS7にMongoDBをインストールする方法」
Recommended Posts