Stored procedure adalah prosedur-prosedur operasi yang ditempatkan di dalam database server. Umumnya, stored procedure ditulis dalam SQL. Stored procedure ini sangat penting dalam sistem database client-server karena menempatkan prosedur di dalam server berarti prosedur itu dapat tersedia untuk semua client. Dan ketika prosedur tersebut diubah atau dimodifikasi, semua client akan mendapatkan versi terbarunya secara otomatis (tanpa perlu diadakan update aplikasi client). Stored procedure selain bersifat terintegrasi dengan server juga sudah terkompilasi, sehingga pemrosesan kode yang terjadi di dalam stored procedure akan berlangsung lebih cepat dibandingkan dengan mengeksekusi beberapa statement SQL secara sekuensial.
Pendefinisian stored procedure pada DBMS Engine masih termasuk tahap pendefinisian DDL (Data Definition Language). Ciri utama query SQL termasuk ke dalam DDL adalah dengan penggunaan keyword CREATE, ALTER atau DROP. Kedudukan CREATE PROCEDURE, CREATE FUNCTION, maupun CREATE TRIGGER setara dengan proses pendefinisian DDL yang paling umum dipergunakan, CREATE TABLE – yang mana dalam konteks pembahasan pengembangan sistem pada umumnya, fase pendefinisian DDL ini termasuk dalam siklus desain sistem dalam System Development Lifecycle (SDLC).
Gambar di bawah ini adalah pengilustrasian sederhana dari lalu-lintas transaksi query yang berada pada sisi server dengan transaksi query pada sisi client melalui interface pemrograman.
Seperti terlihat pada gambar di atas, pemrosesan query pada sistem yang menerapkan stored procedure sangat menghemat lalu-lintas pengiriman query dari program aplikasi di sisi client kepada DBMS Engine. Jumlah query yang dikirimkan hanya satu, yaitu pengeksekusian procedure. Berbeda jauh dengan pemrosesan query yang dilakukan tanpa stored procedure – melainkan mengandalkan programming pada sisi client – dimana jumlah query yang dikirimkan sangatlah banyak bergantung pada kontrol perulangan (loop) yang dieksekusi.
Dalam konteks proses pengembangan sistem, mempergunakan stored procedure memberikan beberapa keuntungan tersendiri, antara lain adalah :
- Mempermudah pemeliharaan kode. Ketika semua kode SQL tersentralisasi di server, penanganan jika terjadi kesalahan akan lebih mudah dimana perubahan-perubahan rule pada definisi proses yang ada dapat di-apply seketika dan mempengaruhi seluruh aplikasi client yang mempergunakannya, tanpa perlu melakukan implementasi dan distribusi aplikasi ulang.
- Manajemen utk keamanan data juga lebih ringan. Apalagi di stored procedure bisa dilakukan pembatasan hak akses. Disamping itu, penggunaan stored procedure secara tidak langsung TIDAK MEMBERIKAN akses kepada user yang connect "langsung" ke tabel. Jadi, bisa meminimalisir injeksi SQL. Apalagi jika komunikasi data dari client ke server mempergunakan komponen koneksi yang khusus disediakan untuk stored procedure (ADO Stored Procedure, misalnya), bukan mengirimkan native SQL syntax. Mo di sniff, monggo... informasi yang didapat sama sniffer akan minimal sendiri.
- Bagi programmer, terutama jika proses konstruksi sistem dilakukan secara tim dan pipelining, dengan memanfaatkan stored procedure dalam pengembangan aplikasi, programmer-programmer tidak perlu pusing-pusing memahami logika alur sistem, memahami semua tabel-tabel dalam database, karena sudah ada staf khusus yang menanganinya.. Kalo menurut Whitten sih (dengan bahasa tinggi) : stored procedure mengeliminasi kebutuhan programmer aplikasi untuk membuat logika ekuivalen di dalam setiap aplikasi yang menggunakan tabel.
Mungkin buat membangun aplikasi kecil, simpel, dikerjakan seorang diri - membangun aplikasi dengan melibatkan stored procedure ini adalah hal yang membuang-buang waktu. Kurang efektif. Benar tuh! Emang. Tetapi bayangkan, kalau dalam pengembangan aplikasi prosesnya dibagi jadi beberapa fase (cerita tentang fase ini dan model pipelining, aku ceritakan di artikel lain aja ahh..):
- Requirement Analysis
- Feature & Technical Specification Design (termasuk ERD)
- Developing Graphical User Interface
- Build Database Queries (termasuk stored procedure di sini)
- Integrating GUI & Queries
- Testing & Optimizing
- Deploy
Apa kerjaan programmer? Hanya di Integrating GUI & Queries serta Testing & Optimizing... Bekerja dalam tim yang begituan, bener-bener merupakan SURGA buat programmer.. life is easy... Karena fokus dia cuman mengintegrasikan form-form yang udah dibuat seindah mungkin sama designer dengan query-query yang udah dibuat sama databaser, dan tuntutan besar dia adalah menghasilkan aplikasi yang benar-benar teroptimasi, zero defect kalo perlu!
Intinya, memanfaatkan stored procedure dalam membangun suatu aplikasi yang dikembangkan dalam tim (bukan sendirian), sangat-sangat-sangat bermanfaat deh.. Apalagi jika aplikasi tersebut cakupannya luas, fitur cukup kompleks, manfaat yang dirasakan bukan di awal fase... tetapi kelak ketika proses deployment berlangsung dimana tuntutan harus me-maintain aplikasi, refactor, dan lain-lain sangat besar. Kata orang doeloe, yang paling penting kan siapa yang tertawa paling terakhir...
1 comments:
Saya Tertarik dengan tulisan ini. Silahkan kunjungi blog saya :
http://vyor.wordpress.com
Semoga kita bisa saling belajar dan berkreasi.
Posting Komentar