Sunday, November 29, 2015

Back End Program

BACK END PROGRAM



Back-End programming adalah program yang berjalan pada database secara otomatis ketika terjadi suatu pemicu tertentu. Dalam oracle ada beberapa metode untuk melakukan back end programming, yaitu dengan trigger dan stored procedure.

Procedure

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.

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.

Parameter pada stored procedure
·         IN: digunakn untuk menerima dan menyimpan nilai inputan dari luar stored procedure
·         OUT: digunakan untuk menyimpan nilai hasil proses dari stored procedure yang akan ditampilkan
·         INOUT: dapat berfungsi sebagai IN dan OUT

Contoh :
create or replace procedure prc_contoh_parameter_1
(v_sampai_dengan IN integer,v_keluar OUT integer ) as
        v_counter INTEGER;
begin
        v_counter :=0;
        loop
              insert into deret1(nilai) values (v_counter);
              v_counter := v_counter +2;
              if(v_counter > v_sampai_dengan)then
                      exit;
              end if;
         end loop; v_keluar :=v_counter;
end prc_contoh_parameter_1;



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.

Manfaat Trigger

Dengan menggunakan Trigger intergritas data serta konsistensi data dapat terjaga dan juga dapat mencegah terjadinya transaksi yang tidak valid. Selain itu standarisasi (penyeragaman) terhadap proses juga dapat tercapai karena Trigger dibuat satu kali dan tersimpan didalam database, sehingga setiap operasi yang dilakukan oleh siapapun terhadap sistem tersebut akan menggunakan Trigger yang sama.

Struktur Dasar Trigger

Untuk membuat Trigger pada Oracle telah disediakan statement CREATE TRIGGER yang selanjutnya dapat digunakan untuk kejadian tertentu. Secara umum terdapat 2 waktu agar sebuah Trigger dapat teraktivasi, yaitu :

1. BEFORE
Waktu dimana sebuah Trigger akan aktif sebelum terjadinya suatu proses DML pada
suatu tabel. Dapat dibagi menjadi :
·         BEFORE INSERT : Trigger akan aktif sebelum kejadian insert pada suatu tabel.
·         BEFORE UPDATE : Trigger akan aktif sebelum kejadian update pada suatu tabel.
·         BEFORE DELETE : Trigger akan aktif sebelum kejadian delete pada suatu tabel.

2. AFTER
Waktu dimana sebuah Trigger akan aktif sesudah proses DML pada suatu tabel
dilakukan. Dapat dibagi menjadi :
·         AFTER INSERT : Trigger akan aktif sesudah kejadian insert pada suatu tabel.
·         AFTER UPDATE : Trigger akan aktif sesudah kejadian update pada suatu tabel.
·         AFTER DELETE : Trigger akan aktif sesudah kejadian delete pada suatu tabel.

Struktur Penulisan Trigger


Penjelasan



Contoh :

create or replace trigger nambah
after
insert or delete or update on mahasiswa
for each row
begin
if deleting then
       update dosen set jumlah_wali = jumlah_wali - 1 where nip_dosen = :old.id_wali;
end if;
            
if updating then
   begin
             update dosen set jumlah_wali = jumlah_wali + 1 where nip_dosen = :new.id_wali;
             update dosen set jumlah_wali = jumlah_wali - 1 where nip_dosen = :old.id_wali;
end if;
end;
/
Referensi :
- Modul Praktikum Sistem Basis Data 2014.
- Hand Out Sistem Basis Data: Stored Procedure dan Trigger oleh Yudi Wibisono, MT
- http://aaunul.blogspot.co.id/2013/05/keamanan-basisdata-keamananbasis-data.html
- https://simbuda.wordpress.com/2013/05/19/back-end-programming-xml-dan-keamanan-data/

XML (Extensible Markup Language)

XML



XML (Extensible Markup Language) adalah bahasa markup untuk keperluan umum yang disarankan oleh W3C untuk membuat dokumen markup keperluan pertukaran data antar sistem yang beraneka ragam. XML merupakan kelanjutan dari HTML (HyperText Markup Language) yang merupakan bahasa standar untuk melacak Internet. XML didesain untuk mempu menyimpan data secara ringkas dan mudah diatur. Kata kunci utama XML adalah data (jamak dari datum) yang jika diolah bisa memberikan informasi. XML menyediakan suatu cara terstandarisasi namun bisa dimodifikasi untuk menggambarkan isi dari dokumen.[4] Dengan sendirinya, XML dapat digunakan untuk menggambarkan sembarang view database, tetapi dengan suatu cara yang standar.

