Indexing dan Optimasi Performa MongoDB


🟒 1. Pengertian Indexing pada MongoDB

πŸ“Œ Pengertian Indexing

Indexing adalah teknik untuk mempercepat proses pencarian data dalam database dengan membuat struktur indeks tertentu pada field yang sering digunakan dalam query.


πŸ“Œ Fungsi Indexing

  • Mempercepat query
  • Mengurangi scanning data
  • Meningkatkan performa database
  • Mengoptimalkan pencarian
  • Mendukung sorting dan aggregation

πŸ–ΌοΈ Ilustrasi Indexing Database

https://images.openai.com/static-rsc-4/23e7ZD5yTghkFUOfECFnccVZ2QqRpOqU3vpWUfelPJkUAe7bDd8txfak8LmD1zImCoNVTvFwfKLTnBnZl6vKfJ6F2cdKdD18FKzChJFy68EyMWdhWAd6Xh40EKj67UIx6GzdY3mVuh5U83be3OpvmpaKMBqpBFddrn1_3YipPxkV3sNWffplfUXO42PlKb1R?purpose=fullsize
https://images.openai.com/static-rsc-4/9Pa8DbBpCHPaC_e3TwZ-vGvOGu6XKdcibxZ-X06vj_h-RbOLDfy3drWcodFfjnFvT_Iolv2hvZHNw-rihEYeBX7uQplWXCXsnvFvvC-XM0530EE9DwLykNLFNyIPIoz_8MjPQPzbtLlG7y43-qsLMuvpZInj7_9ZPWX4E3uiCoQarGrJZibDT1cTHpqQefm4?purpose=fullsize
https://images.openai.com/static-rsc-4/ScpYA2gkwPHI0s0pm4o5ujyzA2xDG2mmdVE1aHqkmlXI8r-PxST3W1Y9aHNHtsA-5HZSJyOfUa4IzZ9AJGkFlAMX_LamH7kG9UqBH8XXonzhO7N-dEi4OYRnwY-nUcXjsYYVw_xHGsR46n8XQTOa9gCkcRFIiv2fjnL1ruMJlrcb_8SdueMz6wtVtYbxAUFU?purpose=fullsize

7


πŸ” Narasi

Tanpa indexing, MongoDB harus membaca seluruh document dalam collection (collection scan). Hal ini menyebabkan query menjadi lambat ketika jumlah data sangat besar.


🟑 2. Konsep Dasar Cara Kerja Index

πŸ“Œ Cara Kerja Index

Index bekerja seperti:

  • Daftar isi buku
  • Indeks pada kamus
  • Mesin pencarian

MongoDB membuat struktur khusus untuk mempercepat akses data.


πŸ“Œ Tanpa Index

Data β†’ Scan seluruh collection β†’ Temukan data

πŸ“Œ Dengan Index

Index β†’ Langsung menuju data

πŸ–ΌοΈ Diagram Cara Kerja Index

https://images.openai.com/static-rsc-4/9Pa8DbBpCHPaC_e3TwZ-vGvOGu6XKdcibxZ-X06vj_h-RbOLDfy3drWcodFfjnFvT_Iolv2hvZHNw-rihEYeBX7uQplWXCXsnvFvvC-XM0530EE9DwLykNLFNyIPIoz_8MjPQPzbtLlG7y43-qsLMuvpZInj7_9ZPWX4E3uiCoQarGrJZibDT1cTHpqQefm4?purpose=fullsize
https://images.openai.com/static-rsc-4/tqzL0SmZMXrx14VwX61zhiIjVIVSvw7CRUUMCA4l3sFWFudrJv5P6fX1LTEwR-8spHosV3z1F0AsJ2rKR7VF5jB2f0DF9S3bwk6sE4Ii3PQ7RjZF3BodcHxo7SyddKfjcXh6xzRd6OsQjxKBcwZvY0Ylobg4uBJKlldqghTS9bchnEQhW1EiUEjzC8IiMlFw?purpose=fullsize
https://images.openai.com/static-rsc-4/GkkBGc3uTloOjqko9zNNQMsV3X-XqO8XQeOl6jNDhzsE5meMOXkr5a76buU6XXuaUh3gcloskiaqK1PWYDhRcXC-7anVmB0J2key0S_EabOJ3EzDRW_msl9RDH7Lp_5rUQJ1aLBdU647uVVA5riHFqkEnjWD4Ep8D833s1QgFrKubOgCfVuoAJ-3KGqej3yH?purpose=fullsize

7


πŸ” Narasi

Index mempercepat proses pencarian karena database tidak perlu membaca seluruh isi collection.


🟑 3. Jenis-Jenis Index MongoDB

πŸ“Œ Jenis Index Utama

Jenis IndexFungsi
Single Field IndexIndex satu field
Compound IndexGabungan beberapa field
Multikey IndexUntuk array
Text IndexPencarian teks
Geospatial IndexData lokasi
Hashed IndexSharding

