Cara Cepat Merestrukturisasi Tabel dan Data
March 28th, 2009 | by rosihanari |
Cetak Artikel Ini
Artikel ini saya tulis berdasarkan pengalaman saya ketika dihadapkan pada suatu project untuk membuat sistem penilaian sertifikasi guru yang ternyata… cukup melelahkan dan memusingkan
but.. dinikmati sajalah.
Ada suatu kejadian yang sempat membuat saya dan tim hampir frustasi, namun akhirnya bisa terpecahkan. Kejadian ini terkait dengan proses restrukturisasi tabel dan data.
Dalam sistem penilaian yang diminta, terdapat beberapa item penilaian, secara sederhana katakanlah A, B, C, dan D. Masing-masing item tersebut nantinya akan diisi nilai tertentu berdasarkan portofolio guru yang dinilai oleh asesor.
Pada awal mulanya, saya coba rancang tabel untuk menyimpan nilai dari item-item tersebut sebagai berikut
| Kode Guru | Item | Nilai |
| K001 | A | 70 |
| K001 | B | 10 |
| K001 | C | 25 |
| K001 | D | 40 |
| K002 | A | 55 |
| K002 | B | 50 |
| K002 | C | 42 |
| K002 | D | 60 |
Nah… contoh tabel di atas gambaran dari hasil penilaian dari 2 orang guru saja. Pada awal uji coba, semuanya tidak ada masalah alias baik-baik saja. Namun… ternyata begitu sistem ini dilaunch dan dijalankan secara simultan dalam jaringan yang dioperasikan oleh multi user.. lama-lama sistem menjadi tambah lambat. Padahal waktu itu baru 30% persen dari data yang telah berhasil dientri dan diproses dari total 8000 an data.
Feeling saya mengatakan, pasti ada sesuatu dari sisi scriptingnya. Setelah melalui proses pengecekan ulang terhadap efisiensi scripting disertai dengan bantuan anggota tim yang lain, scripting tidak ada masalah. Beberapa algoritma yang tadinya kurang begitu simpel, akhirnya dibuat menjadi lebih simpel. Namun… masalah yang sama kembali muncul.
Wah… ada apa gerangan.. apakah dari sisi networkingnya yang membuat prosesnya lambat, mungkin ada virus yang mem-flood jaringan? Setelah dicek juga tidak ada masalah dari sisi networking.
Akhirnya… setelah merenung beberapa saat, dan berdiskusi dengan tim maka feeling kami mengatakan “there’s something wrong with the database”. Apakah masalah ini disebabkan oleh struktur tabel yang tidak efisien? Selanjutnya kami mencoba merestrukturisasi tabel penilaian di atas. Kami mencoba mengubah struktur tabel tersebut menjadi seperti di bawah ini
| Kode Guru | A | B | C | D |
| K001 | 70 | 10 | 25 | 40 |
| K002 | 55 | 50 | 42 | 60 |
Dilihat dari jumlah record, struktur tabel terakhir ini bisa lebih menghemat 25% (4 kali) daripada struktur sebelumnya. Coba bandingkan, apabila kita gunakan struktur tabel pertama maka total record yang nantinya tersimpan dalam tabel adalah 8000 x 4, karena terdapat 8000 an guru dan setiap guru memiliki 4 item penilaian, sehingga terdapat kira-kira 32000 an record. Sedangkan untuk struktur tabel yang baru hanya akan terdapat 8000 an record karena data item nilai seorang guru bisa disimpan dalam 1 baris record sekaligus.
Apakah dengan analisis tersebut bisa membawa efek yang signifikan terhadap kinerja proses dari sistem? Kita coba bereksperimen dengan ide tersebut.
Trus… bagaimana dengan data yang sudah telanjur dimasukkan ke tabel pertama yang sudah ada sekitar 30% dari 8000 guru atau kira-kira 2000 x 4 = 8000 an record dari 32000 record total. Untuk mengulangi lagi entri dari awal, jelas tidak mungkin. Dipindahkan satu persatu data ke dalam struktur tabel yang baru juga sangat tidak mungkin karena datanya ribuan. Akhirnya kami coba pakai script PHP untuk proses restrukturisasi data dan tabel ini.
Langkah restrukturisasi ini, saya bagi ke dalam 2 tahap. Tahap pertama saya akan coba mengambil data semua kode guru yang telah tersimpan dalam tabel yang lama, selanjutnya saya pindahkan ke tabel yang baru. Pada tahap ini, nilai untuk masing-masing item saya urus belakangan.
Adapun script yang saya buat untuk memindahkan data kode guru adalah sebagai berikut:
<?php
// koneksi ke db
$query = "SELECT DISTINCT kodeguru FROM tabel_lama";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
$kodeGuru = $data['kodeguru'];
$query2 = "INSERT INTO tabel_baru(kodeguru) VALUES = '$kodeGuru'";
mysql_query($query2);
}
?>
Sehingga dari tahap pertama ini, akan diperoleh tabel baru dengan struktur dan data sbb:
| Kode Guru | A | B | C | D |
| K001 | 0 | 0 | 0 | 0 |
| K002 | 0 | 0 | 0 | 0 |
NIlai 0 pada setiap item karena efek dari penggunaan default value ketika membuat tabel.
Sekarang menginjak tahap ke dua yaitu memindahkan nilai-nilai setiap item dari tabel lama ke tabel baru. Untuk tahap ini, idenya hanya menggunakan proses update data saja pada tabel yang baru berdasarkan kode guru masing-masing.
Berikut ini script yang saya gunakan
<?php
// koneksi ke db
$query = "SELECT * FROM tabel_lama";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
$kodeGuru = $data['kodeguru'];
$item = $data['item'];
$nilai = $data['nilai'];
if ($item == "A") $query2 = "UPDATE tabel_baru SET A = $nilai WHERE kodeguru = '$kodeGuru'";
else if ($item == "B") $query2 = "UPDATE tabel_baru SET B = $nilai WHERE kodeguru = '$kodeGuru'";
else if ($item == "C") $query2 = "UPDATE tabel_baru SET C = $nilai WHERE kodeguru = '$kodeGuru'";
else if ($item == "D") $query2 = "UPDATE tabel_baru SET D = $nilai WHERE kodeguru = '$kodeGuru'";
mysql_query($query2);
}
?>
Alhamdulillah.. tidak sampai 3 menit, akhirnya saya peroleh tabel yang baru beserta data yang ambil dari tabel lama. Setelah menggunakan tabel yang baru ini, akhirnya sistem dapat berjalan lebih cepat dengan perubahan yang sangat siginifikan daripada sebelumnya.
Mudah-mudahan sharing pengalaman ini bisa bermanfaat bagi yang sedang mengalami masalah serupa
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Script PHP untuk Menghapus Data Via Panel di Tabel
- Cara Mengubah Struktur Tabel dengan Query SQL
- Cara Mencari dan Mencegah Data NULL di MySQL
- Memperbaiki Struktur Tabel MySQL yang Rusak dengan REPAIR TABLE
- Cara Membuat Query SQL Untuk Relasi Tabel
- Membuat Tampilan Data Terurut Berdasarkan Kolom Tabel
- Cara Membuat Foreign Key, Relasi Tabel dan Referential Integrity di phpMyAdmin
- Membuat Script PHP Untuk Report atau Rekap Data (2)
- Cara Cepat Menghitung Perkalian Dalam 5 Detik
- Script PHP untuk Menampilkan Data dalam Tabel dengan Warna Baris Selang-seling
Share this article on:
Kata kunci: data - restrukturisasi - tabel -





