Keunggulan Stored Procedure dibandingkan dengan adhoc query

Keunggulan penggunaan Stored Procedure dibandingkan adhoc query

Dokumen ini membahas keunggulan penggunaan stored procedure pada DBMS pada umumnya dan MS SQL Server 2k pada khususnya ditinjau dari berbagai aspek seperti kinerja, transparansi, keamanan, fleksibilitas terhadap perubahan proses bisnis, scalabilitas dan ekonomi.

• Kinerja

o Execution plan pada stored procedure sudah dibuat pada saat procedure itu dikompilasi jadi hanya terjadi 1 kali. Berbeda dengan adhoc query terutama dengan query tanpa parameter (tanpa simbol @ pada SQL Serverr). Query adhoc dikompilasi (dibuat parse tree dan query tree) secara realtime, terutama jika query tersebut tidak ada di procedure cache.

o Stored procedure dapat dipin(ditandai) di memori. Artinya sebuah sp dapat dipaksa untuk tetap berada di memori fisik meskipun dbms membutuhkan memori tambahan. Akibatnya operasi swaping in & swapping out sp dapat diminimalkan terutama untuk sp yang sering dipakai. Sebagai catatan dengan harga memori yang makin murah (relatif dalam US $) maka opsi pin ini semakin atraktif

o Query select pada SP dapat diatur menggunakan format tertentu sehingga index dapat digunakan untuk query.

o SP dapat digunakan untuk membatasi jumlah record yang dikirim ke client. Hal ini dapat mengurangi beban jaringan. Hal ini akan sangat mempercepat karena bottle neck utama di applikasi database terletak di jaringan.

o SP terletak di DBMS sehingga untuk proses yang membutuhkan data banyak, round trip untuk permintaan data sampai data itu diterima dapat ditiadakan.

• Transparansi dan skalabilitas
Transparansi ekivalen dengan information hiding di konsep pemograman OO.

o Mendukung ANSI model terhadap database. Ansi model adalah sebuah model database yang memodelkan penglihatan user terhadap database menjadi 3 komponen yaitu user view, logical view dan fisikal view. User view ekivalen dengan perintah select. Logical view ekivalen dengan ERD atau LDS (logical data structure) dan fisikal view ekivalen dengan implementasi tabel di database. Dengan adanya sp maka app user view dapat dibuat sesetabil mungkin meskipun tabel penyusunnya berubah. Perubahan terhadap applikasi client dapat dihindari pada kasus kasus di bawah ini :

 Partisi tabel baik secara vertikal , horisontal dan gabungan
Partisi adalah proses pembagian sebuah tabel yang sudah normal menjadi beberapa tabel yang normal. Tabel normal adalah tabel hasil normalisasi.
Misalkan kita punya tabel pelanggan (pelangganid, nama, alamat, kota, propinsi, tanggallahir, jeniskelamin,telepon).
Partisi vertikal ekivalen dengan select pelangganid,nama from pelanggan. Partisi horisontal ekivalen dengan select

* from pelanggan where kota=xxx.
Pertimbangan untuk melakukan partisi dilakukan dengan memperhatikan :

• Frekuensi akses (select) terhadap tabel
Jika user sering mengakses pelangganid,nama dan telepon maka sebaiknya tabel pelanggan dipartisi menjadi 2 yaitu pelanggan_part1 (pelangganid,nama,telepon) dan pelanggan_part2 (pelangganid, alamat, kota, propinsi, tanggallahir, jeniskelamin). Ukuran table pelanggan_part1 akan jauh lebih kecil dibanding dengan tabel pelanggan_part2 dan pelanggan sehingga proses query select akan lebih cepat. Untuk lebih jelasnya dapat dibaca di buku Database system concept karya henry korth bab 12 tentang perhitungan query cost.

• Lokasi user yang mengakses tabel
Misalkan database tersebar dimana user di kota x hanya bisa melihat data pelanggan kota x maka tabel dapat dipartisi secara horisontal

 Transformasi dari single server ke multi server (distributed database)
Sudah dijelaskan pada point transparasi horisontal

 Normalisasi dan denormalisasi tabel
Untuk meningkatkan kinerja atau membenahi struktur tabel maka proses normalisasi dan denormalisasi dapat dilakukan. Selama interface sp yang digunakan untuk mengakses tabel tidak berubah maka applikasi client tidak perlu berubah. Interface sp yang dimaksud adalah nama sp, jumlah parameter sp, urutan parameter dan tipe data parameter.

• Keamanan
o SP mencegah terjadinya SQL injeksion. SQL injeksion adalah sebuah aksi hacking yang dilakukan di applikasi client dengan cara memodifikasi perintah SQL yang ada di memori applikasi client. Untuk melakukan hal ini dapat digunakan progam seperti softice.

o Hak akses sp terhadap data di database bergantung pada hak akses pembuatnya bukan bergantung pada hak akses pengguna sp. Hal ini memungkinkan user applikasi untuk tidak diberi hak akses terhadap semua tabel yang ada namun diberi hak akses untuk menjalankan sp. Akibat penggunaan mekanisme ini adalah enforcement terhadap aktifitas user (select, inser, update, delete) tersentralisasi bahkan untuk applikasi seperti query analyzer tidak akan bisa digunakan untuk mengakses data secara tidak sah

o Penggunaan SP mendukung penggunaan application role. Application role adalah sebuah role di SQL server 2k dimana role ini tidak memiliki pengguna. Mekanisme ini merupakan mekanisme standard yang disarankan oleh Microsoft untuk membuat applikasi database berbasis SQL server 2k. Keunggulan penggunaan application role ini adalah dengan menggunakannya maka hanya app kita yang bisa mengakses database applikasi lain tidak bisa kecuali user memakai login yang berrole sysadmin.

o Perlindungan hak cipta. SP dapat dienkript sehingga proses tidak dapat dibajak orang dengan mudah

o Memungkinkan manual audit yang sangat baik. Manual audit didefinisikan sebagai audit dimana mekanisme pencatatan log dilakukan oleh applikasi bukan dbms. Memang manual audit dapat dilakukan tanpa penggunaan SP namun manual audit dapat dibypass misalkan dengan menggunakan query analyzer. Dengan SP dan fasilitas application role maka mekanisme manual audit dapat dienforce setiap saat.

• Fleksibilitas terhadap proses bisnis
o SP tersimpan di server. Modifikasi jadi mudah dilakukan dan dengan cepat

• Ekonomi
o SP menyediakan 1 pintu masuk untuk proses data entri. Applikasi client tinggal mengaksesnnya. SP dibuat 1 kali dan bisa diakses oleh applikasi client yang berbeda-beda. Efesien dan murah

Referensi :
• Database system concept karya henry korth
• MS SQL Server 2k BOL
• Microsoft SQL Server 2000 Unleashed, 2nd Edition
• Quest SQL Server XpertKnowledge
• Database security karya silvana castano
• Principles Of Distributed Database System

One Response to Keunggulan Stored Procedure dibandingkan dengan adhoc query

  1. HARRY says:

    sya.punya query:
    select a.berita_id,a.judul,a.berita,coaleske(count(b.komentar_id),0)as total_komentar
    from berita a,komentar b
    where a.berita_id=b.berita_id(+)
    group by a.berita_id,a.judul,a.berita
    order by berita_id desc;
    nah query diatas kalo dirubah ke bntuk subquery gmn sntak nya? sya pngen bndgin cost nya! trus ad g referensi yg ngebahas cara ngitung cost dr query yg dieksekusi? dan komponen harga utk eksekusi query, sprti access cost, storage cost?

Leave a comment