Jumat, 31 Mei 2013

Membuat Aplikasi Modular secara Dinamis Aplikasi yang bersifat modular sebenarnya tidaklah asing saat ini, dengan memecah kompleksitas software ke dalam sejumlah modul akan memudahkan developer memaintain lifetime aplikasi yang dibuatnya secara lebih baik, hal ini karena developer dapat lebih memfokuskan permasalahan pada modul-modul yang ada. Delphi secara RAD sebenarnya sudah mempermudah developer untuk menyusun aplikasi ini sebagai modul-modul yang disusun baik dengan memanfaatkan TDataModule ataupun TForm. Namun seringkali pula kita terjebak dalam proses pangil memanggil modul satu dengan modul yang lain yang biasanya dilakukan secara langsung seperti contoh berikut:
unit Function; interface uses Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; function Show_Modal(namaform:TForm); function Show_Form(namaform:TForm); implementation function Show_Modal(namaform:TForm); begin with namaform.Create(Self) do try ShowModal; finally Free; end; end; function Show_Form(namaform:TForm); begin with namaform.Create(Self) do try Show; finally Free; end; end; end.
Pemanggilan Procedure Use Unit Function
Show_Modal(form1); show_normal(form2);
Tidak salah sebenarnya, namun proses panggil memanggil seperti ini menjadikan aplikasi menjadi kompleks, karena modul pemanggil sebagai aplikasi utama harus menyertakan pula unit atas modul-modul yang akan dipanggil. Program berskala yang lebih besar semacam dan kompleks akan melibatkan puluhan, ratusan, atau bahkan ribuan modul di dalamnya, apakah untuk program semacam ini semua modul tersebut harus disertakan? tentunya akan lebih baik bila modul-modul itu dapat dipanggil secara dinamis dan otomatis oleh pemanggil dengan mudah. Kita cukup membuat modulnya, meregistrasikannya, dan recompile. Aplikasi utama akan secara otomatis menampilkan modul baru tersebut.
Transact SQL di Delphi Hal paling vital dalam sebuah program database adalah bahwa setiap data dapat tersimpan dengan sempurna. Aplikasi desktop tidak banyak masalah untuk menangani hal ini. Namun seringkali jika aplikasi yang berjalan dalam jaringan atau internet, seringkali gagal menangani hal ini. Misalnya ada sebuah tombol simpan didalamnya mengeksekusi 7 buah perintah sql update, kadangkala hanya sebagian perintah sql yang dapat tereksekusi jikalau jaringan sedang bermasalah. Sehingga program menjadi error. Dan datanya tidak sinkron. Bagaimanakah solusinya? jika kita menggunakan Delphi. Gunakan transact Sql. Yang mendukung transact sql adalah database mysql4 keatas, sql server, oracle dsb. Tidak semua database mendukung transact sql. Transact SQL menjamin sekumpulan sintak sql tereksekusi, tetapi jikalau salah satu gagal maka sintak sql tersebut digagalkan semua, sehingga keadaan data masih sinkron. Contoh sintak di delphi if not dm1.Database1.InTransaction then dm1.Database1.StartTransaction; try //perintah sql dm1.Database1.Commit; except qryrec.CancelUpdates; dm1.Database1.Rollback; raise; Showmessage('Maaf Proses penyimpanan Gagal'); exit; end; Selamat mencoba bagi yang belum mencoba
Normalisasi Vs Database Flate Dalam kuliah dalam membuat database selalu ditekankan agar database tersebut dinormalisasi terlebih dahulu. Bahkan ada dosen yang mengajarkan kalo tidak ternormalisasi penuh maka data akan lambat. Memang bukunya pun bilang begitu Berikut kutipan dafinisi Normalisasi dan Tujuannya dari berbagai sumber : Normalisasi adalah suatu teknik untuk mengorganisasi dalam tabel-tabel untuk memenuhi kebutuhan dalam suatu organisasi. Tujuan dari normalisasi -Untuk menghilangkan kerangkapan data -Untuk mengurangi kompleksitas -Untuk mempermudah pemodifikasian data -Untuk mempercepat akses data Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data / database, teknik pengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). Proses normalisasi akan sangat membantu dalam menghemat ruang yang digunakan oleh setiap tabel di dalamnya, sekaligus mempercepat proses permintaan data. Semuanya betul. Tetapi ketika kita membangun aplikasi client/server atau Web dengan data yang besar Aturan normalisasi digunakan tetapi jangan dipaksakan memenuhi bentuk normal, sesuai yang ada diteori. Kenapa? Karena hasil dari normalisasi penuh kadang tabelnya terlalu banyak dan jika membutuhkan suatu data yang kompleks untuk laporan harus join tabel kemana-mana, apabila data sudah diatas 100ribu record maka lama banget keluarnya. Solusinya : 1. Database dibuat fleksibel, tidak harus normalisasi penuh, menganalisa kolom-kolom yang sering dipakai untuk laporan agar dibuat dalam satu table. Sehingga pada saat query untuk laporan data tidak harus join kemana-mana cukup 1 atau 2 table saja. Dan hasilnya akan lebih cepat. 2. Datawarehousing, menciptakan table-table yang siap dipakai untuk Laporan yang diambil dari table-table transaksi. Proses pemindahan ke table-table tersebut bisa batch(per jam / per hari) atau realtime Efeknya dengan normalisasi tidak penuh maka kadang ada proses update lebih dari 1 table. Gimana jikalau ada gagal dalam update, yang satu sudah ke update yang lain belum, bisa kacau?? itulah fungsinya penggunaan fasilitas Transact SQL yaitu update data kebanyak table dalam suatu waktu. Jika yang satu gagal maka semua proses update di rollback (digagalkan semua) sehingga data menjadi lebih konsisten