πŸ–ΌοΈ Infografis Jenis Index MongoDB

https://images.openai.com/static-rsc-4/k8CH3dixi0dbKyJlsQl5zPR-4tXnmgkAIO-sMcxNHXthquBlkoTI_VeUWcT6XjydqzF5GRVqXg5dIANG-a3jiSZv2D11Ngz0czvuH5JyCS8bfVvpQgjJsaPWF7uVfU3e5wwxKSQ7ZnYlTwJe4Xm5zutEJYaGt1iG0_B5L5yUSuqZHTrZokYEMENeRM0KvqKA?purpose=fullsize
https://images.openai.com/static-rsc-4/bXXSNLd1bU5eJfX3wwg8idyM4UKY24ADblzUf5mPx9F73Z9FIcRigBTS8FdtW_yfu4F14Cnvzfp2ZGmU1QZ9YGaq-XC3CCc-71dXx9wtRsG_MjAs1zi6C5-Ia-Iq348nlHYEFsTP_gmbO1s2eDRsp5piMxEwF1oHQKG7xgWY9IPfivQjIDbzjHAAapGtTZgo?purpose=fullsize
https://images.openai.com/static-rsc-4/mLxkSMb-ccfQrZSmm_6c-myQkM2IgwZV8qBJi60hMgG_tWlCshPQ-gF384Mt3_QTdlqeh6T0OdO0Aw-aprljOFoFsF04gjBlq5zbdRiZAtCPhtISuvl-c0dIkd-b75aZ25w2GExrmvmCWjjHGVim7WSf_wZjwk-QS7TM93YvCrCvnf0Mv_oEUp7mJz2vLbw6?purpose=fullsize

6


πŸ” Narasi

Setiap jenis index memiliki fungsi berbeda sesuai kebutuhan aplikasi dan struktur data.


🟑 4. Single Field Index

πŸ“Œ Pengertian

Index dibuat pada satu field tertentu.


πŸŽ“ Contoh Membuat Index

db.mahasiswa.createIndex({
nama: 1
})

πŸ“Œ Arti Nilai Index

NilaiKeterangan
1Ascending
-1Descending

πŸ“Œ Menampilkan Index

db.mahasiswa.getIndexes()

πŸ–ΌοΈ Diagram Single Field Index

https://images.openai.com/static-rsc-4/GkkBGc3uTloOjqko9zNNQMsV3X-XqO8XQeOl6jNDhzsE5meMOXkr5a76buU6XXuaUh3gcloskiaqK1PWYDhRcXC-7anVmB0J2key0S_EabOJ3EzDRW_msl9RDH7Lp_5rUQJ1aLBdU647uVVA5riHFqkEnjWD4Ep8D833s1QgFrKubOgCfVuoAJ-3KGqej3yH?purpose=fullsize
https://images.openai.com/static-rsc-4/jYSqve6IRw-w3Fptlzm_Qt-oDTbSTYE_j1ww6ceHNDextVQ2efvW8_bmkqj9CngfBNx7QhQDgzOmAtprfjJqngJVY5F7G2WRV3j-dB7_LLY-0kw0x6bAAHkZa3jRK6mxO1U8Uwt2Ef00jBlQE5552KaqkaDJ4j680Z8zGwoqjhb1m8FbWn8ZxAlBHu_ZJNKX?purpose=fullsize
https://images.openai.com/static-rsc-4/I2u7r1auh9M4pS44MYEraD19mkblzN2TSM-uPkR3w1MBZIcks6YNHc3CHj_Mt74CsoE_RBwFZ-YxZ4mGh12CDwk2RKpZ7zBTq_wKR0VdvQ0aweOjrmuWZv_6vw37It16Q6D2fl_DM97ord9lKlqyDTRQxazqm_QuCmYRyaRyxyJeu2F6ifOScV4elsu5d9LA?purpose=fullsize

7


πŸ” Narasi

Single field index merupakan jenis index paling sederhana dan paling sering digunakan.


🟑 5. Compound Index

πŸ“Œ Pengertian

Compound index dibuat menggunakan lebih dari satu field.


πŸŽ“ Contoh Compound Index

db.mahasiswa.createIndex({
jurusan: 1,
semester: -1
})

πŸ“Œ Fungsi Compound Index

  • Query multi-field
  • Sorting lebih cepat
  • Filtering kompleks

πŸ–ΌοΈ Diagram Compound Index

https://images.openai.com/static-rsc-4/bXXSNLd1bU5eJfX3wwg8idyM4UKY24ADblzUf5mPx9F73Z9FIcRigBTS8FdtW_yfu4F14Cnvzfp2ZGmU1QZ9YGaq-XC3CCc-71dXx9wtRsG_MjAs1zi6C5-Ia-Iq348nlHYEFsTP_gmbO1s2eDRsp5piMxEwF1oHQKG7xgWY9IPfivQjIDbzjHAAapGtTZgo?purpose=fullsize
https://images.openai.com/static-rsc-4/Oa8di_P_INLTt4gk5RyQHVin2u1pyndLUzG8YkacAqZWGga64MQYkmIaYYu2oIE-S9HgODd4PUlaNPvAQ11G51JZnNz65ZnD_c2BFm08wAzdHJlbiGp22kWsjhnBmAj8QWX5-S7aejW0ebieBYj6o_P7FOS0Ftin0yKR5_kP-xjd7WI7Q-8WQU7aqARaJpZi?purpose=fullsize
https://images.openai.com/static-rsc-4/fIHRKPDfWC6PWnUXqx6LslzEU8zCQf3pnkWMAW9ov2KtxKKE9vTkXXfMl_vNSDSPGd_FLuuHlYyruFYonlHl9jsQecPwmwjH7CIGpnhZXRW6qyM4oSqpGeRKFWYT0z2s2k51SlKn_Lbf7HofAyGcpPwgUik9YKomA1Ie0yPIQLCimily0eGS_ECqo6TfvFvr?purpose=fullsize

8


πŸ” Narasi

Compound index sangat efektif untuk aplikasi dengan query kompleks.


🟑 6. Multikey Index

πŸ“Œ Pengertian

Multikey index digunakan untuk field berbentuk array.


πŸŽ“ Contoh Data Array

{
"nama": "Andi",
"hobi": ["Coding", "Gaming"]
}

πŸŽ“ Membuat Multikey Index

db.mahasiswa.createIndex({
hobi: 1
})

πŸ–ΌοΈ Diagram Multikey Index

https://images.openai.com/static-rsc-4/5BfIdAPBVt-6miX3MTWfMpwijmCArnlMxgltdVA3FJ-STk8h0Zu91CqJopMRPlQdF6GZ5FL-AnBMUdCam6F_CGprIvdIN9YQBFliG3BCxsj33wibUvmTPoNmgXnQzB1czPXqGrg58ndeMvATzfWnXu8gRFk1270Ne-er0jqMJk3P_LLcPNVcS9hr8XoFRBw7?purpose=fullsize
https://images.openai.com/static-rsc-4/bbBhP-hYbfaOMVdBip88W1B30UIEduCRAE0H-BdZSqh3yoZ_xifyCzNBkvsyMdxxX0SYVz59kl2M-gWKu61jbkDZ-N66OWsgGS0H2nXr31YrvvhO39OBSJe792jdQ30QUDseeBkDBUBfc_naPMtpNexQz7ajCXPWeGFrAReogfvP2cYMhU7aNLyoIWq6pF5H?purpose=fullsize
https://images.openai.com/static-rsc-4/mrxBGmwo-NDmCvtKU7Blt7WAjQOd8Kd_X__Y0QAbDx_Hq55o3n25k5lR0WPXjX0KL7EW9EHcETRljvZqfXHcA9-LaPFKjWuS2ZGOzvQ6l_CRshNIuK8l0qTrnCkW7jdaNHRA2oXec6CmVCjCcEvX0XfikccqYlc3oQSuzBSq_a-pGTBNppOcVEKLpzWTJYqU?purpose=fullsize

7


πŸ” Narasi

Multikey index sangat penting pada aplikasi modern yang menggunakan data array.


🟑 7. Text Index MongoDB

πŸ“Œ Pengertian

Text index digunakan untuk pencarian teks seperti search engine.


πŸŽ“ Membuat Text Index

db.artikel.createIndex({
judul: "text"
})

πŸŽ“ Query Text Search

db.artikel.find({
$text: {
$search: "MongoDB"
}
})

πŸ–ΌοΈ Diagram Text Index

https://images.openai.com/static-rsc-4/5BfIdAPBVt-6miX3MTWfMpwijmCArnlMxgltdVA3FJ-STk8h0Zu91CqJopMRPlQdF6GZ5FL-AnBMUdCam6F_CGprIvdIN9YQBFliG3BCxsj33wibUvmTPoNmgXnQzB1czPXqGrg58ndeMvATzfWnXu8gRFk1270Ne-er0jqMJk3P_LLcPNVcS9hr8XoFRBw7?purpose=fullsize
https://images.openai.com/static-rsc-4/LFksVG-AImdgcPTFbX6Nr__EIqFfCZEwBmBuBNI3aeMcG_HBKju-Vi5XT6hMAmHP3g9e7k6hwvbucHIgAvZhXOiXEZQCyF1jU-BKH-UjDn2dXaGviXvI-9VDn99GzOPfcxnm215FyQ54AWRrQTTVNOmUQi2kC_sht_tUGLuXOp_YcRhl_vcM6CqjGz_azlAX?purpose=fullsize
https://images.openai.com/static-rsc-4/7ANDvOjGlDBxvR86Al8wR5NYDodZjkOz5eOhHf1Tpw3zc2EoyC81zWpU9OylKEqLrLE2jX_35uceAdC6_KzK0h-PHqwBfbIe9yU9lqHTm_rM5COupAQISxfUelXFzaPSr2Bz8Nx7NxkVIqQ0IjSuaP5NK7y243ASNCVQBCjlYWbQ1gFWP0ryovzpNM9xrlmF?purpose=fullsize

