MongoDB チュートリアルlogin
MongoDB チュートリアル
著者:php.cn  更新時間:2022-04-21 17:49:03

MongoDB シャーディング



シャーディング

MongoDB には別のタイプのクラスターがあります。これはシャーディング テクノロジであり、MongoDB のデータ量の大幅な増加のニーズを満たすことができます。

MongoDB が大量のデータを保存する場合、1 台のマシンではデータを保存したり、許容可能な読み取りおよび書き込みスループットを提供したりするのに十分ではない可能性があります。現時点では、データベース システムがより多くのデータを保存および処理できるように、データを複数のマシンに分割できます。


シャーディングを使用する理由

  • すべての書き込み操作をプライマリノードに複製します

  • レイテンシーに敏感なデータはプライマリノードでクエリされます

  • 単一のレプリカセットは12ノードに制限されています

  • 古代リクエスト量が膨大な場合、メモリが発生する可能性があります。

  • ローカルディスクが不足しています

  • 垂直拡張はコストがかかります


MongoDBのシャーディング

次の図は、MongoDBのシャードクラスター構造の分布を示しています:

上の図では3 つの主要なコンポーネントは次のとおりです:

  • シャード:

    は、実際の運用環境では、複数のマシンとレリカ セットが単一のシャード サーバーの役割を引き受けることができます。ホスト障害のポイント

  • Config Server:

    mongod インスタンス。チャンク情報を含む ClusterMetadata 全体が保存されます。

  • クエリルーター:

    フロントエンドルーティング、クライアントはここからアクセスし、クラスター全体を単一のデータベースのように見せ、フロントエンドアプリケーションを透過的に使用できます。


シャードインスタンス

シャード構造のポート分布は次のとおりです:

Shard Server 1:27020
Shard Server 2:27021
Shard Server 3:27022
Shard Server 4:27023
Config Server :27100
Route Process:40000

ステップ 1: シャードサーバーを開始します

[root@100 /]# mkdir -p /www/mongoDB/shard/s0
[root@100 /]# mkdir -p /www/mongoDB/shard/s1
[root@100 /]# mkdir -p /www/mongoDB/shard/s2
[root@100 /]# mkdir -p /www/mongoDB/shard/s3
[root@100 /]# mkdir -p /www/mongoDB/shard/log
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork
....
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork

ステップ 2: Config Server を開始します

[root@100 /]# mkdir -p /www/mongoDB/shard/config
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork

注:ここでは、-shardsvr パラメーターと configsvr パラメーターを追加せずに、通常の mongodb サービスを開始するのとまったく同じように開始できます。これら 2 つのパラメータの機能は起動ポートを変更することであるため、ポートを自分で指定するだけで済みます。

ステップ 3: ルートプロセスを開始します

/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500

mongos の起動パラメータでは、chunkSize 項目を使用してチャンクのサイズを指定します。単位は MB です。デフォルトのサイズは 200MB です。

ステップ 4: シャーディングを構成します

次に、MongoDB シェルを使用して mongos にログインし、シャード ノードを追加します

[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:40000/admin
mongos> db.runCommand({ addshard:"localhost:27020" })
{ "shardAdded" : "shard0000", "ok" : 1 }
......
mongos> db.runCommand({ addshard:"localhost:27029" })
{ "shardAdded" : "shard0009", "ok" : 1 }
mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库
{ "ok" : 1 }
mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
{ "collectionsharded" : "test.log", "ok" : 1 }

ステップ 5: 通常の mongo データベースに接続するのと同じように、データベースをインターフェイス 40000

に接続するだけで、プログラム コードを大きく変更する必要はありません。

PHP中国語ウェブサイト