Apa itu MongoDB?
MongoDB adalah database NoSQL berorientasi dokumen yang digunakan untuk penyimpanan data volume tinggi. Alih-alih menggunakan tabel dan baris seperti pada database relasional tradisional, MongoDB menggunakan koleksi dan dokumen. Dokumen terdiri dari pasangan nilai kunci yang merupakan unit dasar data di MongoDB. Koleksi berisi sekumpulan dokumen dan fungsi yang setara dengan tabel database relasional. MongoDB adalah database yang muncul sekitar pertengahan 2000-an.
Dalam tutorial ini, Anda akan belajar-
- Fitur MongoDB
- Contoh MongoDB
- Komponen Utama Arsitektur MongoDB
- Mengapa Menggunakan MongoDB
- Pemodelan Data di MongoDB
- Perbedaan antara MongoDB & RDBMS
Fitur MongoDB
- Setiap database berisi koleksi yang pada gilirannya berisi dokumen. Setiap dokumen bisa berbeda dengan jumlah bidang yang berbeda-beda. Ukuran dan konten setiap dokumen bisa berbeda satu sama lain.
- Struktur dokumen lebih sejalan dengan bagaimana pengembang membangun kelas dan objek mereka dalam bahasa pemrograman masing-masing. Pengembang akan sering mengatakan bahwa kelas mereka bukanlah baris dan kolom tetapi memiliki struktur yang jelas dengan pasangan nilai kunci.
- Baris (atau dokumen yang disebut dalam MongoDB) tidak perlu memiliki skema yang ditentukan sebelumnya. Sebaliknya, bidang dapat dibuat dengan cepat.
- Model data yang tersedia dalam MongoDB memungkinkan Anda merepresentasikan hubungan hierarki, menyimpan array, dan struktur lain yang lebih kompleks dengan lebih mudah.
- Skalabilitas - Lingkungan MongoDB sangat skalabel. Perusahaan di seluruh dunia telah menetapkan cluster dengan beberapa di antaranya menjalankan 100+ node dengan sekitar jutaan dokumen dalam database
Contoh MongoDB
Contoh di bawah ini menunjukkan bagaimana dokumen dapat dimodelkan di MongoDB.
- Bidang _id ditambahkan oleh MongoDB untuk mengidentifikasi dokumen dalam koleksi secara unik.
- Yang bisa Anda catat adalah bahwa Data Pesanan (OrderID, Produk, dan Kuantitas) yang di RDBMS biasanya akan disimpan di tabel terpisah, sedangkan di MongoDB sebenarnya disimpan sebagai dokumen tertanam dalam koleksi itu sendiri. Ini adalah salah satu perbedaan utama dalam cara data dimodelkan di MongoDB.
Komponen Utama Arsitektur MongoDB
Di bawah ini adalah beberapa istilah umum yang digunakan dalam MongoDB
- _id - Ini adalah bidang yang wajib ada di setiap dokumen MongoDB. Bidang _id mewakili nilai unik dalam dokumen MongoDB. Bidang _id seperti kunci utama dokumen. Jika Anda membuat dokumen baru tanpa kolom _id, MongoDB secara otomatis akan membuat kolom tersebut. Jadi sebagai contoh, jika kita melihat contoh tabel pelanggan di atas, Mongo DB akan menambahkan pengenal unik 24 digit ke setiap dokumen yang ada di dalam koleksi.
_Indo | ID Pelanggan | Nama Pelanggan | Id pemesanan |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Koleksi - Ini adalah pengelompokan dokumen MongoDB. Koleksi setara dengan tabel yang dibuat di RDMS lain seperti Oracle atau MS SQL. Koleksi ada dalam satu database. Seperti yang terlihat dari koleksi pendahuluan tidak memberlakukan struktur apa pun.
- Kursor - Ini adalah penunjuk ke kumpulan hasil kueri. Klien dapat melakukan iterasi melalui kursor untuk mengambil hasil.
- Database - Ini adalah wadah untuk koleksi seperti di RDMS dimana itu adalah wadah untuk tabel. Setiap database mendapatkan kumpulan filenya sendiri di sistem file. Server MongoDB dapat menyimpan banyak database.
- Dokumen - Catatan dalam koleksi MongoDB pada dasarnya disebut dokumen. Dokumen tersebut, pada gilirannya, akan terdiri dari nama dan nilai bidang.
- Field - Pasangan nama-nilai dalam dokumen. Sebuah dokumen memiliki nol atau lebih bidang. Bidang dianalogikan dengan kolom dalam database relasional.
Diagram berikut menunjukkan contoh bidang dengan pasangan nilai kunci. Jadi pada contoh di bawah IDPelanggan dan 11 adalah salah satu pasangan nilai kunci yang ditentukan dalam dokumen.
- JSON - Ini dikenal sebagai JavaScript Object Notation. Ini adalah format teks biasa yang dapat dibaca manusia untuk mengekspresikan data terstruktur. JSON saat ini didukung dalam banyak bahasa pemrograman.
Hanya catatan singkat tentang perbedaan utama antara bidang _id dan bidang koleksi normal. Bidang _id digunakan untuk mengidentifikasi dokumen secara unik dalam koleksi dan secara otomatis ditambahkan oleh MongoDB saat koleksi dibuat.
Mengapa Menggunakan MongoDB?
Di bawah ini adalah beberapa alasan mengapa seseorang harus mulai menggunakan MongoDB
- Berorientasi dokumen - Karena MongoDB adalah database tipe NoSQL, alih-alih memiliki data dalam format tipe relasional, ia menyimpan data dalam dokumen. Ini membuat MongoDB sangat fleksibel dan mudah beradaptasi dengan situasi dan persyaratan dunia bisnis nyata.
- Kueri ad hoc - MongoDB mendukung pencarian berdasarkan field, query range, dan pencarian ekspresi reguler. Pertanyaan dapat dibuat untuk mengembalikan bidang tertentu dalam dokumen.
- Pengindeksan - Indeks dapat dibuat untuk meningkatkan kinerja pencarian dalam MongoDB. Semua bidang dalam dokumen MongoDB dapat diindeks.
- Replikasi - MongoDB dapat menyediakan ketersediaan tinggi dengan set replika. Satu set replika terdiri dari dua atau lebih instans DB mongo. Setiap anggota kumpulan replika dapat bertindak dalam peran replika utama atau sekunder kapan saja. Replika utama adalah server utama yang berinteraksi dengan klien dan melakukan semua operasi baca / tulis. Replika Sekunder menyimpan salinan data utama menggunakan replikasi bawaan. Ketika replika utama gagal, kumpulan replika secara otomatis beralih ke replika sekunder dan kemudian menjadi server utama.
- Load balancing - MongoDB menggunakan konsep sharding untuk menskalakan secara horizontal dengan membagi data di beberapa instance MongoDB. MongoDB dapat berjalan di beberapa server, menyeimbangkan beban dan / atau menggandakan data untuk menjaga sistem tetap aktif dan berjalan jika terjadi kegagalan perangkat keras.
Pemodelan Data di MongoDB
Seperti yang telah kita lihat dari bagian Pendahuluan, data di MongoDB memiliki skema yang fleksibel. Tidak seperti di database SQL, di mana Anda harus memiliki skema tabel yang dideklarasikan sebelum memasukkan data, koleksi MongoDB tidak memberlakukan struktur dokumen. Fleksibilitas semacam inilah yang membuat MongoDB sangat kuat.
Saat memodelkan data di Mongo, perhatikan hal-hal berikut
- Apa kebutuhan aplikasi - Lihat kebutuhan bisnis aplikasi dan lihat data apa dan jenis data yang dibutuhkan untuk aplikasi. Berdasarkan ini, pastikan bahwa struktur dokumen diputuskan dengan tepat.
- Apa itu pola pengambilan data - Jika Anda memperkirakan penggunaan kueri yang berat, pertimbangkan penggunaan indeks dalam model data Anda untuk meningkatkan efisiensi kueri.
- Apakah sering terjadi penyisipan, pembaruan, dan penghapusan dalam database? Pertimbangkan kembali penggunaan indeks atau gabungkan sharding jika diperlukan dalam desain pemodelan data Anda untuk meningkatkan efisiensi lingkungan MongoDB Anda secara keseluruhan.
Perbedaan antara MongoDB & RDBMS
Berikut adalah beberapa perbedaan istilah utama antara MongoDB dan RDBMS
RDBMS | MongoDB | Perbedaan |
---|---|---|
Meja | Koleksi | Di RDBMS, tabel berisi kolom dan baris yang digunakan untuk menyimpan data sedangkan di MongoDB, struktur yang sama ini dikenal sebagai kumpulan. Koleksi tersebut berisi dokumen yang pada gilirannya berisi Bidang, yang pada gilirannya merupakan pasangan nilai kunci. |
Baris | Dokumen | Dalam RDBMS, baris mewakili satu item data terstruktur secara implisit dalam sebuah tabel. Di MongoDB, data disimpan dalam dokumen. |
Kolom | Bidang | Dalam RDBMS, kolom menunjukkan sekumpulan nilai data. Ini di MongoDB dikenal sebagai Fields. |
Bergabung | Dokumen yang disematkan | Dalam RDBMS, data terkadang tersebar di berbagai tabel dan untuk menampilkan tampilan lengkap dari semua data, penggabungan terkadang dibentuk di seluruh tabel untuk mendapatkan data. Di MongoDB, data biasanya disimpan dalam satu koleksi, tetapi dipisahkan dengan menggunakan dokumen yang disematkan. Jadi tidak ada konsep join di MongoDB. |
Terlepas dari perbedaan istilah, beberapa perbedaan lainnya ditunjukkan di bawah ini
- Database relasional dikenal untuk menegakkan integritas data. Ini bukan persyaratan eksplisit di MongoDB.
- RDBMS mengharuskan data dinormalisasi terlebih dahulu sehingga dapat mencegah orphan record dan duplikat. Normalizing data kemudian memiliki persyaratan lebih banyak tabel, yang kemudian akan menghasilkan lebih banyak tabel bergabung, sehingga membutuhkan lebih banyak kunci dan indeks.
Saat database mulai berkembang, kinerja dapat mulai menjadi masalah. Sekali lagi ini bukan persyaratan eksplisit di MongoDB. MongoDB bersifat fleksibel dan tidak perlu datanya dinormalisasi terlebih dahulu.