8


πŸ” Narasi

Text index mendukung fitur pencarian cepat pada aplikasi berita, blog, dan e-commerce.


🟑 8. Geospatial Index

πŸ“Œ Pengertian

Geospatial index digunakan untuk data lokasi dan koordinat geografis.


πŸ“Œ Contoh Penggunaan

  • Google Maps
  • Tracking kendaraan
  • Aplikasi transportasi online

πŸŽ“ Contoh Data Lokasi

{
"lokasi": {
"type": "Point",
"coordinates": [106.8, -6.2]
}
}

πŸ–ΌοΈ Diagram Geospatial Index

https://images.openai.com/static-rsc-4/5BfIdAPBVt-6miX3MTWfMpwijmCArnlMxgltdVA3FJ-STk8h0Zu91CqJopMRPlQdF6GZ5FL-AnBMUdCam6F_CGprIvdIN9YQBFliG3BCxsj33wibUvmTPoNmgXnQzB1czPXqGrg58ndeMvATzfWnXu8gRFk1270Ne-er0jqMJk3P_LLcPNVcS9hr8XoFRBw7?purpose=fullsize
https://images.openai.com/static-rsc-4/B_oDLgZMIHKSPt4uqoIFYJx7JSs6pvjVd4PaSGDOHMBNJahZukSjW0lbIwHoAO2kNE100MNPApTcjRNmyFaxtbnGdEkOoziIrXUxQHJbzguZoscTKPt2SbacDUS3QB59RKjDNx82nvzjWofjzO8EHB03tPYZVX78e3QDO1qrB37pkDcy6zO9zGO3_sPzZ57W?purpose=fullsize
https://images.openai.com/static-rsc-4/RecFmPt7x0u0tRmttmuBvowz-9U2x2vGREZQP4NPcYKOQ6socH6rgmojnyK3tQqy-yLvsNjb5NVt13vbAavVp26SJdAWY8UNLRm5bWyUtCUYtY8QH8qctirWdoml1gb8dgmHkRX3830pwkHXywFc0Kwjw9lksb5xVx29BFgbwhmniiT9f8HgSt8CvVQ1KTeN?purpose=fullsize

7


πŸ” Narasi

Geospatial index memungkinkan pencarian lokasi secara cepat dan akurat.


🟑 9. Query Performance MongoDB

πŸ“Œ Pengertian Query Performance

Query performance adalah kecepatan database dalam memproses query.


πŸ“Œ Faktor yang Mempengaruhi

  • Jumlah data
  • Jenis query
  • Penggunaan index
  • Hardware server
  • Struktur data

πŸ“Œ Collection Scan vs Index Scan

MetodePerforma
Collection ScanLambat
Index ScanCepat

πŸ–ΌοΈ Diagram Query Performance

https://images.openai.com/static-rsc-4/wasEMK1v0o4Q-Oy2Nl4ZDBEuAuBGk0XOY8Dr5P2s9BMPcurG6wW1dvpCQ-RUvevOjR_7aqudkWqNVV7hAEJIL5APp23Md4rxs73F7XsMln090XNCBKlgMXd4FC5AR9WqbUOo4u7zBXFOFzOSODyOLtulZb6Gd4ccEt55N981fkpaMBMGJalY0O5wZ87t9i06?purpose=fullsize
https://images.openai.com/static-rsc-4/bXXSNLd1bU5eJfX3wwg8idyM4UKY24ADblzUf5mPx9F73Z9FIcRigBTS8FdtW_yfu4F14Cnvzfp2ZGmU1QZ9YGaq-XC3CCc-71dXx9wtRsG_MjAs1zi6C5-Ia-Iq348nlHYEFsTP_gmbO1s2eDRsp5piMxEwF1oHQKG7xgWY9IPfivQjIDbzjHAAapGtTZgo?purpose=fullsize
https://images.openai.com/static-rsc-4/ZvkTrWHToP7xhapQ2h-pcfucpO7GZOaz9pjrNAr979vJOe5KYmILRoiUp2HT-6bsJb50-LtgHuK1bHGvF5lbHO7JVxh6eyfeJ33jCPVE-EHACcsP2nruCo4pIYLB2zzrLMRc_shdKoALKUppmj_MWTO5rlUxXO2y4P5ZOSGcmZgFtWQVaC9nj4E4KBQhrBiN?purpose=fullsize

11


πŸ” Narasi

