Database Migration & Data Seeding — How to do it?

Yusuf Sholeh
PPL A-4 YUK RECYCLE
3 min readApr 16, 2019

Apa itu database migration?

Database migration adalah kumpulan script yang merupakan perintah DML (Data Manipulation Language) dan DDL (Data Definition Language) untuk mengubah versi database menjadi lebih baru. Untuk kelompok kami, database migration berisi kumpulan perintah pembuatan tabel, index, dan constraints. Penasaran bagaimana cara melakukannya?

Langsung saja.

Kami menggunakan tools https://github.com/rubenv/sql-migrate dalam melakukan migrasi. Struktur direktori yang dibuat adalah sebagai berikut:

directories

Folder sqlmigrate berisi kumpulan perintah sql yang akan kita jalankan. Untuk file dbconfig.yml berisi konfigurasi mengenai database connection string (database yang dituju), serta terdapat pengaturan untuk environment database development dan production. Berikut adalah isinya:

dbconfig.yml

Timestamp

Pada setiap nama file, terdapat sebuah penanda waktu yaitu tahun, tanggal, bulan, hari, jam, menit. Penanda tersebut berguna untuk menandakan versi database yang berubah setiap waktunya. Artinya, terdapat sebuah titik dimana migration belum dijalankan. Untuk mengecek, jalankan saja sql-migrate status:

status migration

Terlihat bahwa dalam database, penanda akhir waktu yang saya aplikasikan adalah 14 april 2019. Untuk menjalankan file setelahnya, jalankan perintah sql-migrate up. Sebelum mencoba up, saya akan illustrasikan terlebih dahulu untuk sql-migrate down. Down adalah menurunkan versi dari database kita. Down berguna untuk melakukan undo apabila terjadi sebuah error.

sql-migrate down
Undo all migrations. Do sql-migrate down 13 times.
up all migrations
all migrations have been applied

Viola! versi database sudah terupdate ke paling baru.

Migration file

Seperti apasih isi dari file migration? Mari kita lihat contohnya pada file 20190406060554-Table_Customers:

Terlihat bahwa terdapat perintah ketika kita melakukan Up dan Down. Isi perintahnya sederhana bukan? jadi sebenarnya migration itu gampang, kok. Cuma bikin untuk perintah Up dan Down. Hehe. Pada kasus ini, up berisi perintah untuk membuat tabel dan index. Maka, down nya adalah melakukan drop tabel tersebut dan index tabel tersebut.

Apa itu data seeding?

Data seeding adalah proses automasi penambahan data ke dalam database, melalui kumpulan perintah CRUD. Data seeding berguna untuk memasukkan master data ke dalam database. Apa itu master data? master data adalah sebuah data yang harus ada sebelum aplikasi berjalan. Contohnya, seperti lokasi, user admin, jenis user (role), ataupun jenis sampah jika pada kelompok kami (botol, karton, plastik, kertas). Selain untuk master data, data seeding juga dapat berguna untuk memasukkan dummy data (untuk uji coba / testing).

Penasaran? langsung saja, kita lihat pada salah satu file diatas:

Tabel tersebut merupakan mapping antara order status id dengan deskripsinya. Saya berikan contoh lain untuk jenis sampah:

Data seeding lebih mudah gak sih dari data migration? Cuma insert data doang, wkwk. Oiya, untuk staging, dummy data masih diperbolehkan, namun untuk production data sudah harus real (tidak boleh fake / dummy).

Sekian, semoga bermanfaat!

--

--