artikel yang sungguh “melatih”, salam kenal ingin sekali berguru (“berdosen”) ke anda.
to taryono: salam kenal juga mas taryono… selalu ditunggu kunjungannya di blog ini ya
itu nulis kodenya pake plugin mysyntax ya mas?
to belajar seo: itu pake plugin WP-syntax
terima kasih pak, sangat membantu sekali caranya yg berikan….
salam kenal pak!! mau tanya nih, maklum masih awam banget.
1.Gimana y lakuin pencarian data dimana data yang dicari tersebut ditampilkan dalam bentuk format grafik.Kebetulan data’a banyak banget dan selalu terupdate.
2. Apa pak beda’a klow qta pke JpGraph, php/swf charts dan script yang anda buat sebelumnya?Lebih mudah yang mana yah buat saya yang masih awam?
3. Kenapa c apa yang qta buat di macromedia dreamwaver k’dang2 beda pas ditampilin di browser’a?apa krn tipe browser’a?
4. Untuk mahir php apa qta mesti ngapalin script’a?
Mav y pak nanya’a ngerampok.heee Mkc sblm’a
terimakasih atas pembagian ilmu nya itu sangat membantu saya dalam tahap pembelajaran berjuang…………………………………………….
Pak saya punya usul bagaimana jika dibuat judul jilid 2 tentang “Cara Cepat Merestrukturisasi Tabel dan Data” yang mana isi scriptnya kebalikan dari cara diatas, maksudnya jika permasalahan itu datang dari table_baru ke tabel_lama, bukan contoh kasus diatas dari table_lama ke tabel_baru.
to marko: usul dipertimbangkan..
Baru kali ini mampir
ternyata Manteb bin ajib
Selama ini kemana aja yah
Teruskan bagi-bagi pengalamannya yah
to roy@skuro: he 3x… sering2 maen ke sini ya.
blog sangat bermanfaat pa,klo boleh usul ,gman klo dari awal materimya pa,misal untuk bhasa program dari pengenalan bahasanya ,klo bisa bukunya berbahasa indonesia pa,terima kasih
@opik: untuk awal materi pemrograman sebenarnya dah tercover di buku2 yang banyak beredar di toko buku mas. Memang konsep awal blog ini adalah memberikan artikel pemrograman yang berfokus pada implementasi programming atau terapannya. Jadi langsung ke studi kasusnya, sesuai dengan jargon blog ini yang tertulis di atas ‘Ketika Pemrograman Tidak Sekedar Teori…’
Konsep inilah yang diusung dalam blog ini dimana kontennya tidak terdapat di buku manapun. Inilah keunikan dari blog ini mas
Mas mw nanya soalnya msh belajar alias newbie!!
saya ada 2 tabel kemudian saya ingin memindahkan data dari tabel1 ke tabel2,gmn caranya ya mas?
@arafir: strukturnya sama gak mas? kalo sama, anda bisa pake dump sql dari phpmysql nya. Tapi kalo beda (hanya beberapa field saja yang sama) baiknya pake script sendiri
Pak, saya ijin ngopy tutorial diatas ya….
@nn: silakan saja mbak, asal jangan lupa backlink nya ya…