Tanpa optimasi yang baik, performa database dapat menurun drastis ketika data semakin besar.


🟑 10. Explain Plan MongoDB

πŸ“Œ Pengertian explain()

Explain digunakan untuk melihat cara MongoDB menjalankan query.


πŸŽ“ Contoh explain()

db.mahasiswa.find({
nama: "Andi"
}).explain("executionStats")

πŸ“Œ Informasi Explain

  • Total documents scanned
  • Execution time
  • Index digunakan
  • Query planner

πŸ–ΌοΈ Diagram Explain Query

https://images.openai.com/static-rsc-4/cIVPCdibllmmR4EmjBgXzA2GnJ1WHVwzdXRy0p9LzzYLkN_bn8dunqnLwsUStqu1k3Fa2TozGhZjQDUA8hsXgcslhpfYuLupoxhBrA75XLwrjTjP2fAvajYXhqMwrnqvZe6Vp5UXHaI-GwBpGfhbDcStthJERDk02UPuMLNcLgAe2xbiJGUw-DGMaMv9No9H?purpose=fullsize
https://images.openai.com/static-rsc-4/hmzuIZwHAV88WMVbHemGd68eYvNWZ7pVJ235aaoQNsb3SfoS1bqWJBLP95C2l4lMESgUw5csSsoy2P6w1zvfnhM2ViluzAy0Ua-u9_VwRCFAIiXTKEjLSw9Msw5IE7-bHD5ncvqc-G6CwtSf38-NV-jXBEfMmCJfQWfPBfx9JqI-QzXl-S8huWz9IND8Bt9O?purpose=fullsize
https://images.openai.com/static-rsc-4/SR1dbllym2mA7_KFl330KSZKVreZpe_NLXcolZjZ33-K9jZKSGJ63pwfWf_CaNJaTFNFFGOm_3fWxSdCeDF55mS94r2gxv9meKqnmrNNblIg5QlGdDQDzqOzQ92x8-Hr6Q27otkMVGUwArowhUEuyIFa8drM3btX5jO7YjGwOgIB9zrYxEsKPE0wSQU5QLrL?purpose=fullsize

6


πŸ” Narasi

Explain membantu administrator database melakukan analisis performa query.


🟑 11. Optimasi Query MongoDB

πŸ“Œ Teknik Optimasi

Menggunakan Index


Projection Field

db.mahasiswa.find(
{},
{ nama: 1 }
)

Menggunakan limit()

db.mahasiswa.find().limit(10)

Filter Data Secara Efisien

db.mahasiswa.find({
jurusan: "Informatika"
})

πŸ–ΌοΈ Diagram Optimasi Query

https://images.openai.com/static-rsc-4/8JkuYqx1VNe0qGywNEW6sa9tOHDKwIkWN-KfFs8jRfb4t-dwazd3Rvy6xYdfBK-MowJG61kNylC9F08EJbQ7CMheVCkfldT5WKGJ8Bj8I7Uq_7-wqME3j-gUZvczTE3B1wYK4aRuz-Kjt47NihBFZa9H7_veOwJZ_nqVOolNR7jcA9a7fmuGbdTEucTfq947?purpose=fullsize
https://images.openai.com/static-rsc-4/Oa8di_P_INLTt4gk5RyQHVin2u1pyndLUzG8YkacAqZWGga64MQYkmIaYYu2oIE-S9HgODd4PUlaNPvAQ11G51JZnNz65ZnD_c2BFm08wAzdHJlbiGp22kWsjhnBmAj8QWX5-S7aejW0ebieBYj6o_P7FOS0Ftin0yKR5_kP-xjd7WI7Q-8WQU7aqARaJpZi?purpose=fullsize
https://images.openai.com/static-rsc-4/tpHqKVgWRaQMUDOWv9Cq5vKyHFh7LrlIgiaoawFD8Dy62pWDugmwO4rJCY2KPTGI7PeNw2eBf2b679qU72-WHqwdLAUQJjdphkHr1F9y92JHnF3ShOcafF-5bhidvr_IY0PEidF59HN3PO3v9kOw72I9iF1383MU5Cr2ZrybAdaStcRHerW1Lf-cCV8NPuUe?purpose=fullsize

7


πŸ” Narasi

Optimasi query bertujuan mengurangi penggunaan resource server dan mempercepat akses data.


🟑 12. Aggregation Performance

πŸ“Œ Pengertian

Aggregation pipeline dapat mempengaruhi performa database.


πŸ“Œ Optimasi Aggregation

  • Gunakan $match di awal
  • Gunakan projection
  • Hindari data berlebihan
  • Gunakan indexing

πŸŽ“ Contoh Pipeline Efisien

db.mahasiswa.aggregate([
{
$match: {
jurusan: "Informatika"
}
},
{
$project: {
nama: 1
}
}
])

πŸ–ΌοΈ Diagram Aggregation Optimization

