Cara menggunakan mongodb c++ tutorial

Pada tulisan ini kita akan membahas database MongoDB yang menjadi NoSQL database paling popular saat ini.

Database

Kita mulai dari pengertian database.

Database adalah salah satu komponen utama penyusun suatu aplikasi, fungsi umum dari database adalah untuk menyimpan data.

Jenis Database

Ada banyak sekali jenis database, tapi pada pemrograman ada dua jenis database yang paling sering dipakai, yaitu Relational Database dan Non-relational Database.

Relational Database

Pada 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:

  • MySQL
  • MariaDB
  • PostgreSQL
  • SQL Server
  • Oracle

Non-relational Database

Non-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:

  • Document Stores, data disimpan dalam bentuk JSON document. Contoh: MongoDB, Couchbase
  • Key-value Stores, data disimpan dalam bentuk pasangan key-value. Contoh: Redis, Amazon DynamoDB
  • Wide Column Stores, data disimpan dalam sebuah record yang bisa memiliki ribuan bahkan jutaan kolom. Contoh: Cassandra
  • Graph Database, data disimpan dalam bentuk data struktur Graph. Contoh: Neo4j

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 Data

Kita 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 Operation

Operasi 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.

Untuk SQL database, Dalam bentuk seperti apa data akan disimpan?.

Untuk NoSQL database, Dalam bentuk seperti apa data akan dibaca?.

Scalability

Meningkatkan 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 MongoDB

MongoDB dapat diinstall di hampir semua Operating System

Jenis MongoDB server yang dapat digunakan secara gratis adalah MongoDB Community Server.

  1. Windows (Windows 7, 10)

Download installernya kemudian install sesuai instruksi.

2. Linux (Ubuntu, Debian)

  • Import public key

Jalankan perintah berikut ini dari terminal

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
  • Tambahkan sourcelist

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
  • Update package list dan Install MongoDB
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
  • Start MongoDB
$ 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
$ brew install mongodb

Selanjutnya kita akan bahas konsep dan operasi dasar yang sering digunakan dalam MongoDB.

Konsep Dasar

JSON vs BSON

MongoDB 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:

{
"key" : "value"
}

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 Collection

Pada 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 MongoDB

Operasi 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
  1. Membuat Database

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
0

options disini adalah parameter yang bisa kita tambahkan dalam membuat sebuah collection dan bersifat optional.

Contoh membuat collection:

Operasi CRUD

Operasi 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:

  • $ 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
    3, untuk menambahkan document tunggal/single
  • $ 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
    4, untuk menambahkan banyak document

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
1

Contoh menampilkan semua data:

Kita bisa tambahkan filter untuk menampilkan data sesuai filter yang diberikan

5. Update

Untuk memperbaharui sebuah document kita gunakan method berikut:

  • $ 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
    5 , ubah satu document
  • $ 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
    6, ubah banyak document sekaligus sesuai filter
  • $ 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
    7, ganti satu document dengan document yang baru sesuai filter

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.

  • $ 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
    8, hapus satu document
  • $ 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
    9, hapus banyak document sekaligus sesuai filter

Contoh:

Delete document dimana name=”brachio”.

Aggregation

Konsep 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.

  • Aggregation Pipeline
  • Map-reduce function
  • Single Purpose Aggregation Methods

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
2

Pada Aggregate Pipeline diatas terdapat 2 stage:

stage 1: cari dinosaurus berwarna merah menggunakan operator

$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
0

stage 2: kelompokan hasil pencarian berdasarkan nama, kemudian hitung jumlah berat makanan yaitu foodWeight x eat dengan menggunakan operator

$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
1 dan
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
2

Hasilnya:

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.

  • Kita tidak harus memiliki server sendiri untuk menjalankan MongoDB
  • Proses maintenance dan security database ditangani oleh MongoDB sendiri, sehingga kita bisa lebih fokus ke pengembangan aplikasi
  • MongoDB Atlas terintegrasi dengan berbagai layanan dari MongoDB untuk memudahkan pengembangan aplikasi seperti serverless platform MongoDB Realm, Atlas Search, Atlas Data Lake dll

Pada saat tulisan ini dibuat, kita bisa menggunakan MongoDB Atlas secara gratis dengan batasan kapasitas shared cluster maksimal 512MB.

Registrasi

Buat akun MongoDB terlebih dahulu.

Untuk mempermudah kita bisa pilih Sign Up with Google

Membuat Cluster Baru

Setelah registrasi langkah selanjutnya adalah membuat sebuah cluster baru.

Cluster adalah MongoDB server yang kita hosting di cloud provider.

  1. Buat cluster baru dengan klik Create A Cluster

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.

  1. Download dan Install MongoDB Compass
  2. Buat koneksi ke local MongoDB server

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:

  • IP address yang bisa mengakses MongoDB Atlas
  • Membuat database user

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

  • Fungsi utama database pada suatu aplikasi adalah untuk menyimpan data
  • Jenis database sangat banyak, yang sering ditemui adalah Relational Database dan Non-relational Database
  • MongoDB termasuk Non-relational Database
  • MongoDB menyimpan data dalam bentuk BSON document
  • Pada 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
  • Operasi dasar pada MongoDB mirip dengan operasi dasar pada SQL database pada umumnya, seperti Membuat database, collection, dan operasi CRUD (Create, Read, Update, Delete)
  • 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
  • Tiga bentuk aggregation pada MongoDB adalah Aggregation Pipeline, Map-reduce function, Single Purpose Aggregation Methods
  • Kita bisa manfaatkan layanan MongoDB Atlas untuk menggunakan MongoDB server tanpa harus menginstall
  • Kita bisa gunakan MongoDB Compass untuk mempermudah pengelolaan database MongoDB

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.

MongoDB menggunakan bahasa apa?

MongoDB sendiri ditulis dengan bahasa C++ dan telah tersedia untuk berbagai jenis bahasa pemrograman. Fitur utama dari mongoDB antara lain: model document-oriented storage.

Kapan harus menggunakan MongoDB?

Kapan Menggunakan MongoDB Misalnya kamu memiliki toko online yang ramai pelanggan yang setiap menitnya terdapat ada 100 data pelanggan yang masuk. Selain itu kamu juga bisa menggunakan MongoDB saat data yang didapatkan berkembang secara cepat dan memiliki struktur data yang kompleks.

MongoDB digunakan untuk apa?

3. Cocok Untuk Menampung Data yang Bervariasi Dynamic schema membuat MongoDB cocok untuk menampung data yang bervariasi baik digunakan untuk menyimpan data yang terstruktur ataupun yang tidak terstruktur.

Apa isi dari sebuah Collection dalam MongoDB?

Collection MongoDb adalah tempat kumpulan informasi data yang berbentuk dokumen. Collection dipadankan seperti tabel-tabel yang berisi data pada database SQL. Document MongoDb adalah satuan unit terkecil dalam MongoDB.