Thursday, May 24, 2012

Pertimbangan Awal Dalam Melakukan Migrasi Data

Migrasi data dari database lama ke database baru merupakan pekerjaan yang gampang-gampang susah. Sudah tidak jarang kasus seperti terjadi pada sebuah sistem, ketika adanya perubahan dari sistem lama ke sistem baru yang diikuti dengan perubahan pada database. Ada beberapa alasan mengapa ada perubahan sistem, hal ini tentu berbeda antara satu dengan yang lainnya. Yang pada intinya sebuah sistem diganti dengan sistem yang baru sudah pasti memberi manfaat lebih bagi perusahaan  (pengguna sistem).

Yang menjadi tantangan bagi seorang DBA (Database Administrator) adalah bagaimana data-data yang sudah tersimpan di database lama bisa dipindahkan (ditransfer) ke database yang baru. Sistem bisa berubah tetapi data tetap, maksudnya data-data yang lama yang sebelumnya ada di sistem lama harus ada di database sistem yang baru.

Ada beberapa yang harus dipertimbangkan oleh seorang DBA sebelum melakukan migrasi data ke database yang baru, menurut saya perlu mempertimbangkan 2 hal berikut:

  1. Platform.  Maksudnya adalah apakah DBMS yang lama dengan yang baru sama atau berbeda. Jikalau sama maka pekerjaan mungkin tidak terlalu banyak karena ada di platform yang sama misalnya MSSQL Server ke MSSQL Server. Namun yang menjadi tantangan adalah kalau berbeda platform, misalnya database lama menggunakan MySQL sedangkan database baru menggunakan MSSQL Server. Kasus seperti ini tentunya memiliki pekerjaan ekstra dalam  mentransfer datanya.
  2. Data Definition.  Struktur tabel juga akan mempengaruhi pekerjaan ketika melakukan migrasi. Struktur tabel yang sama antara kedua database tentu sangat mudah untuk melakukan migrasi.  Struktur tabel yang dimaksud adalah mulai dari table name, field name, tipe data, field position, dsb. Bila sama maka pekerjaan tidak terlalu banyak, tinggal mencocokan field antar field kedua table tersebut. Namun bila tidak, maka pekerjaan tidak bisa hanya sekedar mencocokkan saja.

Lalu bagaimana solusinya bila table structure di database lama berbeda dengan yang ada di database baru?
Gunakanan View sebagai jembatan antara kedua database. Dalam kasus ini, saya menggunakan kasus dimana kedua database menggunakan platform yang sama yaitu MSSQL Server. Tentu bagi yang sudah pernah menggunakan MSSQL Server tidak asing dengan penggunaan view. View merupakan virtual table yang disupport oleh MSSQL Server.


Sebagai  contoh migrasi table mahasiswa, dengan table structure seperti berikut.


DBOld
DBNew
master_mahasiswa
MsStudent
nimhs
char(10)
StudentID
char(10)
nmmhs
varchar(50)
StudentName
varchar(100)
telp
varchar(20)
PhoneNumber
varchar(30)
kdpos
varchar(10)
ZipCode
int
tglhr
datetime
Birthday
datetime


Nationality
Int

Ada tiga kasus dari konsisi table di atas yaitu: nama field berbeda, tipe data berbeda dan jumlah field yang tidak sama. Untuk hal ini, buatlah view di antara kedua table ini, sebagai perantara, dimana dalam view ini melakukan penyesuaian terhadap struktur table pada table database baru. Struktur field atau kolom disesuaikan dengan struktur pada table database baru (destination). Fungsi dari dibuatkan view ini bisa dibilang adalah salah satu cara untuk melakukan pembersihan pada data (data cleaning), maksudnya hanya data-data dibutuhkan pada destination table saja yang akan dipindahkan.  Untuk menyesuaikan tipe data gunakan fungsi cast, sesuai dengan tipe data pada table baru (destination). Berikut adalah contoh view yang untuk kedua table di atas.

create view ViewMsStudent
as
select
nimhs as StudentID,
nmmhs as StudentName,
telp as PhoneNumber,
cast(kdpos as int) as ZipCode,
tglhr as Birthday,
0 as Nationality
from DBOld.dbo. master_mahasiswa


Simpan view yang sudah pernah dibuat, mungkin akan digunakan lagi. Untuk melakukan transfer data gunakan tools ETL pada MSSQL Server, lalu gunakan view yang sudah dibuatkan tadi.