https://images.openai.com/static-rsc-4/bXXSNLd1bU5eJfX3wwg8idyM4UKY24ADblzUf5mPx9F73Z9FIcRigBTS8FdtW_yfu4F14Cnvzfp2ZGmU1QZ9YGaq-XC3CCc-71dXx9wtRsG_MjAs1zi6C5-Ia-Iq348nlHYEFsTP_gmbO1s2eDRsp5piMxEwF1oHQKG7xgWY9IPfivQjIDbzjHAAapGtTZgo?purpose=fullsize
https://images.openai.com/static-rsc-4/SzlSU9NMbCq4HsSrwG37cUZda0BSO0AwniwgqlyoZu_-nwdExcaXObHko4VhD9yqVL1LZDcqOlyB_cacriCUhPV0rMPL2H5t3HbB5dyd5JQQTs2z3R3RPbIF8qqDxYwsQGXaee1kl3Lq42zNmSpYdSTSUsdRmi1Xl5JpuFnhvQIjlkADyf1WoQB3_gebmqzJ?purpose=fullsize
https://images.openai.com/static-rsc-4/z1V-GILWcGiL4jXAUc7jztpzmU6luzP8slRps9IgUfaHmPUeCKbzdnKHYX1DHOHiMAwoNw787p1tzuyI5aMAqiDR7XpRoX4pu33iMJjfmyyzuWU1cXKxc65U4u6_tjntE8LhA1pDVTvfggBQPEsligCOuIVtd2uyhNKOh4-6OQtJfcCpWuZ2h1Y4vBsz1PU2?purpose=fullsize

8


πŸ” Narasi

Aggregation yang tidak optimal dapat menyebabkan penggunaan CPU dan RAM sangat tinggi.


🟑 13. Sharding MongoDB

πŸ“Œ Pengertian Sharding

Sharding adalah teknik membagi data ke beberapa server.


πŸ“Œ Tujuan Sharding

  • Skalabilitas horizontal
  • Distribusi beban
  • High availability

πŸ“Œ Komponen Sharding

  • Shard
  • Config Server
  • Router

πŸ–ΌοΈ Diagram MongoDB Sharding

https://images.openai.com/static-rsc-4/PQgLQgBfOuc8KIlCC9IIr_OBUFpvem0ASytkLR5RvD9MQITZefuCKZ9vJoztsj9Kd90_dhEwjK2HZ1ZNa4_ea_Ljzf8LECO8aSXwxliEWxyIAbVuh5J_hZ2hmetYCLxxlamboDIuD8lQwHEpjoSvJDdo1GnrxzOX9ts-h_tCVMJmgm64x3axAJ0QkX6JGrRu?purpose=fullsize
https://images.openai.com/static-rsc-4/dCRCanCbHQWhxV3dz9LMvw1if3SJAFkhgtIg65-2R73VgiYKg21d4NIwRvXEDhz0zk-vtg3HwQb1w9aewN7YEzGgZMrT1S9wDxAr6g789J8CVWHyjhCR4_3OtAc7n8tteAy9lOWo6WQfn_oLCkiO23E1BYXudo35OEvMtC3wFDhA_ociE5kNn-zk_DVd-Z80?purpose=fullsize
https://images.openai.com/static-rsc-4/yUM-UwckWwdVTZcVWluN0m4p_9c4s9vslooywVnEhrkio19hPfHPmcR6M6qeP6Wf_I8-DkZ4qyQcaLHMeCMrKIJ1jD9psbQi405C_JK52IV5od8jGTiBgrwC2WEAIvUA8XSb-SlY7iuey6RAtNl7HP18Z5EflExV6UTm6WUKMS_L_iAwlRn8CLCI0AL8OjQO?purpose=fullsize

7


πŸ” Narasi

Sharding digunakan pada sistem dengan jutaan hingga miliaran data.


🟑 14. Replication MongoDB

πŸ“Œ Pengertian Replication

Replication adalah proses penyalinan data ke beberapa server.


πŸ“Œ Tujuan

  • Backup data
  • Fault tolerance
  • High availability

πŸ“Œ Replica Set

  • Primary Node
  • Secondary Node

πŸ–ΌοΈ Diagram MongoDB Replication

