Tuesday, 29 March 2016
Tuesday, 1 December 2015
BACK-END PROGRAMMING
BACK END
PROGRAMMING
Mengenal PL/SQL
PL/SQL (Procedural Language/Structured Query
Language) merupakan Bahasa pemrograman terstruktur di dalam SQL yang tersusun dalam blok-blok
logical, yang dapat menjalankan perintah-perintah untuk menyelesaikan masalah (di Oracle
disebut PL/SQL).
Secara singkat, PL/SQL menambahkan teknik
pemrograman terstruktur ke dalam SQL. PL/SQL digunakan dalam back end
programming, yang dibangun oleh SQL dan Bahasa prosedural. Jenis-jenis PL/SQL di
antaranya adalah anonymous block, stored program units (procedure, function,
package), dan trigger.
Kelebihan PL/SQL
adalah :
1. Performa lebih baik dan network traffic lebih rendah karena dijalankan di
database server
2. Integritas ketat, perintah-perintah SQL (memanipulasi data, transaksi,
dll) dijalankan
secara aman dan fleksibel
3. Produktivitas lebih tinggi, karena PL/SQL dapat menjalankan perintah
query di dalam blok procedural
4. Mendukung pemrograman berorientasi objek (OOP) dan mendukung pengembangan aplikasi
web dan server pages.
5. Keamanan ketat
6.
Dapat digunakan banyak
aplikasi (termasuk aplikasi eksternal)
Sifat-sifat PL/SQL (secara kode program)
1. Mirip bahasa pemrograman Pascal
2. Case insensitive (besar kecil karakter tidak mempengaruhi)
3. Strong typed, semua variabel harus dideklarasikan
Struktur Umum PL/SQL
§ Bagian deklarasi
Dimulai dengan perintah
DECLARE, berfungsi untuk mendeklarasikan variabelvariabel yang diperlukan di
dalam PL/SQL. Jika tidak memerlukan variabel, maka bagian deklarasi ini
dapat dihilangkan.
§ Bagian eksekusi
Bagian yang memuat
sintaks PL/SQL. Dimulai dengan perintah BEGIN. Sintaks dapat berupa pemilihan
(IF-THEN), perulangan (FOR, LOOP, WHILE), mengambil nilai select, cursor, dan
sebagainya.
§ Bagian eksepsi
Bagian yang memuat cara
menangani kesalahan-kesalahan atau error handling pada waktu eksekusi PL/SQL. Bagian
eksepsi juga dapat dihilangkan jika tidak diperlukan penanganan kesalahan dalam
PL/SQL
1. Anonymous Block
Merupakan blok PL/SQL tak bernama dan tak disimpan pada database,
tetapi pada Oracle Pre compiler. Anonymous block ini dijalankan dari dalam
aplikasi, pada runtime aplikasi akan mengirimkan anonymous bock PL/SQL pada
database oracle, di mana anonymous block tersebut di dicompile dan dieksekusi. Contoh :
DECLARE
v_counter
NUMBER(3);
BEGIN
v_counter
:= 0;
LOOP
INSERT
INTO deret1(nilai) VALUES (v_counter);
v_counter
:= v_counter + 1;
IF(v_counter
> 10) THEN
EXIT;
END
IF;
END
LOOP;
END;
2. Stored Procedure
Stored procedure merupakan salah satu jenis
PL/SQL yang memiliki kemampuan menerima parameter input, melakukan pengolahan
terhadap parameter input tersebut dan
menampilkannya. Stored procedure dapat memeiliki parameter input atau tidak memiliki parameter. Parameternya dapat
berupa input, output, dan gabungan input
output. Seperti halnya blok non-modular PL/SQL, stored procedure mampu
menangani pesan kesalahan yaitu
dengan Exception Handling. Stored procedure dapat digunakan secara stand-alone, digunakan bersama stored procedures lainnya,
atau dapat digunakan bersama stored
function. Contoh :
create or replace procedure
prc_contoh_1(v_batas IN NUMBER) AS
v_counter
NUMBER;
begin
v_counter
:= 0;
loop
insert
into deret1(nilai) values(v_counter);
v_counter
:= v_counter+1;
if
v_counter > v_batas then
exit;
end
if;
end
loop;
end prc_contoh_1;
/
3. Function
Function atau lebih sering disebut Stored
Function merupakan salah satu modul dari PL / SQL yang dapat mempermudah
melakukan pengolahan suatu nilai dan mengembalikan nilai tertentu. Jika kalian
sudah mempelajari Algoritma Pemograman maka Function ini tidak jauh berbeda
dengan Fungsi yang ada di Algoritma Pemograman, yang berbeda hanya struktural
syntax-nya saja. Contoh :
create or replace function l_function return number
as
nilai_maksimum
integer;
begin
select
max(nilai) into nilai_maksimum from latihan_function;
return
(nilai_maksimum);
end l_function;
/
4. Cursor
Cursor berfungsi untuk menangkap / mengambil
banyak data yang banyaknya telah ditentukan sesuai kebutuhan. Cursor digunakan
dalam script PL/SQL untuk menampilkan data yang tersimpan di dalam database.
Cursor biasanya digunakan dalam sebuah fungsi atau sebuah prosedur. Contoh :
create or replace procedure prc_latcursor as
v_nilai
latihan_cursor2.nilai%type;
v_komentar
latihan_cursor2.komentar%type;
cursor
c_nilai is select nilai from latihan_cursor2;
begin
open
c_nilai;
loop
fetch
c_nilai into v_nilai;
exit
when c_nilai%notfound;
if
v_nilai > 85 then
v_komentar
:= 'A';
elsif
v_nilai < 85 and v_nilai > 75 then
v_komentar
:= 'B';
elsif
v_nilai < 75 and v_nilai > 65 then
v_komentar
:= 'C';
elsif
v_nilai < 65 and v_nilai > 55 then
v_komentar
:= 'D';
else
v_komentar
:= 'E';
end
if;
update
latihan_cursor2 set komentar = v_komentar where nilai = v_nilai;
end
loop;
close
c_nilai;
end prc_latcursor;
/
5.
Trigger
Trigger merupakan suatu block PL/SQL yang
akan tersimpan didalam database. Trigger akan teraktivasi secara otomatis ketika terjadi suatu kejadian/event
(INSERT, DELETE, UPDATE) terhadap
table, view dan database. Biasanya Trigger digunakan untuk mengisi ataupun
mengubah nilai kolom dalam suatu
tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Contoh trigger
:
create or replace trigger pinjaman
after
insert
or delete or update on peminjaman
for each row
begin
if
inserting then
update
buku set stok = stok - :new.jumlah_buku where id_buku = :new.id_buku;
elsif
deleting then
update
buku set stok = stok + :old.jumlah_buku where id_buku = :old.id_buku;
elsif
updating then
update
buku set stok = stok + :old.jumlah_buku where id_buku = :old.id_buku;
update
buku set stok = stok - :new.jumlah_buku where id_buku = :new.id_buku;
end
if;
end;
XML
XML
XML (eXtended Markup Language) adalah bahasa markup
yang digunakan untuk menyimpan data (tidak ada program) dan tidak tergantung
dengan tools tertentu (seperti editor, dbms, compiler, dsb).
XML adalah merupakan suatu bahasa Markup. Markup yaitu bahasa yang
berisikan kode-kode berupa tanda-tanda tertentu dengan aturan tertentu untuk
memformat dokumen teks dengan tag sendiri agar dapat dimengerti. Perbedaan
antara XML dan HTML dan Perlu di ingat bahwa:
1. XML bukan merupakan pengganti HTML.
2. XML dan HTML yang dirancang dengan tujuan yang
berbeda:
3. XML dirancang untuk transportasi dan menyimpan
data, dengan fokus pada apa data.
4. HTML dirancang untuk menampilkan data, dengan fokus
pada bagaimana data terlihat.
Contoh XML :
<?xml version="1.0" encoding="ISO-8859-1"?>
<daftar_pengarang>
<pengarang>
<nama>budi
martami</nama>
<alamat>sarijadi
</alamat>
</pengarang>
<pengarang>
<nama>elfan
noviari</nama>
<alamat>gerlong</alamat>
</pengarang>
</daftar_pengarang>
Struktur Dokumen XML
Dokumen XML berisi
informasi dan markup yang dibagi menjadi beberapa bagian yang penting, yaitu :
§ Element
Masing-masing
dokumen XML berisi satu atau lebih elemen. Elemen mengenalkan dan menandakan
isi. Berikur contoh sebuah element.
<tag>Some text</tag>
§ Atribut
Atribut berfungsi sebagai
tambahan informasi tentang sebuah elemen. Atribut disimpan dengan tag pembuka
sebuah elemen setelah nama elemen. Contoh penulisan :
Ihikihikhik
</tagname>
§ Text
Text menggambarkan isi
informasi di antara tag pembuka dan pentutup elemen. Contoh :
<tag>INI
TEKS</tag>
§ Entitie
Entitie/entitas merupakan
shortcut dari teks yang umum. Jika dalam pemrograman bisa dibilang sebagai
konstantanya. Cara penggunaan :
<!ENTITY bm “Budi
Martami>
di XML-nya gunakan
&entity;
TRANSAKSI DAN CONCURRENCY
TRANSAKSI
& CONCURRENCY
Transaksi merupakan bagian dari pengeksekusian sebuah
program yang melakukan pengaksesan basis data dan bahkan juga melakukan
serangkaian perubahan data. DBMS yang
kita gunakan harus menjamin bahwa setiap transaksi harus dapat dikerjakan
secara utuh atau tidak sama sekali.
Tidak boleh ada transaksi yang hanya dikerjakan sebagian, karena dapat
menyebabkan inkonsistensi basis data.
Untuk itu transaksi selalu merubah basis data dari satu kondisi
konsisten ke kondisi konsisten lain. Pada saat kita mengeksekusi transaksi,
database bisa saja dalam keadaan tidak konsisten. Namun pada saat menemui level
commit(proses transaksi selesai dan terpenuhi), maka database harus terjamin
konsisten.
Tujuan dari transaksi adalah untuk melindungi database
dari kehilangan data atau pun kerusakan data. Contoh masalah yang terjadi
adalah sistem crash di tengah eksekusi program yang membuat database dalam
state yang tidak diketahui. Masalah lainnya yaitu
ketika ada dua program yang mengakses data yang sama dijalankan bersamaan
sehingga dapat saling menggangu.
Seperti telah kita singgung di atas tentang
commit, commit dapat disebut sebagai pemberi tanda bahwa transaksi telah
selesai. Update terahadap database dilakukan secara permanen. Adapun operasi
penting lainnya dalam transaksi adalah rollback. Rollback adalah pemberi tanda
bahwa dalam proses transaksi terjadi kesalahan. Maka semua update harus
di-undo.
Untuk menjamin agar integritas dapat tetap terpelihara
maka setiap transaksi harus memiliki 4 element berikut ini :
1.
Atomicity, imana
semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama
sekali.
- Consistency, dimana eksekusi transaksi secara tunggal harus dapat menjamin data
tetap konsisten setelah transaksi berakhir.
- Isolation, jika pada sebuah sistem basis data terdapat sejumlah transaksi yang
dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada
saat yang bersamaan tersebut harus dapat dimulai dan bisa berakhir.
- Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir
dengan baik, harus dapat bertahan bahkan jika seandainya sistem menjadi
mati.
Status-status yang dapat dicapai oleh sebuah transaksi
sejak mulai dilaksanakan hingga selesai atau batal adalah:
1. Aktif (Active), yang merupakan status awal (initial
state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil Sebagian (Partially Committed), yaitu
keadaan yang dicapai transaksi tepat pada saat operasi terakhir dalam transaksi
selesai dikerjakan.
3. Gagal (Failed), yang merupakan keadaan dimana sebuah
transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi
dianggap tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali
dengan mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang
menjadi tanggung jawab DBMS).
5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah
dinyatakan berhasil dikerjakan seluruhnya dan basis data telah merefleksikan
perubahan-perubahan yang memang diinginkan transaksi.
Sedangkan concurrency adalah sebuah mekanisme pada system
basis data yang mengijinkan banyak transaksi pada saat bersamaan untuk
mengakses data yang sama tanpa adanya gangguan. Agar setiap transaksi tidak
menggangu satu dengan yang lainnya, maka dibutuhkan Concurrency Control
Mechanism (CCM) .
Pada umumnya terdapat 3 masalah utama pada concurrency :
1.
Lost update problem, ketika dua user mengupdate dua buah data yang sama. Misalnya
§
Transaksi A membaca R pada waktu ke-2, transaksi B membaca R pada waktu ke-3.
§ Transaksi A
memodifikasi R pada waktu ke-4.
§ Transaksi B
memodifikasi record yang sama pada waktu ke-5.
§ Modifikasi
dari transaksi A akan hilang karena transaksi B akan memodifikasi R tanpa
memperhatikan modifikasi dari transaksi A.
2.
Uncommitted
dependency problem, ketika user yang satu me-retrieve data
dan user yang lain me-rollback data tersebut. Misalnya :
§ Transaksi A
membaca R pada waktu ke-3.
§ Pada saat
waktu ke-4 transaksi B dibatalkan.
§ Maka
transaksi A akan membaca record yang salah.
§
Pada waktu ke-2 transaksi A memodifikasi R
§ Karena
transaksi B dibatalkan pada waktu ke-5, maka transaksi A memodifikasi record
yang salah.
3.
Inconsistent analysis problem, ketika user yang satu meretrieve data dan user yang lain
mengupdate data tersebut.
§
Transaksi A menjumlah nilai 1, nilai 2 dan
nilai 3.
§
Transaksi B " nilai 1 + 10 ; nilai 3 - 10
§
Pada waktu
t8, transaksi A membaca nilai yang salah karena nilai 3 sudah
dimodifikasi menjadi 20 (transaksi B sudah melakukan commit sebelum transaksi A
membaca nilai 3).
Di atas kita menyinggung tentang
Concurrency Control Mechanism (CCM). Adapun CCM yang bisa dilakukan adalah
1.
LOCKING
Locking adalah
salah satu mekanisasi pengontrolan konkuren.
Konsep dasarnya adalah:
ketika suatu transaksi memerlukan jaminan kalau record yang diinginkan
tidak akan berubah secara mendadak, maka diperlukan kunci untuk record
tersebut.
Fungsinya kunci (lock) adalah dengan menjaga record
tersebut agar tidak dimodifikasi oleh transaksi lain.
Cara kerja dari kunci:
1. Pertama kita asumsikan terdapat 2 macam kunci:
·
Xlock : kunci yang eksklusif.
·
Slock : kunci yang digunakan bersama-sama.
2. Jika transaksi A menggunakan Xlock pada record R,
maka permintaan dari transaksi B untuk suatu kunci pada R ditunda, dan B harus
menunggu sampai A melepaskan kunci tersebut.
3. Jika transaksi A menggunakan Slock pada record R, maka:
·
Bila transaksi B ingin menggunakan Xlock,
maka B harus menunggu sampai A melepaskan kunci tersebut.
·
Bila transaksi B ingin menggunakan Slock,
maka B dapat menggunakan Slock bersama A.
Tabel Kunci:
X
|
S
|
-
|
X = Xlock
|
|
X
|
N
|
N
|
Y
|
S = Slock
|
S
|
N
|
Y
|
Y
|
N = No
|
-
|
Y
|
Y
|
Y
|
Y = Yes
|
4. - Bila suatu transaksi hanya melakukan pembacaan
saja, secara otomatis ia memerlukan Slock " baca (S)
- Bila transaksi tersebut ingin memodifikasi record maka
secara otomatis ia memerlukan Slock " memodifikasi (X)
- Bila transaksi tersebut sudah menggunakan Slock,
setelah itu ia akan memodifikasi record, maka Slock akan dinaikan ke level
Xlock.
5. Xlock dan Slock akan dilepaskan pada saat synchpoint
(synchronization point). Synchpoint
menyatakan akhir dari suatu transaksi dimana basis data berada pada state yang
konsisten. Bila synchpoint ditetapkan
maka:
·
Semua modifikasi program menjalankan operasi
commit atau rollback.
·
Semua kunci dari record dilepaskan.
Dengan menggunakan locking, maka tidak ada transaksi
yang akan kehilangan modifikasi. Tapi,
terdapat keadaan / masalah baru yaitu Deadlock, yaitu suatu kondisi dimana
ke-2 transaksi dalam keadaan menunggu, sehingga keduanya tidak akan pernah
selesai dieksekusi.
Jika pelepasan kunci terlalu cepat dilakukan, maka bisa
terjadi inkonsistensi informasi. Tapi
bila dilepas di akhir transaksi, bisa terjadi deadlock. Hal ini merupakan kondisi dilematis pada
sebuah sistem konkuren yang memanfaatkan mekanisme locking.
Mengatasi masalah
deadlock bisa dengan cara mendeteksi apa penyebab deadlock tersebut dan
pecahkan oleh kita. Cara yang lazim digunakan untuk mendeteksi deadlock adalah
dengan menemukan siklus di wait-for-graph. Selain itu kita juga bisa memaksa
salah satu permintaan untuk di rollback secara paksa.
index :
Subscribe to:
Posts (Atom)