MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Dasar-dasar Menyebarkan Kumpulan Replika MongoDB dan Pecahan Menggunakan Wayang

Sistem database berperforma terbaik saat terintegrasi dengan beberapa pendekatan yang terdefinisi dengan baik yang memfasilitasi operasi throughput baca dan tulis. MongoDB bekerja lebih keras dengan merangkul replikasi dan sharding dengan tujuan memungkinkan penskalaan horizontal dan vertikal sebagai lawan dari DBM relasional yang konsepnya sama hanya meningkatkan penskalaan vertikal.

 Sharding memastikan distribusi beban di antara anggota cluster database sehingga operasi baca dilakukan dengan sedikit latensi. Tanpa sharding, kapasitas server database tunggal dengan kumpulan data yang besar dan operasi throughput yang tinggi dapat ditantang secara teknis dan dapat mengakibatkan kegagalan server tersebut jika tindakan yang diperlukan tidak diperhitungkan. Misalnya, jika tingkat kueri sangat tinggi, kapasitas CPU server akan kewalahan.

Replikasi di sisi lain adalah konsep di mana server database yang berbeda menampung data yang sama. Ini memastikan ketersediaan data yang tinggi selain meningkatkan integritas data. Ambil contoh aplikasi media sosial yang berkinerja tinggi, jika sistem database penyajian utama gagal seperti pada saat listrik padam, kita harus memiliki sistem lain untuk melayani data yang sama. Sebuah set replika yang baik harus memiliki lebih dari 3 anggota, arbiter dan pemilihanTimeoutMillis yang optimal. Dalam replikasi, kita akan memiliki node master/primer di mana semua operasi tulis dibuat dan kemudian diterapkan ke Oplog. Dari Oplog, semua perubahan yang dibuat kemudian diterapkan ke anggota lain, yang dalam hal ini disebut sebagai node sekunder atau budak. Jika node utama tidak berkomunikasi setelah beberapa waktu:selectionTimeoutMillis, node lain diberi sinyal untuk melakukan pemilihan. ElectionTimeoutMillis harus disetel tidak terlalu tinggi atau terlalu rendah karena alasan bahwa sistem akan mati untuk waktu yang lama sehingga kehilangan banyak data atau seringnya pemilihan yang dapat mengakibatkan bahkan dengan  latensi jaringan sementara sehingga masing-masing data tidak konsisten. Seorang arbiter digunakan untuk menambahkan suara ke anggota yang menang untuk menjadi master jika ada undian tetapi tidak membawa data seperti anggota lainnya.

Mengapa Menggunakan Wayang untuk Menyebarkan Kumpulan Replika MongoDB

Lebih sering, sharding digunakan bersamaan dengan replikasi. Proses mengonfigurasi dan memelihara kumpulan replika tidak mudah karena:

  1. Kemungkinan besar kesalahan manusia
  2. Ketidakmampuan untuk melakukan tugas berulang secara otomatis
  3. Memakan waktu terutama jika melibatkan banyak anggota
  4. Kemungkinan ketidakpuasan kerja
  5. Kerumitan luar biasa yang mungkin muncul.

Untuk mengatasi kemunduran yang diuraikan, kami menggunakan sistem otomatis seperti Wayang yang memiliki banyak sumber daya untuk membantu kami bekerja dengan mudah.

Di blog kami sebelumnya, kami mempelajari proses menginstal dan mengkonfigurasi MongoDB dengan Puppet. Namun, penting untuk memahami sumber daya dasar Wayang karena kita akan menggunakannya dalam mengonfigurasi kumpulan replika dan pecahan kita. Jika Anda melewatkannya, ini adalah file manifes untuk proses menginstal dan menjalankan MongoDB Anda pada mesin yang Anda buat

​  package {'mongodb':

    ensure => 'installed',

  }

  service {'mongodb':

    ensure => 'running',

    enable => true

  }

Jadi kita bisa meletakkan konten di atas dalam file bernama runMongoDB.pp dan menjalankannya dengan perintah 

$ sudo apply runMongoDB.pp