https://images.openai.com/static-rsc-4/5cFYeyq6BtDw47H61AUoiXW-s0h0uqMuoeZN9fovHOP0wSDv3u0wMdyeOmzGShUKeCF2LOlsjkBeaC74A2TTlfLAxzrvcNWiv2JvGvOteLhI9Flc_GQazRIGSDOq79OkKtfSOxypHPyHgTQdQxbBFM-VsEM7nOaIQ0xtYvomUqsm8LojGoaShY3BJiQqipR2?purpose=fullsize
https://images.openai.com/static-rsc-4/xGRO4diPc9lax-QaA5PYsGmUlCXXTVHDnUOg1H7OKaRfFhEk410vBaEtdoHnSkbm2X_nr1Oz0R4bmLnYPgbAE2jimTSOgsw8Kn5K5b3lxDP7oHI57RVaJ4wEVzVyaaEdkqsSYC_v2V3W0myiyyeeQ1nwukRMZR3JbR7AuwePB8hF4Gbzl0-rB0IVHIkCJiFp?purpose=fullsize
https://images.openai.com/static-rsc-4/avw4_ttelCuU5cnyBMyg049Er6IRK-_fhx_D1jl7RBLYm_W5ICr_680v5-3HRotH7zWKxAokUgx49NCQmfirGKVlygQWgS2s6i1TMxE4LWGQFhoul5-8omYg3VnkTO4c_U906MNF1yNiliKTK1gR7yygnm9yFF3h_HT9MnyWB21JLvprO_pjPkrIOfQgZMl4?purpose=fullsize

7


πŸ” Narasi

Replication memastikan sistem tetap berjalan meskipun terjadi kerusakan server.


🟑 15. Monitoring Performa MongoDB

πŸ“Œ Tools Monitoring

  • MongoDB Compass
  • MongoDB Atlas
  • mongostat
  • mongotop

πŸŽ“ Contoh mongostat

mongostat

πŸ“Œ Informasi Monitoring

  • CPU usage
  • RAM usage
  • Query speed
  • Network traffic

πŸ–ΌοΈ Dashboard Monitoring MongoDB

https://images.openai.com/static-rsc-4/1-WPqgByqQbwMQVUnAqGok2uTx2iUa-tA0My3Ir2kjTG6vTXpE_apdk8MGU52wZUtSye2wO6IflBODciXk65spbL_7Qcd4f3u5CZGopH31-J00on4FYnUaT8s4sR7xX6xzb7WRmNZ5SEb7asstiQmHLwNs0EuPvbzf7zRKEIVYC-Dbk5ZMwEBx1vil6LQUip?purpose=fullsize
https://images.openai.com/static-rsc-4/hVd_GGIfVjqNCEOHfBdjmrhjy_P8uHJLC8MCL8zUYGX3oP3Ky9k7-l7kAS1IQxN_2Z_zNtpksOQY9ZZieat2bcRCrvpehoWpFK4WE1-rt3j_mRhM1YUQGylKoA-zIsYz0i-3v1FpO1kX2Xeq24i1ct4sdYmd74Sg3Yj3djJyshqxtF0sTRmpGAsEngDW1TEX?purpose=fullsize
https://images.openai.com/static-rsc-4/RadJJ0EgR4RyQLGMpXv_8-RlpnA9_vEJeuKKiuWln2Hh4og2U13Eo3siZ3AT3nSzOSzCeJvfMzOSlwTlcA0EpQ6mPZk65SNJx_Q9QPEPWSgaEDhu2F-dCOdV0Dnu3_unzjRB8tUdyyEEromTMqHSPxeQuyvQeCVUIQ5zf_6QbuHpP0fifugtQ1BcErkiuO_9?purpose=fullsize

8


πŸ” Narasi

Monitoring sangat penting untuk menjaga stabilitas dan performa database produksi.


🟑 16. Studi Kasus Optimasi Database

πŸ“Œ Kasus E-Commerce

Masalah:

  • Query produk lambat

Solusi:

  • Menambahkan index pada nama_produk
  • Menggunakan pagination

πŸ“Œ Kasus Media Sosial

Masalah:

  • Feed loading lama

Solusi:

  • Compound index
  • Sharding database

πŸ–ΌοΈ Studi Kasus Database Besar

https://images.openai.com/static-rsc-4/pedPUst0D2bCHz0nMZWOe2ruSC72C7N2cL4tP8CNC692yRmYLkR06dRQhrOqAW2wIZdk5z67gN0J6ooIUa10lX0N6xwQyhgbcwEFaEZRNrLjczu5SVrB0Q-8ZYLzVtYGxM3aRjb5Qhl-8wWs0gqF0G6E9c3ju04cryvP7oKInHbS2vKs99CE2wysP2n4_AsD?purpose=fullsize
https://images.openai.com/static-rsc-4/WIGONIrvGh4gyIiPzTRZyMv7bYeHg25gYmSVA2MCJHShCnuUzK-7JqqQP_Gw9UYVVzSuspAdMfJIdkE540OSffDxIJN-37l2eoFTNXdJR51Qiv4aNIIxe0VXJ3Wqm21GgiJUhzKL_QQJzpfGX-ReXSAMHyY1mWP6gItj-HY9-XrbBxtf_KEDr2dCJ92zVeuE?purpose=fullsize
https://images.openai.com/static-rsc-4/1cYA9GkhS0sBa-fCDbUkNUZEMxwzOIOa1WwkgKkxe-mMZkdr7Dw0N-dY6BZIv9JfEd19QeQoE7iFs93WMATn1sxEBvsKPkZhWCeMrJaYmfggFN48tYIQ7WSfDKay-wWJtN1c9HP7BNosyt5LKMucyihGFXisxR0xsSRRDa_HI5p3fO1q3S4HEgzuimREwnUQ?purpose=fullsize

