Latest web development tutorials

MongoDBのスライス

スライス

内の別のクラスタのMongoDB、MongoDBのための需要を満たすための技術、大量のデータをスライスがあります。

MongoDBのに膨大な量のデータを格納するとき、マシンは、データを格納するには不十分であってもよい許容可能な読み取りを提供し、スループットを記述するのに不十分であり得ます。 データベースシステムは、より多くのデータを格納し、処理することができるように、この時点で、我々は、複数のマシンにデータを分割することができます。


なぜスライス

  • すべてのプライマリノードへの書き込み操作をコピーします
  • マスタークエリ内の機密データを遅らせます
  • 単一のコピー・セットは、12ノードに制限されています
  • リクエストの膨大な量は、ときに、メモリが表示されますとき。
  • ローカルディスク不足
  • 垂直方向の拡大は高価であり、

MongoDBのスライス

次の図は、MongoDBの分布のクラスター構造スライスの使用方法を示しています。

上の画像は、次の3つの主要なコンポーネントがあります。

  • シャード:

    実際のデータ・ブロック、実際の生産環境を格納するために使用され、数台のマシンを設定することができシャードサーバーの役割は、障害のホスト単一点を防止するためのコミットメントを設定しrelica

  • 構成サーバー:

    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:構成サーバーを起動します。

[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

注:ここでは、開始と通常のMongoDBサービスのよう-shardsvrとconfigsvrパラメータを追加する必要を開始することはできません。 これら2つのパラメータの役割は、開始ポートを変更することですので、私たちは、自己指定ポートすることができます。

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

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

mongos起動パラメータは、チャンクサイズこの1は、チャンクのサイズを指定するために使用され、単位はMBで、デフォルトのサイズは200メガバイトです。

ステップ4:設定シャーディング

次に、我々はmongosへのMongoDBのシェルのログを使用して、ノードシャードを追加

[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データベースに応じて、直接接続40,000を接続します