Tutorial MongoD...login
Tutorial MongoDB
pengarang:php.cn  masa kemas kini:2022-04-21 17:49:03

MongoDB Sharding



Sharding

Terdapat satu lagi jenis kelompok dalam Mongodb, iaitu teknologi sharding, yang boleh memenuhi keperluan pertumbuhan besar MongoDB dalam volum data.

Apabila MongoDB menyimpan sejumlah besar data, satu mesin mungkin tidak mencukupi untuk menyimpan data atau menyediakan pemprosesan baca dan tulis yang boleh diterima. Pada masa ini, kami boleh membahagikan data pada berbilang mesin supaya sistem pangkalan data boleh menyimpan dan memproses lebih banyak data.


Mengapa menggunakan sharding

  • Salin semua operasi tulis ke nod utama

  • Data sensitif tertunda Akan membuat pertanyaan pada nod induk

  • Set replika tunggal dihadkan kepada 12 nod

  • Apabila volum permintaan besar, memori akan menjadi tidak mencukupi.

  • Cakera setempat tidak mencukupi

  • Penskalaan menegak adalah mahal


MongoDB Sharding

Angka berikut menunjukkan taburan struktur gugusan beling dalam MongoDB:

Angka di atas terutamanya mempunyai tiga komponen utama seperti berikut:

  • Shard:

    digunakan untuk menyimpan blok data sebenar Dalam persekitaran pengeluaran sebenar, peranan pelayan shard boleh dimainkan oleh beberapa mesin dan set relik titik kegagalan hos

  • Pelayan Konfig:

    contoh mongod, yang menyimpan keseluruhan ClusterMetadata, termasuk maklumat bahagian.

  • Penghala Pertanyaan:

    Penghalaan hadapan, pelanggan mengakses daripada ini dan menjadikan keseluruhan kluster kelihatan seperti pangkalan data tunggal, dan aplikasi bahagian hadapan boleh Gunakan secara telus.


Instance sharded

Pengagihan port struktur sharding adalah seperti berikut:

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

Langkah 1: Mulakan Shard Server

[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

Langkah 2: Mulakan Pelayan Konfig

[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

Nota: Di sini kita boleh memulakannya sama seperti memulakan perkhidmatan mongodb biasa, tanpa menambah parameter --shardsvr dan configsvr. Kerana fungsi kedua-dua parameter ini adalah untuk menukar port permulaan, kita hanya boleh menentukan port itu sendiri.

Langkah 3: Mulakan Proses Laluan

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

Dalam parameter permulaan mongos, item chunkSize digunakan untuk menentukan saiz chunk Unit ialah MB Saiz lalai ialah 200MB.

Langkah 4: Konfigurasikan Sharding

Seterusnya, kami menggunakan MongoDB Shell untuk log masuk ke mongos dan menambah Shard nod

[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 }

Langkah 5: Tidak perlu mengubah banyak dalam kod program Hanya sambungkan pangkalan data ke antara muka 40000

sama seperti menyambung ke pangkalan data mongo biasa.

Laman web PHP Cina