Jika MySQL adalah yang paling populer di dunia Relational Database, maka di dunia Non-relational Database ada MongoDB. Show Hasil survey Stack Overflow tahun 2020 untuk kategori Most Popular Database. MongoDB termasuk tipe Non-relational database dimana data disimpan dalam bentuk BSON document. BSON adalah versi binary dari JSON. Sebelum kita lanjutkan kita perlu membahas beberapa perbedaan penting antara NoSQL dengan SQL dengan membandingkan MySQL dengan MongoDB. Developer yang sudah terbiasa dengan konsep SQL database mungkin akan berusaha menerapkan konsep SQL ketika menggunakan NoSQL database. Padahal konsep keduanya bisa dibilang sangat berbeda. Bentuk dataMySQL Pada MySQL sebuah database adalah gabungan dari satu atau banyak table. Data harus disimpan dalam bentuk table, sebagai contoh kita memiliki table bernama dino berisikan profil dari setiap dinosaurus. Jika kita menambah data dinosaurus baru maka kita harus menyesuaikan format data tersebut dengan kolom yang tersedia. Jika sebagian data kosong maka value dari kolom tersebut adalah null. MongoDB Sebuah database pada MongoDB adalah kumpulan dari satu atau banyak collections. Collection mirip dengan table SQL. Sebagai contoh, kita memiliki sebuah collection yang berisikan data yang sama dengan table dino di atas. Data baru dapat ditambahkan ke dalam collection dalam format yang tidak beraturan/terstruktur dan tidak harus sama dengan data yang sudah ada. Read OperationMySQL Operasi membaca data atau Read Operation pada database MySQL bisa dibilang operasi yang cukup murah dan mudah (resource yang digunakan tidak terlalu besar), hal ini dikarenakan sejak dari awal data harus dinormalisasi terlebih dahulu sebelum ditambahkan ke database. Yang dimaksud normalisasi adalah mengatur kolom pada tabel agar tidak terjadi data redundancy (duplikat data terjadi tanpa ada tujuan). Operasi Read pada MySQL bisa menjadi ‘mahal’ jika harus melakukan operasi join banyak tabel. Meskipun dengan menerapkan beberapa teknik optimasi hal ini bisa dihindari. MongoDB Kebalikan dari MySQL, operasi Read pada MongoDB bisa jadi mahal karena bentuk data yang ditambahkan bisa jadi tidak beraturan dari awal. Untuk mendesain model data untuk NoSQL database kita fokus pada query pattern dan bentuk data yang ingin didapatkan. Hal ini berbeda dengan MySQL dimana kita fokus kepada struktur dan normalisasi data. Kita bisa menggunakan kata kunci berikut untuk mempermudah kita dalam mendesain model data pada database. Untuk SQL database, Dalam bentuk seperti apa data akan disimpan?. Untuk NoSQL database, Dalam bentuk seperti apa data akan dibaca?. Duplikasi data pada NoSQL adalah sesuatu yang normal. ScalabilityMeningkatkan skalabilitas dari SQL database lebih mudah dilakukan secara vertical, yang berarti peningkatan kemampuan dari SQL database dilakukan dengan cara meningkatkan spesifikasi mesin/server/komputer. Sedangkan skalabilitas dari NoSQL database lebih mudah dilakukan secara horizontal, meningkatkan kemampuan dari NoSQL database dapat dilakukan dengan cara menambah jumlah dari mesin/server/komputer. Pada prakteknya kita akan menemukan banyak aplikasi menggunakan kombinasi antara SQL dan NoSQL database. Karena dengan begitu kita bisa mengumpulkan kelebihan dari masing-masing database. Selanjutnya kita akan bahas instalasi MongoDB dan Operasi Dasar MongoDB. Langkah instalasi berikut ini adalah untuk OS Linux berbasis debian(Ubuntu, Mint), untuk OS Windows silahkan download installernya disini. 1. Import public key Jalankan perintah berikut ini dari terminal Copy
Menghapus collectionMethod: Contoh: CreateMenambahkan data(selanjutnya kita sebut document) ke dalam collection. MongoDB menyediakan dua metode untuk menambahkan document, yaitu:
Contoh db.collection.insertOne(): Contoh db.collection.insertMany(): Perbandingan dengan MySQL
Field pada document pertama adalah name & color, sedangkan document kedua adalah name, color dan height, hal ini tidak akan menambahkan field height ke document pertama. ReadUntuk membaca document pada collection kita gunakan db.collection.find(filter). Contoh: Menampilkan semua document. Menampilkan dengan filter. Perbandingan dengan MySQL
Mengubah document. Ada 3 Method:
Contoh db.collection.updateOne(): DeleteMenghapus document. Ada 2 Method:
AggregationKonsep join pada SQL database tidak akan kita temukan pada NoSQL database seperti MongoDB, karena pada asalnya NoSQL database tidak didesain untuk menyimpan data yang terstruktur. Lalu bagaimana jika kita ingin query document dari beberapa collection dan ditampilkan dalam satu tampilan seperti pada MySQL ? Seperti yang dijelaskan sebelumnya, jika kita menggunakan NoSQL database maka kita fokus pada access pattern dan bagaimana bentuk data yang ingin kita dapatkan/baca. Dengan menggunakan access pattern kita bisa mendapatkan berbagai bentuk data hanya dengan query satu collection. Dan sangat mungkin antara satu collection dengan collection yang lain tidak terdapat relasi, sehingga kita tidak memerlukan konsep seperti join pada sql database. MongoDB memiliki konsep aggregation yang bisa digunakan sebagai pengganti join namun terbatas untuk document, bukan collection. Aggregation adalah sebuah operasi dimana value dari berbagai document di kelompokan menjadi satu untuk selanjutnya diproses agar mendapatkan hasil yang diinginkan. Tidak semua NoSQL database memiliki konsep aggregation, setiap NoSQL database memiliki pendekatannya masing-masing. Sebagai contoh DynamoDB tidak support aggregation, tetapi DynamoDB memiliki Global Secondary Index dan Local Secondary Index yang bisa dimanfaatkan sebagai ganti aggregation. Contoh Aggregation pada MongoDB: Copy |