A、NoSQLの紹介
NoSQLのは、非リレーショナル・データベースを指します。
NoSQLのは時々 SQLの略ないだけと呼ばれる
リレーショナルデータベースとは異なる伝統的なデータベース管理システムの総称。
NoSQLのための最も一般的な説明は、「非リレーショナル」とキー・バリューストアの利点と文書データベースではなく、単純にRDBMSを強調しました。
NoSQLのは、非常に大規模なデータを格納します。
データ記憶装置のこれらのタイプは固定パターンを必要とせず、余分な操作が横方向に拡張することができません。
なぜNoSQLの?
今日、我々は簡単にアクセスし、クロールデータできるサードパーティのプラットフォームを介しすることができます。
ユーザーの個人情報を、ソーシャルネットワーク、場所、ユーザーがデータを生成し、ユーザの操作ログが指数関数的に増加しています。
私たちは、これらのアプリケーションに適していないこれらのユーザーデータ、SQLデータベースをタップしたい場合は、
NoSQLのデータベースの開発は、これらの大きなデータを扱うこともできるようです。
二、MongoDBのプロフィール
C ++言語によるMongoDBは、オープンソースデータベース分散ファイルシステムベースのストレージです。
ほとんどのリレーショナルデータベース、非常に緩いサポートするデータ構造、同様の形式bjson JSONのようなスケーラビリティ、高可用性とパフォーマンスデータベース設計された、非リレーショナルデータベース機能豊かな、のために設計されているので、することができ複雑なデータ型を保存します。
(英語の「作品Humongous」から、中国の意味は「大」)MongoDBは、あらゆる規模、業種、オープンソースデータベースの様々なアプリケーションの企業に適用されます。アジャイル開発のデータベースのための1つとして、MongoDBのデータパターンを柔軟アプリケーションの開発を更新することができます。
BSONと呼ばれる格納形態へのMongoDB(バイナリJSON)データが文書として保存されます。
同様の構造を持つ文書は、通常のコレクションに編成されています。ドキュメントと同様のライン、フィールドと同様の列:これらのコレクションは、リレーショナルデータベーステーブルに類似して見ることができます。
そして、データのmysqlモンゴの比較
mysqlの | モンゴ |
---|---|
倉庫 | 倉庫 |
テーブル | セット |
フィールド | キー:値 |
行 | ファイル |
三、MongoDBの機能
1.高性能:
MongoDBの永続高性能なデータを提供する
データベースシステム上のI / O操作低減するために、データモデル埋め込み特定支持
インデックスが速いクエリをサポートすることができ、文書を含んでいてもよいし、キー配列に埋め込むこと
2.豊富な言語クエリ:
MongoDBのデータ収集、テキスト検索と地理空間のインデックスだけでなく、支援読み取りおよび書き込み操作(CRUD)に豊富なクエリ言語をサポートしています
3.高可用性:
MongoDBのレプリケーションツールは、自動フェイルオーバーおよびデータの冗長性を提供し、レプリカセットになるために、
4.水平スケーラビリティ:
MongoDBは、その中核機能の一部として、データスライスは、コンピュータのグループに分割され、スケーラビリティを提供します。
5.サポート複数のストレージエンジン:
WiredTigerストレージエンジンと、MMAPv1インメモリストレージエンジンとストレージエンジン
四、モンゴのシナリオ
ゲームのシーン、保存された文書の形で直接埋め込まれたゲーム情報、ユーザ装置、および他のポイントを保存するためのMongoDBユーザーを使用して、簡単にアクセス、更新
注文情報を保存するためにMongoDBを使って物流シーンは、注文状況は、店舗に埋め込まれた配列のMongoDBの形で、クエリは、注文変更のすべてを読み出すことができるようになります、配達の途中で更新されます。
社会的なシーンは、友人の店の利用者情報とユーザ情報公表円にMongoDBのストアを使用して、付近の人々は、地理的な位置や他の機能指数によって、達成するために
物事のシーン、すべての情報へのアクセスおよびレポートデバイスのログ情報を格納し、多次元の情報を分析するためにMongoDBを使用してスマートデバイス
ライブ映像は、そのような贈り物に関する情報として、店舗の利用者情報にはMongoDBを使用
電気プロバイダのシーン、MongoDBを使用して
、このような起源、価格、素材、カラー規格外などの共通の属性に加えて、2件の商品が、モールのシャツとズボンを、それぞれが、そのようなTシャツなどの属性の異なるセットは、独自のプロパティの肩の幅でいる、バスト、袖など、ズボンの腰、足、口と長ズボンの独占的財産です
第五に、インストール構成のMongoDB
計画ディレクトリ(会社の状況に応じて)
例如:
#软件所在目录
/opt/mongodb
#单节点目录
/opt/mongo_27017/{conf,log,pid}
#数据目录
/data/mongo_27017
1.ダウンロードと解凍
yum install libcurl openssl -y
cd /opt/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz
tar zxvf mongodb-linux-x86_64-3.6.13.tgz
ln -s mongodb-linux-x86_64-3.6.13 mongodb
ファイルディレクトリとデータディレクトリを作成します。2.
mkdir /opt/mongo_27017/{conf,logs,pid} -p
mkdir /data/mongo_27017 -p
3.設定開始モンゴ
1.创建配置文件
cat > /opt/mongo_27017/conf/mongodb.conf << EOF
systemLog:
destination: file
logAppend: true
path: /opt/mongo_27017/logs/mongodb.log
storage:
journal:
enabled: true
dbPath: /data/mongo_27017
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
pidFilePath: /opt/mongo_27017/pid/mongod.pid
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.51
EOF
4.スタートモンゴ
/opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
有効にするかどうかを確認します。5.
ps -ef|grep mongo
netstat -lntup|grep 27017
6.設定ログモンゴ
#写入环境变量
echo 'PATH=$PATH:/opt/mongodb/bin' >> /etc/profile
source /etc/profile
7.ログのオンとオフ
#1.登录
mongo db01:27017
#2.关闭
方法1:
使用localhost登录
mongo localhost:27017
use admin
db.shutdownServer()
方法2:
mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
最適化のアラームに第六に、
次のように開始した後、いくつかのアラームがあるでしょう。
アラーム内容1:メモリ不足
2019-11-05T00:24:56.345+0800 I STORAGE [initandlisten] ** WARNING: The configured WiredTiger cache size is more than 80% of available RAM.
ソリューション:
1.追加のメモリ
キャッシュサイズの設定ファイルを調整します。2.
アラーム内容2:コンフィギュレーションアクセス制御パラメータ
2019-11-05T00:24:56.345+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/faq-memory-diagnostics-wt
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
ソリューション:
==============
3アラーム内容:通常のユーザーとして起動しません
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
ソリューション:
mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
useradd mongo
echo "123456"|passwd --stdin mongo
chown -R mongo:mongo /opt/
chown -R mongo:mongo /data/
su - mongo
mongod -f /opt/mongo_27017/conf/mongodb.conf
mongo db01:27017
4アラーム内容:
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
ソリューション:
1.临时解决
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2.官方脚本
[root@db01 ~]# cat /etc/init.d/disable-transparent-hugepages
#!/bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
re='^[0-1]+$'
if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
then
# RHEL 7
echo 0 > ${thp_path}/khugepaged/defrag
else
# RHEL 6
echo 'no' > ${thp_path}/khugepaged/defrag
fi
unset re
unset thp_path
;;
esac
=================================================================
[root@db01 ~]# chkconfig --add disable-transparent-hugepages
[root@db01 ~]# chkconfig --list|grep disable