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

Pembuatan Indeks MongoDB – Mencegah Pengguna Memicu Pembuatan Baru

Indeks yang dibangun di kluster produksi MongoDB perlu ditangani dengan sangat hati-hati. Kami telah mendokumentasikan masalah secara mendetail di salah satu  entri blog kami sebelumnya – Bahaya Membangun Indeks di MongoDB.

Bergantung pada ukuran data Anda, build latar depan dan latar belakang dapat menurunkan cluster Anda. Jadi, bagaimana Anda mencegah pengguna Anda secara tidak sengaja memicu pembuatan indeks dari MongoDB CLI? Jawaban singkatnya adalah Anda tidak bisa. Namun, yang dapat Anda lakukan adalah menghapus hak istimewa "CreateIndex" dari sebagian besar pengguna Anda sehingga mereka tidak dapat secara tidak sengaja memicu pembuatan indeks dari CLI. Seharusnya ada sangat sedikit pengguna di sistem Anda yang memiliki akses untuk menulis data ke database. Di antara pengguna ini, lebih sedikit lagi yang memiliki izin untuk membuat indeks. Untuk panduan tentang cara menggunakan peran MongoDB, silakan merujuk ke dokumentasi – Kelola Pengguna dan Peran.

Opsi terbaik untuk menerapkan ini adalah membuat peran khusus Anda sendiri dan menghapus hak istimewa 'CreateIndex' untuk pengguna Anda. Namun, kami tidak ingin membuat daftar izin secara manual karena ini akan berbeda untuk setiap konteks dan mungkin versi MongoDB. Kami menyusun skrip kecil ini untuk menggunakan salah satu peran bawaan yang ada, dan menghapus hak istimewa 'CreateIndex' dari peran ini. Dalam contoh ini, kami menggunakan peran "readWrite" bawaan dan menghapus hak istimewa "CreateIndex' dari peran ini:

var privs = db.getRole('readWrite',{ showPrivileges: true });
privs.privileges.forEach(function (item, index) {
  var index = item.actions.indexOf("createIndex");
  if (index !== -1) item.actions.splice(index, 1);
});
db.createRole({role:"readWriteNoIndex",privileges:privs.privileges,roles:[]});
  1. Simpan konten cuplikan kode sebagai createRole.js.
  2. Jalankan skrip menggunakan sintaks di bawah ini:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Setelah peran dibuat, Anda dapat menggunakan peran ini untuk membuat pengguna selanjutnya.

Kiat lainnya untuk Anda

Cara Membuat Indeks Case-Insensitive di MongoDB

Indeks yang tidak peka huruf besar/kecil mendukung kueri yang melakukan perbandingan string tanpa memperhatikan huruf besar/kecil. Pengumpulan memberi Anda kemampuan untuk menentukan aturan khusus bahasa untuk perbandingan string. Pelajari lebih lanjut

Cara Menghentikan Runaway Index Build di MongoDB

Bangunan indeks di MongoDB dapat berdampak buruk pada ketersediaan klaster Anda. Jika Anda memicu pembangunan indeks latar depan pada koleksi besar, klaster Anda mungkin tidak responsif hingga pembangunan indeks selesai. Pelajari lebih lanjut

MongoDB Regex, Indeks &Performa

MongoDB mendukung ekspresi reguler menggunakan operator $regex. Namun kueri regex MongoDB ini memiliki kelemahan, semua kecuali satu jenis regex menggunakan indeks dengan buruk dan menghasilkan masalah kinerja. Pelajari lebih lanjut


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Buat Indeks Teks Multi-Bahasa di MongoDB

  2. Solusi MongoDB untuk dokumen di atas ukuran 16mb?

  3. Cara menghapus semua item dari koleksi MongoDB

  4. Apa itu Profil? dan Web dan Pekerja

  5. Menggunakan MongoDB sebagai Sumber Data di GoLang