Apa itu MongoDB? Perkenalan, Architekstur, Fitur & Contoh
Apa itu MongoDB?
MongoDB adalah database NoSQL berorientasi dokumen yang digunakan untuk penyimpanan data bervolume tinggi. Daripada menggunakan tabel dan baris seperti pada database relasional tradisional, MongoDB memanfaatkan koleksi dan dokumen. Dokumen terdiri dari pasangan nilai kunci yang merupakan unit dasar data MongoDB. Koleksi berisi kumpulan dokumen dan fungsi yang setara dengan tabel database relasional. MongoDB adalah database yang muncul sekitar pertengahan tahun 2000an.
MongoDB Fitur
- Setiap database berisi koleksi yang pada gilirannya berisi dokumen. Setiap dokumen bisa berbeda dengan jumlah bidang yang berbeda-beda. Ukuran dan isi setiap dokumen bisa berbeda satu sama lain.
- Struktur dokumennya lebih sesuai dengan cara pengembang membangun kelas dan objeknya dalam bahasa pemrograman masing-masing. Pengembang sering mengatakan bahwa kelas mereka bukanlah baris dan kolom tetapi memiliki struktur yang jelas dengan pasangan nilai kunci.
- Baris (atau dokumen seperti yang dipanggil MongoDB) tidak perlu menentukan skema sebelumnya. Sebaliknya, bidang dapat dibuat dengan cepat.
- Model data tersedia di dalamnya MongoDB memungkinkan Anda merepresentasikan hubungan hierarkis, menyimpan array, dan struktur lain yang lebih kompleks dengan lebih mudah.
- Skalabilitas – Itu MongoDB lingkungan sangat terukur. Perusahaan di seluruh dunia telah menetapkan cluster, beberapa di antaranya menjalankan 100+ node dengan jutaan dokumen di dalam database
MongoDB Example
Contoh di bawah ini menunjukkan bagaimana sebuah dokumen dapat dimodelkan MongoDB.
- Bidang _id ditambahkan oleh MongoDB untuk mengidentifikasi secara unik dokumen dalam koleksi.
- Yang perlu diperhatikan adalah Data Pesanan (OrderID, Product, dan Quantity) yang di RDBMS biasanya akan disimpan di tabel tersendiri, sedangkan di RDBMS MongoDB itu sebenarnya disimpan sebagai dokumen yang tertanam dalam koleksi itu sendiri. Inilah salah satu perbedaan utama dalam cara data dimodelkan MongoDB.
Komponen Utama dari MongoDB Architekstur
Di bawah ini adalah beberapa istilah umum yang digunakan dalam MongoDB
- _Indo – Ini adalah bidang yang diperlukan di setiap bidang MongoDB dokumen. Bidang _id mewakili nilai unik di MongoDB dokumen. Bidang _id seperti kunci utama dokumen. Jika Anda membuat dokumen baru tanpa kolom _id, MongoDB secara otomatis akan membuat bidang tersebut. Jadi misalnya jika kita melihat contoh tabel pelanggan di atas, Mongo DB akan menambahkan 24 digit pengenal unik ke setiap dokumen dalam koleksi.
_Pengenal | ID Pelanggan | Nama Pelanggan | Id pemesanan |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Koleksi – Ini adalah pengelompokan MongoDB dokumen. 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 menerapkan struktur apa pun.
- Kursor – Ini adalah penunjuk ke kumpulan hasil kueri. Klien dapat mengulangi kursor untuk mengambil hasil.
- Basis Data – Ini adalah wadah untuk koleksi seperti di RDMS yang merupakan wadah untuk tabel. Setiap database mendapatkan kumpulan filenya sendiri di sistem file. A MongoDB server dapat menyimpan banyak database.
- Dokumen – Sebuah rekor dalam a MongoDB koleksi pada dasarnya disebut dokumen. Dokumen tersebut, pada gilirannya, akan terdiri dari nama bidang dan nilai.
- Bidang – Pasangan nama-nilai dalam sebuah dokumen. Sebuah dokumen memiliki nol atau lebih kolom. Kolom dianalogikan dengan kolom dalam basis data relasional. Diagram berikut menunjukkan contoh Kolom dengan pasangan nilai Kunci. Jadi dalam contoh di bawah ini CustomerID dan 11 adalah salah satu pasangan nilai kunci yang didefinisikan dalam dokumen.
- JSON – Ini dikenal sebagai JavaNaskah Notasi Objek. Ini adalah format teks biasa yang dapat dibaca manusia untuk mengekspresikan data terstruktur. JSON saat ini didukung di banyak bahasa pemrograman.
Sekadar catatan singkat tentang perbedaan utama antara bidang _id dan bidang koleksi normal. Bidang _id digunakan untuk mengidentifikasi secara unik dokumen dalam koleksi dan secara otomatis ditambahkan oleh MongoDB saat koleksi dibuat.
Mengapa Menggunakan MongoDB?
Berikut adalah beberapa alasan mengapa seseorang harus mulai menggunakan MongoDB
- Berorientasi dokumen – Sejak MongoDB adalah NoSQL tipe database, alih-alih memiliki data dalam format tipe relasional, ia menyimpan data dalam dokumen. Ini membuat MongoDB sangat fleksibel dan mudah beradaptasi dengan situasi dan kebutuhan dunia bisnis nyata.
- Kueri ad hoc – MongoDB mendukung pencarian berdasarkan bidang, kueri rentang, dan pencarian ekspresi reguler. Kueri dapat dibuat untuk mengembalikan bidang tertentu dalam dokumen.
- Pengindeksan – Indeks dapat dibuat untuk meningkatkan kinerja pencarian di dalamnya MongoDB. Bidang apa pun di a MongoDB dokumen 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 sebagai replika primer atau sekunder kapan saja. Replika utama adalah server utama yang berinteraksi dengan klien dan melakukan semua operasi baca/tulis. Replika Sekunder menyimpan salinan data primer menggunakan replikasi bawaan. Ketika replika utama gagal, kumpulan replika secara otomatis beralih ke replika sekunder dan kemudian menjadi server utama.
- Penyeimbang beban - MongoDB menggunakan konsep sharding untuk menskalakan secara horizontal dengan membagi data menjadi beberapa MongoDB contoh. MongoDB dapat berjalan di beberapa server, menyeimbangkan beban dan/atau menggandakan data untuk menjaga sistem tetap 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. Berbeda dengan di SQL database, di mana Anda harus mendeklarasikan skema tabel sebelum memasukkan data, MongoDBKoleksi tidak menerapkan struktur dokumen. Fleksibilitas semacam inilah yang menjadikannya MongoDB sangat kuat.
Saat memodelkan data di Mongo, perhatikan hal-hal berikut
- Apa saja kebutuhan aplikasi – Lihat kebutuhan bisnis aplikasi dan lihat data apa serta jenis data yang dibutuhkan aplikasi. Berdasarkan hal ini, pastikan bahwa struktur dokumen diputuskan dengan tepat.
- Apa itu pola pengambilan data – Jika Anda memperkirakan penggunaan kueri akan banyak, maka pertimbangkan penggunaan indeks dalam model data Anda untuk meningkatkan efisiensi kueri.
- Apakah sering terjadi penyisipan, pembaruan, dan penghapusan di database? Pertimbangkan kembali penggunaan indeks atau sertakan sharding jika diperlukan dalam desain pemodelan data Anda untuk meningkatkan efisiensi keseluruhan MongoDB lingkungan.
Perbedaan antara MongoDB & RDBMS
Di bawah ini adalah beberapa perbedaan istilah utama di antara keduanya MongoDB dan RDBMS
RDBMS | MongoDB | Perbedaan |
---|---|---|
tabel | Koleksi | In RDBMS, tabel berisi kolom dan baris yang digunakan untuk menyimpan data, sedangkan di MongoDB, struktur yang sama ini dikenal sebagai kumpulan. Koleksinya berisi dokumen yang pada gilirannya berisi Bidang, yang pada gilirannya merupakan pasangan nilai kunci. |
Baris | Dokumen | Di RDBMS, baris mewakili satu item data terstruktur secara implisit dalam sebuah tabel. Di dalam MongoDB, data disimpan dalam dokumen. |
Kolom | Bidang | Di RDBMS, kolom menunjukkan sekumpulan nilai data. Ini di MongoDB dikenal dengan nama Fields. |
Bergabung | Dokumen yang disematkan | Dalam RDBMS, data terkadang tersebar di berbagai tabel dan untuk menampilkan tampilan lengkap semua data, terkadang dibuat gabungan antar tabel untuk mendapatkan data. Di dalam MongoDB, data biasanya disimpan dalam satu koleksi, tetapi dipisahkan dengan menggunakan dokumen Tertanam. Jadi tidak ada konsep join in MongoDB. |
Selain perbedaan istilah, beberapa perbedaan lainnya ditunjukkan di bawah ini
- Basis data relasional dikenal untuk menegakkan integritas data. Ini bukan persyaratan eksplisit dalam MongoDB.
- RDBMS mengharuskan data tersebut dinormalisasi pertama sehingga dapat mencegah rekaman dan duplikasi yang tidak terpakai. Normalisasi data kemudian memerlukan lebih banyak tabel, yang kemudian akan menghasilkan lebih banyak penggabungan tabel, sehingga memerlukan lebih banyak kunci dan indeks. Ketika database mulai berkembang, kinerja dapat mulai menjadi masalah. Sekali lagi ini bukan persyaratan eksplisit MongoDB. MongoDB fleksibel dan tidak memerlukan data untuk dinormalisasi terlebih dahulu.