Nyanyikan modul dan fungsi 'mongodb', kita dapat menyiapkan set replika dengan parameter yang sesuai untuk setiap  resource mongodb.

Koneksi MongoDB

Kita perlu membuat koneksi mongodb antara node dan server mongodb. Tujuan utamanya adalah untuk mencegah perubahan konfigurasi diterapkan jika server mongodb tidak dapat dijangkau tetapi berpotensi dapat digunakan untuk tujuan lain seperti pemantauan basis data. Kami menggunakan mongodb_conn_validator

mongodb_conn_validator{‘mongodb_validator’:

ensure => present,

     server: ‘127.0.0.1:27017’,

     timeout: 40,

     tcp_port:27017

    }

name:  dalam hal ini nama mongodb_validator mendefinisikan identitas sumber daya. Itu juga bisa dianggap sebagai string koneksi

server:ini bisa berupa string atau larik string yang berisi nama DNS/ alamat IP server tempat mongodb harus dijalankan.

timeout:ini adalah jumlah detik maksimum yang harus ditunggu oleh validator sebelum memutuskan bahwa puppetdb tidak berjalan.

tcp_port:  ini adalah penyedia sumber daya yang memvalidasi koneksi mongodb dengan mencoba koneksi https ke server mongodb. Penyiapan sertifikat SSL boneka dari lingkungan boneka lokal digunakan dalam otentikasi.

Membuat Basis Data

mongodb_database{‘databaseName’:

ensure => present,

     tries => 10

}

Fungsi ini membutuhkan 3 parameter yaitu:

name:  dalam hal ini name databaseName mendefinisikan nama database yang kita buat, yang juga akan dideklarasikan sebagai name => ‘databaseName’.

tries:ini menentukan jumlah maksimum dua detik mencoba menunggu startup MongoDB

Membuat Pengguna MongoDB

Modul mongodb_user memungkinkan seseorang membuat dan mengelola pengguna untuk database tertentu dalam modul boneka.

mongodb_user {userprod:

  username => ‘prodUser’,

  ensure => present,

  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),

  database => prodUser,

  roles => [‘readWrite’, ‘dbAdmin’],

  tries  => 10

}

Properti

nama pengguna:mendefinisikan nama pengguna.

password_hash:ini adalah hash kata sandi pengguna. Fungsi mongodb_password() tersedia di MongoDB 3.0 dan yang lebih baru digunakan untuk membuat hash.

roles:ini mendefinisikan peran yang diizinkan untuk dijalankan oleh pengguna pada database target.

sandi:ini adalah teks sandi pengguna biasa.

database:mendefinisikan database target pengguna.

Membuat Kumpulan Replika

Kami menggunakan modul mongodb_replset untuk membuat set replika.

Mongodb_replset{'replicaset1':

   arbiter: 'host0:27017',

   ensure  => present,

   members => ['host0:27017','host1:27017', 'host2:27017', 'host3:27017'] 

   initialize_host: host1:27017

}

name:mendefinisikan nama set replika.

members:larik anggota yang akan ditampung oleh kumpulan replika.

initialize_host:host yang akan digunakan dalam inisialisasi kumpulan replika

arbiter:mendefinisikan anggota kumpulan replika yang akan digunakan sebagai arbiter.

Membuat Shard MongoDB

mongodb_shard{'shard1':

   ensure  => present,

   members => ['shard1/host1:27017', 'shard1/host2:27017', 'shard1/host3:27017'] 

   keys: 'price'

}

name:mendefinisikan nama pecahan.

members:ini adalah larik anggota yang akan disimpan oleh shard.

keys:tentukan kunci yang akan digunakan dalam sharding atau larik kunci yang dapat digunakan untuk membuat kunci shard gabungan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb mencocokkan karakter beraksen sebagai karakter dasar

  2. Peta Hadoop/Kurangi vs Peta bawaan/Kurangi

  3. Cara mendapatkan kembali dokumen Asli setelah agregasi

  4. MongoDB menarik elemen array dari koleksi

  5. perbedaan antara agregat ($cocok) dan temukan, di MongoDB?