Mapping Database Relasional ke MongoDB

Yusuf Aji W
SkyshiDigital
Published in
4 min readMar 6, 2017

Sebagai pegiat IT mungkin kita sudah mengenal atau setidaknya mendengar istilah MySQL. Yaps, Sebuah database relasional populer yang mengusung konsep relasi tradisonal (RDBMS/SQL). Nah, selain RDBMS/SQL juga ada konsep baru yaitu NoSQL. NoSQL merupakan konsep penyimpanan database dinamis yang tidak terikat pada relasi-relasi tabel yang kaku seperti RDBMS. Selain lebih scalable, NoSQL juga memiliki performa pengaksesan yang lebih cepat. Hal-hal itulah yang membuat NoSQL menjadi semakin populer beberapa tahun belakangan.

Salah satu jenis NoSQL yang banyak digunakan dan bersumber terbuka yaitu MongoDB. Dengan sistem penyimpanan dalam format dokumen Binary JSON (BSON) membuat MongoDB sangat cocok untuk dipasangkan dengan Node.js.

Akan menjadi tantangan yang menarik, jika kita selama ini terbiasa dengan konsep SQL dan ingin memahami konsep NoSQL pada MongoDB. Dibutuhkan cara pandang baru, mengingat dua konsep ini memiliki cara berbeda dalam merepresentasikan data.

Mapping Tabel, Kolom dan Baris

Jika pada RDBMS kita mengenal tabel, maka di mongoDB ada istilah collection. Di dalam collection ada bentuk dokumen-dokumen yang sepadan dengan baris pada tabel. Dan nama-nama kolom pada tabel bisa dijumpai sebagai field di MongoDB.

https://cdn.tutsplus.com/net/uploads/2013/11/Figure-6-Mapping-Chart.png

Untuk lebih jelasnya mari kita lihat bentuk perubahan bentuk data dari SQL ke NoSQL.

Bentuk data di MySQL
Bentuk data di MongoDB

Dynamic Schema

Yaps, MongoDB memungkinkan kita untuk membuat satu collection yang memiliki struktur yang berbeda antar dokumen. Perbedaan disini bisa terjadi pada nama field, tipe data, maupun jumlah field yang ada (unstructured data). Tentu saja konsep ini berbeda dengan konsep RDBMS yang mengharuskan kita mendefinisikan struktur dan relasi terlebih dahulu, sehingga struktur tiap baris dalam tabel akan sama (structured data).

Untuk lebih jelasnya bisa dilihat contoh pada dua bentuk dokumen pada satu collection dibawah ini.

Struktur dokumen yang berbeda dalam satu collection

Dari gambar diatas bisa dilihat bahwa pada dokumen pertama terdapat field gol_darah yang tidak ada pada dokumen kedua, begitu juga dengan field pekerjaan yang tidak ditemukan pada dokumen pertama. Bayangkan saja jika data ini disimpan pada RDBMS, akan membutuhkan banyak kolom untuk menampung data yang belum tentu diisi semua (tidak efisien).

Kita mengenal bentuk relasi pada RDBMS menggunakan primary dan foreign key yang terhubung secara langsung. Sedangkan di MongoDB ada dua pendekatan untuk membentuk relasi yaitu Referenced dan Embedded Document.

Referenced Document

Di dalam Referenced Document, satu collection akan menyimpan _id dari collection lainnya pada sebuah field. Pada contoh gambar dibawah, terlihat collection pemesanan menyimpan field id_pelanggan yang merupakan _id dari collection pelanggan. Dalam cara ini _id yang disimpan tidak berhubungan secara langsung dengan collection pelanggan. Kita bisa menginputkan id_pelanggan dalam collection pemesanan walaupun id_pelanggan tidak ada di pelanggan. MongoDB tidak akan menampilkn pesan error apapun.

Embedded Document

Daripada kita menggunakan banyak collection terpisah yang berelasi, kita bisa menyisipkan data-data tersebut di dalam satu dokumen. Misalnya saja seperti gambar dibawah, pemesanan bisa disisipkan pada dokumen pelanggan. Jika tidak, kita juga bisa menyisipkan pelanggan ke dalam pemesanan. Kita bisa banyak berkreasi membentuk struktur yang kita inginkan, namun tentu harus disesusaikan dengan kebutuhan aplikasi kita.

Pendekatan mana yang dipilih?

Tergantung pada banyak kondisi dan kebutuhan. Jika data yang kita sisipkan diprediksi akan tumbuh menjadi besar maka lebih baik untuk menggunakan Referenced Document, seperti data pemesanan diatas. Embedded document digunakan jika data yang disisipkan tidak berpotensi untuk menjadi besar. Perhatikan juga ukuran dari dokumen, karena MongoDB tidak mengijinkan sebuah dokumen berukuran lebih dari 16 MB dan kedalaman dari Embedded Document juga tidak bisa lebih dari 100.

Tambahan

Salah satu aplikasi client cukup membantu mengelola data di MongoDB yaitu Robomongo. Selain bersumber terbuka juga mendukung di sistem operasi GNU/Linux, Mac, dan Windows. Dan jika membutuhkan layanan hosting MongoDB, kita bisa menggunakan layanan di MLab. Tersedia kapasitas 500 MB gratis, lumayan bisa digunakan untuk belajar atau untuk pengembangan aplikasi kita.

Referensi:

--

--