----- Original Message ----- From: "raf raf" <[EMAIL PROTECTED]>
To: <tanya-jawab@linux.or.id>
Sent: Friday, July 04, 2008 3:50 PM
Subject: [tanya-jawab] MyIsam - InnoDB (was: Re: [tanya-jawab] Tanya PHP)




Foreign Key dan transaction memang wajib, tapi bisa ada di db, bisa juga di aplikasi. Dari pengalaman, walaupun foreign Key dan transaction sudah ada di db, aplikasi toh masih tetap perlu implementasikan itu. Contoh, sebelum input data, biasanya user selalu diberikan list untuk dipilih (misal: daftar nama propinsi) dan sistem akan merekam kodepropinsinya untuk diinput. Lalu pada saat retrieve data, aplikasi juga tetap harus baca nama propinsi (tidak cukup hanya mengoutputkan kodepropinsinya saja) sehingga walaupun foreignkey salah, outputnya tetap "benar". Lalu jika saat data coba diinput dan ternyata foreign_key-nya salah, apa aplikasi cukup do nothing dan biarkan db yg tangani? Gmn dengan errornya? Kenyataannya, aplikasi tetap harus cek ulang ke db apakah error yang terjadi itu akibat kesalahan foreign key ato sebab-sebab yang lain. Jadi, secara sederhana, Foreign Key dan transaction itu tetap harus ditangani di aplikasi (bisa jg dikombinasikan dengan stored-procedure utk membuat proses atomic). Tapi kalau ingin tambah mantap, ya memang paling low level ada di db. Anyway, transaction di dbpun juga tidak bisa mengatasi masalah hardware yang tiba2 rusak (ini justru yang sering terjadi).

Sebaiknya RDBMS yang accept, verify, dan store data. Bukan Aplikasi. Aplikasi tunggu hasilnya OK atau CatchException. M di RDBMS adalah 'Management'. Untuk yang "foreignkey salah tapi outputnya benar", biasakan untuk tidak menggunakan VARCHAR ;-)
Sebaiknya lho, tidak ada pemaksaan ;-)


Untuk MyIsam, performancenya jauh lebih cepat karena tidak perlu ada foreignKey dan transaction. Tapi MyIsam justru support clustering (mulai MySQL versi 5.1 atau 5.0) sementara Innodb tidak. Dengan clustering, masalah hardware yang tiba2 rusak dapat ditangani secara automatic tanpa harus men-downkan db. Dan sepertinya MySQL AB sejak awal sampai sekarang memang lebih prefer MyIsam daripada Innodb. Dari awalan "My" saja kan sudah kelihatan:)

Clustering adalah fitur di luar scope RDBMS, bukan salah MyISAM kalo MySQL AB tidak menyediakan clustering. Point saya adalah, "good database management requires transaction", kalau tidak, maka terjadilah apa yang terjadi pada anda, membangun fungsionalitas (yang belum tentu proven) yang semestinya disediakan RDBMS sebagai standar layanan.


Regards,

Rizky




--
FAQ milis di http://wiki.linux.or.id/FAQ_milis_tanya-jawab
Unsubscribe: kirim email ke [EMAIL PROTECTED]
Arsip dan info milis selengkapnya di http://linux.or.id/milis

Kirim email ke