7


πŸ” Narasi

Optimasi database menjadi kunci utama keberhasilan aplikasi modern berskala besar.


🟒 17. Kelebihan dan Kekurangan Index

πŸ“Œ Kelebihan

  • Query lebih cepat
  • Optimasi aggregation
  • Mendukung sorting

πŸ“Œ Kekurangan

  • Membutuhkan storage tambahan
  • Memperlambat insert/update
  • Maintenance lebih kompleks

πŸ–ΌοΈ Infografis Index Database

https://images.openai.com/static-rsc-4/mHOvIfynpCulDKFDxGtZ1HCGEbTQUPx81XfH-jq_gPAtynVI7qGLWK2ym3A7tf4UfNEehryk76BaEzbTLdV-11XzB5NHQTZYw0vi2ym_piuW4qBnC8i-iTR-RdqLZZkCmLGdIg2mltnlDOwTpOqFi-mEDCwarJS3aJIM-EMZ1h5VDRa79eRI1j1bjywWVYEO?purpose=fullsize
https://images.openai.com/static-rsc-4/NlvKV1uKHCh0Q-Jt4F_qLJTXjOz30RbepUHxjncT1CGo2N_V8bmZRKWy7TsXlkiY4MR0B-QuI6iI-Fl1RbtVB2sBFa3n5pYJcO3uP70xujmLrjhX8ERbetOjQ275rMcWwx_uaOUvUCTjBXkOVGeXtGZcRNk0oDug-Qkex35VhOn_MfAF2XnMVYsbD9fxDMQQ?purpose=fullsize
https://images.openai.com/static-rsc-4/GkkBGc3uTloOjqko9zNNQMsV3X-XqO8XQeOl6jNDhzsE5meMOXkr5a76buU6XXuaUh3gcloskiaqK1PWYDhRcXC-7anVmB0J2key0S_EabOJ3EzDRW_msl9RDH7Lp_5rUQJ1aLBdU647uVVA5riHFqkEnjWD4Ep8D833s1QgFrKubOgCfVuoAJ-3KGqej3yH?purpose=fullsize

9


πŸ” Narasi

Penggunaan index harus direncanakan dengan baik agar manfaat performa lebih besar dibanding overhead sistem.


🟒 18. Kesimpulan

πŸ“Œ Ringkasan Materi

  • Indexing mempercepat query database
  • MongoDB memiliki berbagai jenis index
  • Optimasi query meningkatkan performa sistem
  • Sharding dan replication mendukung big data
  • Monitoring penting pada database produksi

πŸ–ΌοΈ Diagram Ringkasan Optimasi MongoDB

https://images.openai.com/static-rsc-4/bXXSNLd1bU5eJfX3wwg8idyM4UKY24ADblzUf5mPx9F73Z9FIcRigBTS8FdtW_yfu4F14Cnvzfp2ZGmU1QZ9YGaq-XC3CCc-71dXx9wtRsG_MjAs1zi6C5-Ia-Iq348nlHYEFsTP_gmbO1s2eDRsp5piMxEwF1oHQKG7xgWY9IPfivQjIDbzjHAAapGtTZgo?purpose=fullsize
https://images.openai.com/static-rsc-4/iLYyQR7-hc0FaIBL6_OkklUem0nbsfEryhLQxghDU9ifn3JSbcv23YBJqNraJxxwyTPcvhGPYytwfZ0JJ-HxtojyEdssw5ftiWcTn032BuunZ_5Pt1rKO2RKQfa63gV43jutu66QCSPMaR5wW7JxD57n75eh8WbBwkcXJHqb5Vvkf_ovFq9zeR7NFf58ATBp?purpose=fullsize
https://images.openai.com/static-rsc-4/4QxCotf6g5ib1dfChEG3ezdNiyNNMa5paoFTb8ZJFSBtgDTa2NJdJ7wx5pvt6qL4YtqlCxhJHV8u950_cXIgAHof3tBCr5Mo-H8kHi7GKo94l-JHVDIMDNE_d_nDcr9bDaaDfMWhQFaTXiyqUiJiIgfoliMRBYG7LwdegiCt4FSrOZCJ4GnULza1E4ngNnDu?purpose=fullsize

8


🎯 Latihan & Diskusi

  1. Apa yang dimaksud indexing?
  2. Jelaskan fungsi createIndex()!
  3. Apa perbedaan collection scan dan index scan?
  4. Jelaskan fungsi compound index!
  5. Apa kegunaan explain()?
  6. Mengapa monitoring database penting?
  7. Apa tujuan sharding?
  8. Jelaskan kelebihan dan kekurangan indexing!