Beberapa tahun terakhir database telah memasuki era baru di mana database NoSQL sudah menjadi sebuah kebutuhan dalam industri teknologi informasi. Banyaknya kebutuhan untuk dapat menyimpan data yang bervariasi, cepat dan banyak membuat NoSQL semakin menjadi pilihan. Pada akhirnya kebutuhan untuk melakukan pemindahan data dan migrasi dari database relational sepertu MySQL ke NoSQL seperti MongoDB semakin dibutuhkan.
Masalahnya, melakukan migrasi database harus dilakukan dengan hati-hati agar data yang dipindahkan benar-benar sesuai dengan yang diharapkan baik dari segi schema dan kelengkapannya, sehingga data tetap valid untuk digunakan. Beruntungnya, sudah ada beberapa penelitian yang membahas cara memindahkan data dari database relasional MySQL ke NoSQL Mongodb. Salah satunya akan kita gunakan sebagai referensi untuk membuat aplikasi migrasi database pada tutorial ini.
Pada tutorial ini, kita akan membuat aplikasi untuk memindahkan data dan migrasi data pada sebuah table MySQL ke MongoDB. Tutorial ini dibuat dengan merujuk penelitian:
M. N. Y. Utomo and R. Nur, “Migrasi Table Basis Data Relasional ke Collection Basis Data NoSQL dengan Teknik Transformasi Data,” Seminar Nasional Hasil Penelitian & Pengabdian Kepada Masyarakat, SNP2M 2020, pp. 23-28, 2020.
Download paper lengkap: Download Paper
Penelitian diatas memperlihatkan model migrasi database MySQL ke MongoDB yang bisa dibuat dengan bahasa Python. Langkah-langkah pembuatannya sebagai berikut:
1. Install Python
Versi Python yang digunakan adalah versi Python 3.x, jika Anda menggunakan Linux Ubuntu maka sudah langsung terinstall. Jika menggunakan Windows maka dapat menginstall dengan mendownload Python terlebih dahulu pada situs resminya. Contoh versi Python yang digunakan pada tutorial ini:
2. Install Dependensi Paket
Terdapat dua paket yang dibutuhkan yaitu:
– MySQl Connector Python, install dengan perintah CMD: pip install mysql-connector-python
– Mongo Connector Python, install dengan perintah CMD: pip install pymongo
3. Siapkan Database MySQL
Anda harus memiliki database MySQL, jika belum menginstall harap install terlebih dahulu. Kemudian pastikan sudah memiliki database yang ingin dipindahkan ke MongoDB. Untuk percobaan Anda dapat menggunakan database tutorial yang dapat di download disini. Setelah import hasilnya kurang lebih seperti ini:
4. Siapkan Database MongoDB
Anda juga harus sudah memiliki database MongoDB yang berjalan, silahkan install dahulu jika belum punya. Kemudian jalan MongoDB dengan perintah mongod dan pastikan database MongoDB nya berjalan seperti gambar dibawah:
5. Buat File Python dengan Nama: mysqltomongodb.py
Buat satu buah file Python untuk menyimpan codingan migrasi kita. Isi file python ini dengan code berikut:
Sesuaikan beberapa kode berikut sesuai dengan akses MySQL dan table database yang ingin dimigrasikan:
USER = ‘USERNAME_MYSQL‘
PASSWORD = ‘PASSWORD_MYSQL‘
HOST = ‘HOST_MYSQL‘ #(localhost or 127.0.01 for local)
DATABASE = ‘NAMA_DB‘
TABLE_NAME = ‘NAMA_TABLE‘
Hal lain yang perlu diperhatikan dari code diatas adalah proses migrasinya yang menggunakan teknik transformasi data. Sebagaimana tertulis pada paper migrasi database yang kita rujuk, transformasi data yang diterapkan ialah: Melakukan transformasi data dengan pairing pembentukan Key-Value. Artinya, data yang sebelumnya tersimpan sebagai table pada database MySQL di ubah menjadi bentuk Key-Value Pair agar sesuai dengan format MongoDB.
6. Jalankan Python
Jalankan Python untuk eksekusi file yang sudah kita buat dengan perintah CMD: python mysqltomongodb.py
*Table target bernama “data_barang”, silahkan bisa diubah di codingan langkah 6.
7. Lihat Hasil Migrasi
Hasil migrasi table database bisa dilihat sesuai gambar dibawah:
Seluruh kode yang ada pada tutorial ini juga dapat didownload pada Github: MySQLtoMongo Versi 1
Perubahan pada kode dapat dilakukan sesuai kebutuhan dengan mereferensi paper penelitian diatas.
Model migrasi yang dibahas pada tutorial ini masih memiliki kekurangan yaitu hanya memindahkan 1 (satu) table saja. Kekurangan ini bisa diatasi dengan melakukan deteksi jumlah table dengan memanfaatkan MetaData SQL, kita membahas solusinya pada tutorial ini.
Selamat mencoba.
bang izin tanya, jika datanya setiap hari bertambah, bagaimana mengatasinya untuk data yang selalu update tersebut jadi nosql juga data terbarukan tersebut?
terima kasih