Latest web development tutorials

slice MongoDB

iris

Ada klaster lain MongoDB dalam, mengiris teknologi, sejumlah besar data untuk memenuhi permintaan untuk MongoDB.

Ketika MongoDB untuk menyimpan data dalam jumlah besar, mesin mungkin tidak cukup untuk menyimpan data, mungkin tidak cukup untuk memberikan membaca diterima dan menulis throughput yang. Pada titik ini, kita dapat membagi data pada beberapa mesin, sehingga sistem database dapat menyimpan dan memproses lebih banyak data.


Mengapa slice

  • Salin semua menulis operasi untuk simpul utama
  • Menunda data sensitif dalam query utama
  • Salinan set terbatas untuk 12 node
  • Ketika volume besar permintaan akan muncul ketika memori.
  • kekurangan disk lokal
  • ekspansi vertikal mahal

slice MongoDB

Gambar berikut ini menunjukkan penggunaan slice struktur klaster dalam distribusi MongoDB:

gambar di atas memiliki tiga komponen utama berikut:

  • Shard:

    Digunakan untuk menyimpan blok data yang sebenarnya, lingkungan produksi aktual, peran beling server dapat mengatur beberapa mesin relica menetapkan komitmen untuk mencegah host titik tunggal kegagalan

  • Config Server:

    Misalnya mongod, menyimpan seluruh ClusterMetadata, termasuk informasi sepotong.

  • Permintaan Router:

    Bagian depan akhir rute, dimana akses klien, dan seluruh klaster terlihat seperti satu database front-end aplikasi transparan dapat menggunakan.


Contoh fragmentasi

Sepotong port kain didistribusikan sebagai berikut:

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

Langkah satu: Mulai 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 Dua: Mulai Server Config

[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

Catatan: Di sini kita bisa mulai seperti layanan mongodb biasa sebagai awal, tidak perlu menambahkan -shardsvr dan configsvr parameter. Karena peran dua parameter ini adalah untuk mengubah port mulai, jadi kita bisa pelabuhan sendiri ditunjuk.

Langkah Tiga: Mulai Route Proses

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

parameter startup Mongos, chunksize satu ini digunakan untuk menentukan ukuran potongan, unit adalah MB, ukuran standar adalah 200MB.

Langkah Empat: Konfigurasi Partisi horizontal

Selanjutnya, kita menggunakan MongoDB Shell Masuk ke Mongos, menambahkan node Shard

[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 Lima: Pada kode program tanpa banyak perubahan, hubungan langsung sesuai dengan database mongo biasa sebagai antarmuka akses database untuk menghubungkan 40.000