Selama beberapa tahun sebagai programer, ane selalu bergelut dengan RDBMS seperti MySQL, PostgreSql, Oracle, Sql Server. Tapi 1 tahun kebelakang ane kerja ditempat yang implement MySQL dan MongoDB.
Karena MongoDB merupakan teknologi baru buat ane, disini ane pengin berbagi tentang materi-materi yang dirasa cukup berguna untuk proses belajar MongoDB.
Spoiler for Index MongoDb:
Materi pertama yang pengin ane bahas yaitu mengenai Indexes didalam MongoDb. Karena ditempat ane kerja sekarang, optimalisasi Query & database dilakukan oleh programer.
Sama seperti dalam RDBMS, indexes merupakan sebuah fitur yang ada didalam database, yang bisa digunakan untuk mengefisiensikan proses pencarian.
Cara kerja Indexes adalah, database akan membuat sebuah virtual table, yang didalamnya berisi data yang sudah diurutkan (sorting), sesuai dengan index yang dibuat. Saat ada proses pencarian (searching), Database akan menggunakan data yang sudah diurutkan (sorting), sehingga database tidak perlu melakukan pencarian keseluruh table / collection
Quote:
Dalam MongoDB proses pencarian data pada semua data yang ada didalam collection disebut Collection Scan (CollScan)
Selain manfaat diatas, index juga memiliki sisi buruk / kekurangan, beberapa diantaranya :
1. Memakan Size data yang lebih besar, karena index akan membuat virtual table. Jadi semakin banyak indexes yang kita buat, semakin besar pula size hardisk yang harus kita siapkan
2. Akan memperlambat proses Insert & Update. Saat kita melakukan Insert / Update, kita tidak hanya menulis data kedalam table / collection utama, tapi juga akan menulisanya kedalam virtual table yang digunakan oleh indexes. Sehingga semakin banyak indexes proses Insert / Update juga akan semakin memakan waktu.
Dengan melihat beberapa kekurangan dari indexes di atas, tidak bijak jika kita membuat indexes sembarangan, karena bisa berdampak buruk bagi peforma dan juga cost.
Oleh karena itu dibawah ada beberapa Indexes strategi yang bisa kita gunakan untuk membuat index yang optimal.
Spoiler for Prefix Index:
Prefix Index
Prefix index bisa kita manfaatkan untuk mengoptimalkan Compound Indexes (Index yang terdiri dari beberapa column).
Jadi dengan Prefix index, index yang kita buat, bisa digunakan untuk beberapa query yang mengandung Subset awal dari si index.
Contohnya, kita punya index seperti dibawah
Quote: Compound Indexes
{ "item": 1, "location": 1, "stock": 1 }
Dengan Index diatas, kita bisa dunakan untuk mensupport beberapa query :
{ "item": "", "location": "", "stock": "" }
{ "item": "", "location": "" }
{ "item": "", "stock": "" }
{ "item": "" }
Query diatas bisa disupport menggunakan prefix index, karena querynya mengandung Subset pertama yaitu item. Tapi jika query yang kita buat, tidak mengandung subset pertama, maka tidak akan bisa menggunakan index di atas. Contoh query yang tidak support :
{ "location": "", "stock": "" }
{ "location": "" }
{ "stock": "" }
Jadi dengan memanfaatkan Prefix index, kita bisa mengurangi jumlah index yang perlu kita buat. Kita hanya perlu menentukan priotitas pengurutan kolom dalam pembuatan index. Baiknya colom yang sering digunakan untuk query, diletakan di subset awal.
Ane sudah membuat video youtube untuk materi Prefix Index, jika ingin melihatnya bisa diliat dibawah
Spoiler for The ESR Rule:
The ESR (Equality, Sort, Range) Rule
The ESR Rule adalah pedoman yang bisa kita gunakan dalam pembuatan Compound Indexes (Index yang terdiri dari beberapa column), agar index yang kita buat bisa mensupport query secara effisien.
Seperti namnya Equality, Sort, Range kita akan mengurutkan index yang kita buat seperti berikut
1. Subset awal --> Kita isi dengan column yang query nya menggunakan operator equals.
2. Subset berikutnya --> Kita isi dengan column yang kita gunakan untuk melakukan sorting
3. Subset terakhir, kita gunakan untuk column yang menggunakan operator range.
Jadi dengan adanya ESR Rule, kita bisa tau, bahwa urutan pembuatan index tidak bisa sembarangan. Jika pada bagian Prefix Index, kita mengurutkan dari column yang lebih sering digunakan sebagai filter, maka dalam ESR Rule kita harus mengurutkan subset sesuai dengan query yang akan kita gunakan.
Ane sudah membuat video youtube untuk materi ESR Rule , jika ingin melihatnya bisa diliat dibawah
dewimetal dan muhammadrezq877 memberi reputasi
2
549
Kutip
2
Balasan
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Mari bergabung, dapatkan informasi dan teman baru!
Computer Stuff
50.5KThread•9.1KAnggota
Terlama
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru