Mongodbデータベースベース(バージョン3.6.20)
38470 ワード
文書ディレクトリ一、Mongodb概要 1.1概要 1.2特徴 1.3適用シーン 1.4 redisとmongodbの比較 二、mongodb をインストールする三、マルチインスタンス の構成方法四、基本操作 4.1添削改ざん操作例 4.2同じインスタンスでデータベースをコピー 4.3プロセス管理 五、エクスポート、インポート操作 六、データベースのバックアップとリカバリ 7、インスタンス間クローン集合動作 一、Mongodbの概要
1.1概要
●MongoDBは、分散ファイルに基づいて格納されるデータベースです.C++言語で作成されます.WEBアプリケーションに拡張性の高い高性能データストレージソリューションを提供することを目的としています.
●MongoDBは、プラットフォーム間でドキュメント向けのデータベースです.高性能、高可用性を実現し、容易に拡張できる分散ファイルストレージベースのオープンソースデータベースシステムであり、高負荷の場合、より多くのノードを追加することでサーバのパフォーマンスを保証します.
●ビッグデータ時代において、ビッグデータ量の処理はデータベースを考慮する最も重要な原因の一つとなっている.MongoDBの主な目標は、できるだけデータベースのパフォーマンスを向上させることであり、MongoDBの設計を大きく決定します.MongoDBは、メモリ・リソースをキャッシュとして使用して最大限のパフォーマンスを選択し、クエリーのために最も高速なインデックスを自動的に選択します.MongoDBは、データベースをできるだけ簡素化し、クライアントにできるだけ多くの操作を渡すことで、MongoDBが優れたパフォーマンスを維持できる理由の一つです.
●MongoDBは非関係データベース(NoSQL)の中で最も機能が豊富で、最も関係データベースに似ている.リレーショナル・モデルを使用しないのは、より良い拡張性を得るためであり、MongoDBには「行」の概念はありません.その実行方法は主に2つの概念に基づいています.集合(collection)とドキュメント(document)です.
1.2特徴
●Mongoは高性能で、オープンソースで、モードのないドキュメント型データベースであり、多くのシーンで従来のリレーショナル型データベースまたはキー/値格納方式の代わりに使用することができる.
●1、集合向けの記憶:対象及びJSON形式のデータを記憶するのに適している.
●2、MongoDBはインストールが簡単で、ドキュメント向けの記憶機能を提供しており、操作が容易である.
●3、MongoDBはレプリケーション、高可用性、自動スライス機能を提供する.負荷が増加すると(より多くのストレージスペースとより強い処理能力が必要)、コンピュータネットワーク内の他のノードに分散することができます.これがいわゆるスライスです.
●4、MongoDBは豊富なクエリー式をサポートする.
●5、効率的な従来の記憶方式:バイナリデータ及び大型オブジェクト(例えば写真或いは画像)をサポートする.
1.3適用シーン
●MongoDBはWebアプリケーションに拡張性の高い高性能データストレージソリューションを提供することができる.MongoDBの主な適用分野は、Webサイトデータ、分散シーン、データキャッシュ、JSONドキュメントフォーマットストレージです.大きなデータ量、高い同時性、弱いトランザクションに適したインターネットアプリケーションは、数百万から10億レベルのデータ処理能力を提供し、Web 2をよく満たすことができるレベル拡張メカニズムを内蔵している.0およびモバイルインターネットアプリケーションのデータストレージの要件.
1.4 redisとmongodbの比較
●Redisは完全にメモリにデータを保存するデータベースであり、ディスクを使用するのは永続性の目的のためだけであり、Redisデータはすべてメモリに存在し、定期的にディスクに書き込まれ、メモリが足りない場合、指定されたLRUアルゴリズムを選択してデータを削除することができ、永続化はRDB方式またはaof方式を使用する.
●mongodbはドキュメント型の非関係型データベースであり、MongoDBはMySQLに似ており、フィールドインデックス、カーソル操作をサポートしている.その利点は、クエリー機能が比較的強く、JSONデータのクエリーが得意で、大量のデータを格納できるが、トランザクションはサポートされていないことである.
●mongodbのすべてのデータは実際にはハードディスクに格納され、操作するすべてのデータはmmapによってメモリのある領域にマッピングされる.●その後、mongodbはこの領域でデータの修正を行い、こまごましたハードディスクの操作を回避します.
●mmapの内容flushからハードディスクに至るのはオペレーティングシステムのことなので、mongodbがメモリでデータを修正すると、mmapデータflushがハードディスクに届く前にシステムがダウンし、データが失われます.
二、mongodbのインストール
1.公式yumソースインストールmongodbの構成
2.プロファイルリスニングアドレスの変更
3.サービスを開始する.service
三、マルチインスタンスの構成方法
1.構成ファイルをコピーして新しいインスタンスを作成する
2.新規作成したインスタンスをロード
四、基本操作
4.1削除・変更操作例
4.2同じインスタンスでのデータベースのコピー
4.3プロセス管理
五、エクスポート、インポート操作
六、データベースのバックアップとリカバリ
バックアップライブラリschool
ライブラリをabcライブラリに復元(ライブラリが存在しない場合は直接新規)
七、インスタンス間クローン集合操作
●27018ポートのインスタンスを作成した後、クローン集合操作を行う
●27018ポートのインスタンスクローン2701ポートのインスタンスschoolライブラリ内のinfoセット
1.1概要
●MongoDBは、分散ファイルに基づいて格納されるデータベースです.C++言語で作成されます.WEBアプリケーションに拡張性の高い高性能データストレージソリューションを提供することを目的としています.
●MongoDBは、プラットフォーム間でドキュメント向けのデータベースです.高性能、高可用性を実現し、容易に拡張できる分散ファイルストレージベースのオープンソースデータベースシステムであり、高負荷の場合、より多くのノードを追加することでサーバのパフォーマンスを保証します.
●ビッグデータ時代において、ビッグデータ量の処理はデータベースを考慮する最も重要な原因の一つとなっている.MongoDBの主な目標は、できるだけデータベースのパフォーマンスを向上させることであり、MongoDBの設計を大きく決定します.MongoDBは、メモリ・リソースをキャッシュとして使用して最大限のパフォーマンスを選択し、クエリーのために最も高速なインデックスを自動的に選択します.MongoDBは、データベースをできるだけ簡素化し、クライアントにできるだけ多くの操作を渡すことで、MongoDBが優れたパフォーマンスを維持できる理由の一つです.
●MongoDBは非関係データベース(NoSQL)の中で最も機能が豊富で、最も関係データベースに似ている.リレーショナル・モデルを使用しないのは、より良い拡張性を得るためであり、MongoDBには「行」の概念はありません.その実行方法は主に2つの概念に基づいています.集合(collection)とドキュメント(document)です.
1.2特徴
●Mongoは高性能で、オープンソースで、モードのないドキュメント型データベースであり、多くのシーンで従来のリレーショナル型データベースまたはキー/値格納方式の代わりに使用することができる.
●1、集合向けの記憶:対象及びJSON形式のデータを記憶するのに適している.
●2、MongoDBはインストールが簡単で、ドキュメント向けの記憶機能を提供しており、操作が容易である.
●3、MongoDBはレプリケーション、高可用性、自動スライス機能を提供する.負荷が増加すると(より多くのストレージスペースとより強い処理能力が必要)、コンピュータネットワーク内の他のノードに分散することができます.これがいわゆるスライスです.
●4、MongoDBは豊富なクエリー式をサポートする.
●5、効率的な従来の記憶方式:バイナリデータ及び大型オブジェクト(例えば写真或いは画像)をサポートする.
1.3適用シーン
●MongoDBはWebアプリケーションに拡張性の高い高性能データストレージソリューションを提供することができる.MongoDBの主な適用分野は、Webサイトデータ、分散シーン、データキャッシュ、JSONドキュメントフォーマットストレージです.大きなデータ量、高い同時性、弱いトランザクションに適したインターネットアプリケーションは、数百万から10億レベルのデータ処理能力を提供し、Web 2をよく満たすことができるレベル拡張メカニズムを内蔵している.0およびモバイルインターネットアプリケーションのデータストレージの要件.
1.4 redisとmongodbの比較
●Redisは完全にメモリにデータを保存するデータベースであり、ディスクを使用するのは永続性の目的のためだけであり、Redisデータはすべてメモリに存在し、定期的にディスクに書き込まれ、メモリが足りない場合、指定されたLRUアルゴリズムを選択してデータを削除することができ、永続化はRDB方式またはaof方式を使用する.
●mongodbはドキュメント型の非関係型データベースであり、MongoDBはMySQLに似ており、フィールドインデックス、カーソル操作をサポートしている.その利点は、クエリー機能が比較的強く、JSONデータのクエリーが得意で、大量のデータを格納できるが、トランザクションはサポートされていないことである.
●mongodbのすべてのデータは実際にはハードディスクに格納され、操作するすべてのデータはmmapによってメモリのある領域にマッピングされる.●その後、mongodbはこの領域でデータの修正を行い、こまごましたハードディスクの操作を回避します.
●mmapの内容flushからハードディスクに至るのはオペレーティングシステムのことなので、mongodbがメモリでデータを修正すると、mmapデータflushがハードディスクに届く前にシステムがダウンし、データが失われます.
二、mongodbのインストール
1.公式yumソースインストールmongodbの構成
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim mongodb-org.repo
[mongodb]
name=mongodb
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
[root@localhost yum.repos.d]# yum list
[root@localhost yum.repos.d]# yum -y install mongodb-org
2.プロファイルリスニングアドレスの変更
[root@localhost ~]# vim /etc/mongod.conf
...
net:
port: 27017 #
bindIp: 0.0.0.0 # , 127.0.0.1, , 0.0.0.0,
3.サービスを開始する.service
[root@localhost ~]# systemctl start mongod.service
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mongo # mongo
...
> show dbs #
admin 0.000GB
config 0.000GB
local 0.000GB
三、マルチインスタンスの構成方法
1.構成ファイルをコピーして新しいインスタンスを作成する
[root@localhost ~]# cd /etc/
[root@localhost etc]# cp -p mongod.conf mongod2.conf
[root@localhost etc]# vim mongod2.conf
...
path: /data/mongodb/mongod2.log
dbPath: /data/mongodb/mongo
port: 27018
[root@localhost etc]# mkdir -p /data/mongodb
[root@localhost etc]# cd /data/mongodb/
[root@localhost mongodb]# touch mongod2.log
[root@localhost mongodb]# mkdir mongo
2.新規作成したインスタンスをロード
[root@localhost mongodb]# mongod -f /etc/mongod2.conf
about to fork child process, waiting until server is ready for connections.
forked process: 14751
child process started successfully, parent exiting
[root@localhost mongodb]# mongo --port 27018 # 27018
> db.version() #
3.6.20
四、基本操作
4.1削除・変更操作例
> use school 'mongodb , ( show dbs )'
switched to db school
> db.createCollection('info') ' school info'
{
"ok" : 1 }
> db.info.insert({
"id":1,"name":"zhangsan","score":78,"hobby":["game","sport","talk"]}) ' '
WriteResult({
"nInserted" : 1 })
> db.info.find()
{
"_id" : ObjectId("5f5dc4f3f03df9c767569daf"), "id" : 1, "name" : "zhangsan", "score" : 88, "hobby" : [ "game", "sport", "talk" ] }
> for(var i=2;i<=100;i++)db.info.insert({
"id":i,"name":"jack"+i}) ' '
WriteResult({
"nInserted" : 1 })
> db.info.find()
{
"_id" : ObjectId("5f56e212cd5781b1ba9d5426"), "id" : 1, "name" : "zhangsan", "score" : 78, "hobby" : [ "game", "sport" ] }
{
"_id" : ObjectId("5f56e319cd5781b1ba9d5427"), "id" : 2, "name" : "jack2" }
{
"_id" : ObjectId("5f56e319cd5781b1ba9d5428"), "id" : 3, "name" : "jack3" }
{
"_id" : ObjectId("5f56e319cd5781b1ba9d5429"), "id" : 4, "name" : "jack4" }
...
Type "it" for more
> db.info.findOne({
"id":3}) #
{
"_id" : ObjectId("5f56e319cd5781b1ba9d5428"), "id" : 3, "name" : "jack3" }
> a=db.info.findOne({
"id":2})
{
"_id" : ObjectId("5f56e319cd5781b1ba9d5427"), "id" : 2, "name" : "jack2" }
> typeof(a.id)
number
> typeof(a.name) ' '
string
> db.info.update({
"id":10},{
$set:{
"name":"tom"}}) ' id=10 '
WriteResult({
"nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> a=db.info.findOne({
"id":10})
{
"_id" : ObjectId("5f56e319cd5781b1ba9d542f"), "id" : 10, "name" : "tom" }
> db.createCollection('test')
{
"ok" : 1 }
> show collections
info
test
> db.test.drop() ' '
true
> show collections ' ; show tables'
info
> use myscool
switched to db myscool
> db.createCollection('test')
{
"ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
myscool 0.000GB
school 0.000GB
> db.dropDatabase() ' myschool, use myschool'
{
"dropped" : "myscool", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB
4.2同じインスタンスでのデータベースのコピー
> db.copyDatabase("school","share") # school , share
{
"ok" : 1 }
4.3プロセス管理
> db.currentOp()
...
"opid" : 880, #
> db.killOp(880)
五、エクスポート、インポート操作
:
[root@localhost mongodb]# mongoexport -d school -c info -o /opt/school.json
2020-09-08T10:10:38.155+0800 connected to: localhost
2020-09-08T10:10:38.156+0800 exported 100 records
-d:
-c:
.json
:
[root@localhost mongodb]# mongoimport -d school -c test --file /opt/school.json
2020-09-08T10:11:56.382+0800 connected to: localhost
2020-09-08T10:11:56.388+0800 imported 100 documents
:
[root@localhost mongodb]# mongoexport -d school -c info -q '{"id":{"$eq":10}}' -o /opt/test.json
:
-d:
-c:
六、データベースのバックアップとリカバリ
バックアップライブラリschool
[root@localhost mongodb]# mongodump -d school -o /backup/
2020-09-08T10:16:47.324+0800 writing school.info to
2020-09-08T10:16:47.324+0800 writing school.test to
2020-09-08T10:16:47.325+0800 done dumping school.test (100 documents)
2020-09-08T10:16:47.325+0800 done dumping school.info (100 documents)
[root@localhost mongodb]# cd /backup/
[root@localhost backup]# ls
school
[root@localhost backup]# cd school/
[root@localhost school]# ls
info.bson info.metadata.json test.bson test.metadata.json
ライブラリをabcライブラリに復元(ライブラリが存在しない場合は直接新規)
[root@localhost school]# mongorestore -d abc --dir /backup/school/
七、インスタンス間クローン集合操作
●27018ポートのインスタンスを作成した後、クローン集合操作を行う
●27018ポートのインスタンスクローン2701ポートのインスタンスschoolライブラリ内のinfoセット
[root@localhost etc]# mongo --port 27018
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db.runCommand({
"cloneCollection":"school.info","from":"14.0.0.10:27017"})
{
"ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB
> use school
switched to db school
> show tables #
info