Pada tulisan ini kita akan membahas database MongoDB yang menjadi NoSQL database paling popular saat ini. Show Database Kita mulai dari pengertian database. Database adalah salah satu komponen utama penyusun suatu aplikasi, fungsi umum dari database adalah untuk menyimpan data. Jenis DatabaseAda banyak sekali jenis database, tapi pada pemrograman ada dua jenis database yang paling sering dipakai, yaitu Relational Database dan Non-relational Database. Relational DatabasePada relational database, data disimpan dalam sebuah skema yang ditampilkan seperi tabel (terdiri dari baris dan kolom). Setiap data pada relational database diidentifikasi menggunakan key atau primary key. Untuk memanipulasi data pada relational database digunakan sebuah bahasa yang disebut dengan Structured Query Language (SQL), oleh karena itu Relational Database juga disebut dengan SQL database. Contoh Relational Database:
Non-relational DatabaseNon-relational database merupakan alternatif untuk relational database yang sering digunakan untuk menyimpan data dengan struktur yang tidak beraturan. Non-relational database juga biasa disebut dengan NoSQL database. Ada beberapa tipe non-relational database:
SQL vs NoSQL Sebelum membahas MongoDB kita akan bahas secara singkat perbedaan mendasar antara SQL dan NoSQL. Developer yang sudah terbiasa dengan konsep SQL database mungkin akan berusaha menerapkan konsep SQL ketika menggunakan NoSQL database. Padahal konsep keduanya sangat berbeda. Bentuk DataKita mulai dari bentuk data. Pada SQL database seperti MySQL, sebuah data harus disimpan dalam bentuk tabel. Data tersusun rapi dan mudah dibaca. Sedangkan pada NoSQL database, data dapat disimpan dalam bentuk document, key-value, wide column atau graph. Data yang ditambahkan pada NoSQL database umumnya adalah data yang tidak terstruktur / beraturan. Read OperationOperasi membaca data / Read pada SQL database bisa dibilang operasi yang cukup murah dan mudah (resource yang digunakan untuk operasi read tidak terlalu besar), hal ini dikarenakan sejak dari awal data harus di normalisasi 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 table. Kebalikan dari SQL, operasi Read pada NoSQL database bisa menjadi mahal karena bentuk data yang ditambahkan bisa jadi tidak beraturan dari awal. Untuk mendesain model data NoSQL database kita fokus pada query pattern dan bentuk data yang ingin didapatkan. Hal ini berbeda dengan SQL database dimana fokus tertuju pada struktur dan normalisasi data. Kita bisa menggunakan kata kunci berikut untuk mempermudah kita dalam mendesain model data pada database.
ScalabilityMeningkatkan skalabilitas dari SQL database lebih mudah dilakukan secara vertical, yang berarti peningkatan kemampuan dari SQL database dilakukan dengan cara meningkatkan spesifikasi mesin atau server. Sedangkan skalabilitas dari NoSQL database lebih mudah dilakukan secara horizontal, yang dilakukan dengan cara menambah jumlah dari mesin atau server. Setelah mengetahui perbandingan antara SQL dan NoSQL kita akan bahas salah satu NoSQL database yang paling populer saat ini yaitu MongoDB. Jika kita lihat hasil dari StackOverflow Developer Survey 2020, MongoDB menjadi NoSQL database yang paling populer. Stackoverflow Developer Survey 2020Install MongoDBMongoDB dapat diinstall di hampir semua Operating System Jenis MongoDB server yang dapat digunakan secara gratis adalah MongoDB Community Server.
Download installernya kemudian install sesuai instruksi. 2. Linux (Ubuntu, Debian)
Jalankan perintah berikut ini dari terminal $ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
Ubuntu 20.0 $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
$ sudo apt-get update
$ sudo systemctl start mongod Untuk memeriksa apakah MongoDB server sudah berjalan dengan baik jalankan perintah berikut: $ sudo systemctl status mongod 3. Mac OS Disarankan untuk menginstall MongoDB Server menggunakan package manager Homebrew. $ brew update Selanjutnya kita akan bahas konsep dan operasi dasar yang sering digunakan dalam MongoDB. Konsep DasarJSON vs BSONMongoDB menyimpan data dalam bentuk BSON document, lalu apa itu BSON dan adakah hubungannya dengan JSON? JSON adalah singkatan dari JavaScript Object Notation, JSON menjadi salah satu format data yang paling banyak digunakan untuk transfer data antara browser dan server. Pada dasarnya JSON hanya sebuah text yang memiliki format/syntax sebagai berikut: { Sedangkan BSON adalah singkatan dari Binary JSON, BSON memiliki beberapa keunggulan dibandingkan dengan JSON diantaranya tingkat parsing yang lebih cepat dan mendukung lebih banyak tipe data native seperti dates dan binary data. Table vs CollectionPada SQL database seperti MySQL, sebuah database adalah gabungan dari satu atau banyak tabel. Sedangkan pada MongoDB, sebuah database adalah gabungan dari satu atau banyak collection. Yang perlu diperhatikan disini adalah kita bisa menyimpan data ke dalam collection dengan bentuk yang tidak terstruktur / beraturan berbeda dengan table pada MySQL. Operasi Dasar MongoDBOperasi dasar pada MongoDB mirip dengan operasi dasar pada SQL database pada umumnya. Untuk dapat berinteraksi dengan MongoDB server kita bisa gunakan MongoDB shell. Buka terminal dan eksekusi perintah berikut: $ mongo
Perintah yang digunakan untuk membuat database: use DATABASE_NAME Perintah diatas akan membuat sebuah database baru jika tidak ditemukan database dengan nama yang sama di server. Jika sudah ada database dengan nama yang sama, maka perintah tersebut akan menampilkan database yang sudah ada. Sebagai contoh kita akan buat sebuah database dengan nama dinoDB. Untuk melihat database yang sudah ada kita gunakan perintah show dbs 2. Membuat Collection Perintah atau method yang digunakan untuk membuat collection: $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list 0options disini adalah parameter yang bisa kita tambahkan dalam membuat sebuah collection dan bersifat optional. Contoh membuat collection: Operasi CRUDOperasi CRUD (Create, Read, Update, Delete ) adalah operasi dasar di dunia database / storage. 3. Create Create berarti menambahkan data(selanjutnya kita sebut document) ke dalam collection. MongoDB menyediakan dua metode untuk menambahkan document, yaitu:
Contoh menambahkan dokumen tunggal Setiap document yang berhasil ditambahkan ke dalam database, MongoDB secara otomatis akan membuat sebuah id untuk document tersebut. id ini memiliki fungsi untuk membedakan antara satu document dengan document yang lainnya, mirip dengan primary key pada SQL table. Contoh menambahkan multi dokumen: 4. Read Read adalah membaca document yang ada di dalam MongoDB database. Perintah atau method yang digunakan adalah: $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list 1Contoh menampilkan semua data: Kita bisa tambahkan filter untuk menampilkan data sesuai filter yang diberikan 5. Update Untuk memperbaharui sebuah document kita gunakan method berikut:
Contoh: Kita update document dengan filter color: “red” kemudian update name dari t-rex menjadi allo. 6. Delete Ada 2 method yang dapat digunakan untuk menghapus document.
Contoh: Delete document dimana name=”brachio”. 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. MongoDB menyediakan tiga cara untuk melakukan aggregation.
Dari ketiga cara tersebut, kita akan bahas cara yang pertama yaitu Aggregation Pipeline. MongoDB aggregation pipeline terdiri dari beberapa stages, pada setiap stage terjadi proses perubahan data yang berbeda-beda. Sebagai contoh, kita memiliki document seperti ini: Kemudian kita ingin mendapatkan data jumlah berat makanan yang sudah dimakan tiap harinya oleh dinosaurus yang memiliki warna merah Aggregate Pipeline: $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list 2Pada Aggregate Pipeline diatas terdapat 2 stage: stage 1: cari dinosaurus berwarna merah menggunakan operator $ sudo apt-get update 0stage 2: kelompokan hasil pencarian berdasarkan nama, kemudian hitung jumlah berat makanan yaitu foodWeight x eat dengan menggunakan operator $ sudo apt-get update 1 dan $ sudo apt-get update 2Hasilnya: Daftar operator aggregate yang bisa digunakan dapat dilihat disini. MongoDB Atlas MongoDB Atlas adalah layanan database MongoDB online yang disediakan oleh MongoDB. MongoDB Atlas memiliki beberapa keunggulan dibanding dengan MongoDB Community Server.
Pada saat tulisan ini dibuat, kita bisa menggunakan MongoDB Atlas secara gratis dengan batasan kapasitas shared cluster maksimal 512MB. RegistrasiBuat akun MongoDB terlebih dahulu. Untuk mempermudah kita bisa pilih Sign Up with Google Membuat Cluster BaruSetelah registrasi langkah selanjutnya adalah membuat sebuah cluster baru. Cluster adalah MongoDB server yang kita hosting di cloud provider.
2. Pilih Shared Cluster kemudian cloud provider, pada tutorial ini kita menggunakan AWS dengan region adalah Singapore Jika cluster berhasil dibuat kita akan mendapatkan tampilan seperti ini: 3. Membuat collection Membuat database & collection menggunakan MongoDB Atlas cukup mudah, kita tinggal klik tombol collection. Kemudian klik Add My Own data dan buat database & collection baru Seperti yang sudah kita lakukan sebelumnya, kita beri nama database dinoDB dan collection name profile kemudian klik button Create Selanjutnya kita bisa insert document baru dengan mudah menggunakan menu yang sudah ada. Pada window Insert to Collection kita bisa menambahkan field, value dan tipe data dari value seperti String, Int32 atau Boolean. MongoDB Compass MongoDB Compass adalah Database Tool untuk MongoDB yang bisa kita gunakan untuk mempermudah pengelolaan MongoDB database terutama jika kita menggunakan banyak server MongoDB . Pada bagian ini kita akan menggunakan MongoDB Compass untuk mengelola MongoDB server yang sudah terinstall di local computer dan server yang ada di MongoDB Atlas.
Jika kita sudah memiliki MongoDB server yang berjalan di komputer kita tinggal klik tombol Connect tanpa perlu mengisi informasi connection string Tampilan ketika berhasil membuat koneksi ke local MongoDB server 3. Membuat koneksi ke MongoDB Atlas Untuk MongoDB Atlas kita perlu melakukan beberapa konfigurasi. Pada halaman utama MongoDB Atlas klik tombol connect Selanjutnya kita harus mengkonfigurasi hal berikut:
Untuk IP address kita bisa pilih Add Your Current IP Address atau jika kita ingin MongoDB Atlas bisa diakses dari mana saja pilih Allow Access from Anywhere. Kemudian pilih metode koneksi yang akan kita gunakan. Karena kita menggunakan MongoDB Compass maka kita pilih Connect using MongoDB Compass. Salin connection string untuk selanjutnya kita gunakan di MongoDB Compass. Ganti password dengan password yang sudah dibuat saat membuat Database User. Tampilan MongoDB Compass ketika berhasil terkoneksi dengan MongoDB Atlas. Database GUI Tools tidak hanya MongoDB Compass, kita bisa menggunakan tools lain seperti Robo3T atau NoSQL Manager. TL;DR
Semoga tutorial atau panduan ini dapat membantu kamu yang ingin menggunakan MongoDB sebagai alternatif database selain SQL database. Jangan lupa untuk clap jika tutorial ini bermanfaat. Terima kasih. Download full chapter eBook Full Stack Gate, kumpulan materi pendahuluan untuk memulai karir sebagai Full Stack Web Developer disini. |