Tipe File XML :

§ XML, merupakan standar format dari struktur berkas (file).
§ XSL, merupakan standar untuk memodifikasi data yang diimpor atau diekspor.
§ XSD, merupakan standar yang mendefinisikan struktur database dalam XML.

Kelebihan XML :

§ Pintar (Intelligence). XML dapat menangani berbagai tingkat (level) kompleksitas.
§ Dapat beradaptasi. Dapat mengadaptasi untuk membuat bahasa sendiri. Seperti Microsoft membuaat bahasa MSXML atau Macromedia mengembangkan MXML.
§ Mudah pemeliharaannya.
§ Sederhana. XML lebih sederhana.
§ Mudah dipindah-pindahkan (Portability). XML mempunyai kemudahan perpindahan (portabilitas) yang lebih bagus.

Contoh :

            <pesan>
<dari>MIS Manager</dari>
<buat>HRD Manager</buat>
<buat>Bagian rekrut</buat>
<buat>Computer Suport team</buat>
<subyek>Permohonan Tenaga kerja baru</subyek>
<isi>Mohon diberikan tenaga kerja baru untuk mengisi lowongan di Departemen MIS</isi>
</pesan>

pada contoh diatas <pesan>, <dari> <buat>,dan <isi> bukanlah tag standard yang telah di tetapkan dalam XML. Tag-tag itu kita buat sendiri sesuai keinginan kita. Sampai di sini XML tidak melakukan apapun. Yang ada hanyalah informasi yang di kemas dengan tag-tag XML. 

Referensi :

- http://ajidotnet.wordpress.com/2008/08/06/apakah-xml-itu/
- http://adibowo.com/apa-itu-xml/

Transaksi dan Concurrency

TRANSAKSI & CONCURRENCY



1.      Transaksi

Transaksi merupakan aktivitas yang dilakukan oleh suatu program aplikasi yang berfungsi untuk menjaga konsistensi keamanan data. Tujuan dari transaksi yaitu untuk melindungi database dari kehilangan / kerusakan data.Transaksi memiliki 4 elemen untuk menjaga integritas data. Adapu 4 elemen tersebut :
·         Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidaksama sekali.
·         Consistency,  dimana  eksekusi  transaksi  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 mati.

Dua Operasi Penting Transaksi :

·         Commit
Memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).
·         Rollback
Memberi tanda bahwa transaksi GAGAL.

2.      Concurrency

Concurrency adalah banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu. DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama. Concurrency Control Mechanism (CCM) dibutuhkan agar transaksi tidak saling “menggangu”.

Adapun 3 masalah concurrency adalah :

·         Lost Update Problem


·         Uncommitted Dependency Problem


·         Incosistent Analysis Problem



Locking

Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu

Jenis Lock
·         Exclusive Lock (Xlock) atau write lock yaitu locking yang hanya bisa di gunakan untuk mengupdate dan membaca transaksi
·         Shared Lock (Slock) atau read lock yaitu locking yang hanya bisa di gunakan untuk membaca transaksi.

Contoh kasus dari locking :
·         Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.
·         Jika transaksi A memegang Slock pada record R maka:
          –    Permintaan Xlock trans. lain pada R ditolak
          –    Permintaan Slock trans. lain pada R diterima

Data Access Protocol
·         Transaksi yang ingin  mengambil nilai sebuah record  (retrieve) harus mendapat Slock pada record tersebut
·         Transaksi yang ingin mengupdate, harus mendapat Xlock

Contoh kasus :
·         Jika lock dari transaksi B ditolak karena konflik dengan lock yang dimiliki transaksi A, transaksi B masuk ke wait state sampai lock milik A dibebaskan.
·         Xlock dan Slock dipegang sampai transaksi selesai (COMMIT atau ROLLBACK).

Lost Update Problem dengan LOCK


Uncommitted Dependency Problem dengan LOCK


Incosistent Analysis Problem dengan LOCK


Dead Lock

Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Contoh Deadlock

Penanganan Deadlock
·         Deteksi dan pecahkan deadlock
·         Deteksi deadlock > wait-for-graph
·         Pecahkan deadlock > salah satu dirollback paksa (bagaimana penanganan rollback ini?)
·         Ostrich Algorithm  > diabaikan

