Learn the Rules, Break The Rules, and Create the New Ones...

Hi... My name is Rizky Prihanto. You can call me RQ, or Rizky either. I am currently living on Bandung, Indonesia. Had a lot of works and research about Enterprise Information Systems (majoring on education and e-governments). I have bunch of interests (some friends call it 'freakz') about MySQL Opensource Database and now I am one of the administrator of MySQL Indonesia User Group - the opensource community initialized by Sun Microsystems Indonesia.

My Company PT Cinox Media Insani, Bandung, Indonesia. I work here since 2008 and I take responsibility as Chief of Software Architect. My job is about planning, imaginating, fantasy-ing, concepting, and build the infrastructure of the new information systems (or app engines) which going to be implemented.

This blog This is my blog that represent my current opinion, research and experiences about anything in Software Engineering. Written since 2007 (actually) and has been vaccum for a lot of while. And now I wanna ressurrect this blog (optimistically) from the long-long-hibernation with something fresh and new ideas -- still about MySQL, software engineering, development, and may be something managerial here.

About the tagline I've learned the statement above from some paper written by Kent Beck about Extreme Programming (XP) methodology -- some sort of practical software development methods which have no boundaries. That's very inspiring me a lot. I have written some article on this blog that tell my interpretation about that statement here.

My Another Blogs I have classifying my blogs into some sort of genre. The blog that you read here right now is my primary blog that tell you (majoring) about IT stuff. But if you wanna look another side of me, you can visit here, here, here,or here. Hope it'll be interesting for some of you.

Credits I would thanks to Blogger for this great blog platform. Skinpress who designed this Wordpress template (which is bloggerized by Free Blogger Templates). My appreciate is also going to you who give your generously time for visiting my blog.

Mempergunakan Stored Procedure

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 :

  1. 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.
  2. 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.
  3. 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:

Vyor mengatakan...

Saya Tertarik dengan tulisan ini. Silahkan kunjungi blog saya :
http://vyor.wordpress.com
Semoga kita bisa saling belajar dan berkreasi.

Posting Komentar