Pada artikel ini, kita akan membahas indeks MongoDB, pengindeksan lanjutan, dan batasan pengindeksan di MongoDB. Selain itu, kita akan mempelajari properti MongoDB
Jadi, mari kita mulai dengan Indeks MongoDB
Indeks MongoDB. Jenis, Properti & Keterbatasan
Apa itu Indeks MongoDB?
Untuk semua jenis database, indeks sangat penting. Di MongoDB, Indeks membantu menyelesaikan kueri dengan lebih efisien. Indeks adalah struktur data khusus yang digunakan untuk menemukan record dalam tabel yang diberikan dengan sangat cepat tanpa harus menelusuri setiap record dalam tabel
MongoDB menggunakan indeks ini untuk membatasi jumlah dokumen yang harus dicari dalam koleksi. Struktur data yang digunakan oleh indeks adalah Binary Tree
a. Indeks Default
Dalam pengindeksan MongoDB, semua koleksi memiliki indeks default pada bidang _id. Jika kami tidak menentukan nilai apa pun untuk _id, MongoDB akan membuat bidang _id dengan nilai objek. Indeks ini mencegah klien membuat dua dokumen dengan bidang _id nilai yang sama
b. Buat Indeks
Di MongoDB, pengguna dapat membuat indeks menggunakan sintaks berikut
Db.collection_name.createIndex( <key and index type specification>, <options>)Metode ini membuat indeks hanya jika indeks dengan spesifikasi yang sama belum ada
Mari kita lihat contoh yang membuat indeks menaik kunci tunggal pada bidang nama
Kami melihat pesan bahwa "ok". 1. Itu berarti indeks telah berhasil dibuat
Indeks MongoDB. Buat Metode Indeks
Jenis Indeks di MongoDB
MongoDB mendukung jenis indeks berikut untuk menjalankan kueri
i. Indeks Kolom Tunggal
MongoDB mendukung indeks yang ditentukan pengguna seperti indeks bidang tunggal. Indeks bidang tunggal digunakan untuk membuat indeks pada bidang tunggal dokumen. Dengan indeks bidang tunggal, MongoDB dapat melintasi dalam urutan naik dan turun. Itu sebabnya kunci indeks tidak menjadi masalah dalam kasus ini
ii. Indeks Senyawa
MongoDB juga mendukung indeks yang ditentukan pengguna di banyak bidang. Untuk MongoDB ini memiliki indeks majemuk. Ada urutan bidang berurutan untuk indeks majemuk
Misalnya, jika indeks majemuk terdiri dari {“nama”. 1, "kota". 1}), maka indeks akan mengurutkan terlebih dahulu nama kemudian kota
> db.dataflair1.find().sort({“name”:1,”city”:1}) { “_id” : ObjectId(“Sadfeb8931cffc950c924471”), “name” : “amit”, “city” : “ujjain” } { “_id” : ObjectId(“Sadfeb6e31cffc950c92446f”), “name” : “ankitt”, “city” : “indore” } { “_id” : ObjectId(“Sadfeb7c31cffc950c924470”), “name” : “rohit”, “city” : “ujjain” } { “_id” : ObjectId(“Sadfeb9731cffc950c924472”), “name” : “sumit”, “city” : “devas” } >Indeks MongoDB- Indeks Gabungan
iii. Indeks Multikunci
MongoDB menggunakan indeks multikey untuk mengindeks nilai yang disimpan dalam array. Jika kita mengindeks bidang dengan nilai larik, MongoDB membuat entri indeks terpisah untuk setiap elemen larik. Indeks ini memungkinkan kueri untuk memilih dokumen dengan kriteria yang cocok
MongoDB secara otomatis menentukan apakah akan membuat indeks multikunci jika bidang yang diindeks berisi nilai larik. Kita tidak perlu menentukan tipe multikey secara eksplisit. Di bawah ini adalah contoh indeks multikey
> db.dataflair1.find().sort({“name”:1,”city”:1}) { “_id” : ObjectId(“Sadfeb6e31cffc950c92446f”), “name” : “ankitt”, “city” : “indore” } { “_id” : ObjectId(“Sadfeb7c31cffc950c924470”), “name” : “rohit”, “city” : “ujjain” } { “_id” : ObjectId(“Sadfeb8931cffc950c924471”), “name” : “amit”, “city” : “ujjain” } { “_id” : ObjectId(“Sadfeb9731cffc950c924472”), “name” : “sumit”, “city” : “devas” } >Indeks MongoDB – Indeks Multikunci
iv. Indeks Geospasial
Untuk kueri data geospasial, MongoDB mendukung dua jenis indeks – indeks 2d dan indeks bola 2d. indeks 2d gunakan geometri planar saat mengembalikan hasil dan indeks 2dsphere gunakan geometri bola .
v. Indeks Teks
Ini adalah jenis indeks lain yang didukung oleh MongoDB. Indeks teks mendukung pencarian konten string dalam koleksi. Jenis indeks ini tidak menyimpan kata berhenti khusus bahasa (mis. g. “itu”, “a”, “atau”). Indeks teks membatasi kata dalam koleksi agar hanya menyimpan kata dasar
Di bawah ini adalah contoh indeks teks
HIni adalah sintaks yang kita gunakan untuk Text Index
db.collection_name.createIndex({name:”text”})> db.dataflair.createIndex({name:”text”}) { “createdCollectionAutomatically” : false, “numIndexesBefore” : 1, “numIndexesAfter” : 2, “ok” : 1 }Indeks MongoDB- Indeks Teks
vi. Indeks Hash
MongoDB mendukung sharding berbasis hash dan menyediakan indeks hash. Indeks ini adalah hash dari nilai bidang
Properti Indeks MongoDB
a. Indeks Unik
Properti indeks ini menyebabkan MongoDB menolak nilai duplikat untuk bidang yang diindeks. Dengan kata lain, properti indeks yang unik membatasinya untuk memasukkan nilai duplikat dari bidang yang diindeks. Indeks unik dapat dipertukarkan secara fungsional dengan indeks MongoDB lainnya
Mari kita lihat contohnya
Kami membuat indeks menggunakan createIndex() untuk bidang nama dan menyetel unique menjadi true. Kemudian masukkan dokumen dengan bidang "nama" dan "kota"
> db.dataflair.createIndex({name:1},{unique:true}) { “createdCollectionAutomatically” : false, “numIndexesBefore” : 2, “numIndexesAfter” : 3, “ok” : 1 } > db.data-flair.insert({“name”:”ankit”,”city”:”Indore”}) WriteResult({ “nInserted” : 1 }) > db.data-flair.insert({“name”:”ankit”,”city”:”Indore”}) WriteResult({ “nInserted” : 0, “writerError” : { “code” : 11000, “Errmsg” : “E1100 duplicate key error collection: test.dataflair index: name_1 dup key: ( : \”ankit\” }” } }) >_Indeks MongoDB- Properti Unik
Kami melihat bahwa ketika kami mencoba memasukkan dokumen lagi dengan nilai bidang yang sama dengan properti unik, kesalahan ditampilkan
Jadi, kita tidak dapat menyisipkan nilai duplikats dalam bidang dengan properti unik.
b. Indeks Parsial
Properti ini hadir dalam MongoDB versi 3. 2. Indeks Parsial hanya mengindeks dokumen yang cocok dengan kriteria filter. Jika kita membuat indeks dengan beberapa ketentuan yang diterapkan maka itu adalah indeks parsial
Mari buat indeks di bidang kota hanya dengan kota Indore. Untuk ini, kita harus menggunakan partialFilterExpression
> db.dataflair.createIndex({city:1},{partialFilterExpression:{name:”ankit”}}) { “createdCollectionAutomatically” : false, “numIndexesBefore” : 3, “numIndexesAfter” : 4, “ok” : 1 } >Indeks MongoDB- Indeks Parsial
Pesan ditampilkan sebagai "ok". 1 berarti indeks parsial telah dibuat
c. Indeks Jarang
Properti jarang memastikan bahwa indeks hanya berisi entri untuk dokumen dengan bidang yang diindeks. Indeks akan melewati dokumen tanpa bidang yang diindeks
Kami dapat menggabungkan opsi ini dengan opsi indeks unik untuk menolak dokumen dengan nilai duplikat untuk suatu bidang. Dan dapat mengabaikan dokumen tanpa kunci yang diindeks secara bersamaan
Contoh
Indeks MongoDB- Indeks Jarang
d. Indeks TTL
Indeks TTL atau "total waktu untuk hidup" adalah indeks khusus di MongoDB. Indeks ini digunakan untuk menghapus dokumen secara otomatis dari koleksi setelah durasi waktu yang ditentukan. Opsi yang kami gunakan adalah expiredAfterSeconds untuk memberikan waktu kedaluwarsa
Properti ini ideal untuk jenis informasi tertentu seperti data yang dihasilkan mesin, log, dan informasi sesi yang hanya perlu ada untuk waktu terbatas dalam database
Mari buat Indeks TTL yang menghapus dokumen setelah 35 detik
Indeks MongoDB- Indeks TTL
Keterbatasan Pengindeksan MongoDB
Pengindeksan di MongoDB memiliki beberapa batasan yang dibahas di bawah ini
a. Batasan Jangkauan
- Koleksi tidak dapat diindeks lebih dari 64
- Nama indeks hanya dapat berisi 164 karakter
- Indeks majemuk dapat memiliki 31 bidang yang diindeks pada maks
b. Penggunaan RAM
Ukuran total indeks tidak boleh melebihi ukuran RAM karena indeks disimpan dalam RAM. Jika melebihi batas ini, akan menyebabkan penghapusan beberapa indeks dan menurunkan kinerja
c. Batasan Kueri
Faktor-faktor berikut tersedia untuk kueri saat mengindeks
- Kueri tidak boleh menggunakan ekspresi seperti $nin, $not, dll
- Kueri tidak boleh menggunakan operator aritmatika seperti $mod dll
- Permintaan tidak boleh menggunakan klausa $where
d. Batas Kunci yang Diindeks
MongoDB tidak akan membuat indeks jika nilai bidang indeks yang ada melebihi batas kunci indeks
Kesimpulan
Sekarang kita telah mempelajari Indexing di MongoDB. Kami juga telah melihat properti Pengindeksan dan batasan Pengindeksan di MongoDB. Kita juga akan melihat bagaimana replikasi dan sharding bekerja di MongoDB