Referensi :
- Modul 10554_pengantar_basis_data.pdf
- Hand Out Sistem Basis Data: Transaksi & Concurrency oleh Yudi Wibisono, MT
- https://prithaangelina.wordpress.com/2013/05/19/concurrency/
- http://perdiarief.blogspot.co.id/2014/11/praktikum-simbada-transaksi.html
- http://nfirdausi.blogspot.co.id/2014/04/transaksi-simbada.html

Integritas Data

INTEGRITAS DATA


Pengertian integritas data secara luas mengacu pada kepercayaan dari sumber daya suatu sistem. Integritas data sangat penting karena dapat memastikan keakuratan, konsistensi, aksesibilitasi, dan kualitas tinggi dari sebuah data, sehingga sangat penting untuk mengikuti aturan pengintegritasan suatu data. Data yang mempunyai integritas identik di pertahankan selama operasi apapun (seperti bisnis transfer, penyimpanan, atau pengambilan). Secara sederhana dalam istilah bisnis, integritas data adalah jaminan bahwa data konsisten, bersertifikat dan dapat dirujukan.
Contoh :
Dari mekanisme integritas data adalah hubungan orang tua dan anak dengan record terkait. Jika dalam catatan orang tua memiliki satu atau lebih dari catatan anak terkait semua proses integritas referensial akan ditangani oleh database itu sendiri, yang secara otomatis menjamin keakuratan dan integritas data sehingga tidak ada catatan anak bisa ada tanpa orang tua (atau disebut juga yatim piatu) dan bahwa tidak ada orangtua kehilangan catatan anak mereka. Ini juga menjamin bahwa tidak ada catatan induk dapat dihapus sementara orangtua memiliki record setiap anak. Semua ini ditangani pada tingkat database dan tidak memerlukan coding cek integritas ke dalam setiap aplikasi.
Integritas Data dapat Di kelompokan menjadi 2 bagian :
1. Integritas data yang berada dalam relasi, yaitu integritas entitas dan integritas domain.
2. Integritas yang berada di luar relasi, yaitu integritas referensial
Selain itu ada juga integritas yang ditentukan sendiri di dalam suatu perusahaan, yaitu integritas perusahaan (Enterprise integrity/ user Defined Integrity).
Secara garis besar integritas data dalam model relasional meliputi :
1. Integritas Entitas
2. Integritas Domain
3. Integritas Referensial
4. Integritas Enterprise
INTEGRITAS ENTITAS
Integritas entitas mendifinisikan sebuah baris sebagai sebuah entitas yang unik untuk suatu tabel. Dalam integritas entitas, tidak ada baris yang di duplikat didalam suatu tabel.
Contoh :
create table Pembelian (
IDPembelian smallint,
IDmodel smallint,
DeskripsiModel varchar (40),
Primary Key (IDPembelian)
);
INTEGRITAS DOMAIN
Domain adalah nilai-nilai yang dimungkinkan diasosiasikan dengan setiap atribut, Integritas domain merupakan validasi masukan dari sebuah kolom. Dengan integritas domain, tidak ada data yang melanggar jangkauan nilai di tiap kolom data.
Jenis domain yang harus dimiliki oleh setiap atribut :
1. Karakter bebas
2. Alphanumerik
3. Alphabet
4. Numerik
Pemeliharaan integritas domain :
1. Pendifinisian skema
2. Pemanfaatan properti field
3. Penerapan proses validasi pada pemasukan data
Contoh :
Create table biografi (
idpenulis smallint unsigned not null,
tahunLahir year not null,
kotalahir varchar (40) not null default ‘Kosong’
);

Create domain nilai numerik(3,2)
constraint value-test check (value >=0.00)
INTEGRITAS REFERENSIAL
Integritas referensial adalah dasar relasi antar tabel yaitu antara foregin key dengan promary key. Integritas referensial memastikan bahwa seluruh nilai dari foregin key cocok dengan nilai primary key yang dihubungkanya.
Contoh :
create table account (
account-number char (10),
branch-name char (15),
balance integer,
primary key (account-number),
foreign key (branch-namereference branch
);

create table depositor (
costumer-name char (20),
account-number char (10),
primary key (costumer-name, account-number)
foreign key (account-number) reference account
foreign key (costumer-name) reference costumer
on delete cascade on update cascade
);
INTEGRITAS ENTERPRISE
Integritas enterprise mengizinkan kita untuk menentukan spesifik business rules sendiri yang tidak sama pada kategori integritas yang lainnya.