Udimo

Minggu, 19 Mei 2013

Backend Programming


Lalu tugas terakhir sistem basis data saya adalah membahas tentang backend programming (trigger, fungsi, prosedur, cursor), saya kan membahasnya secara general atau secara garis besar saja.
Trigger adalah blok PL/SQL yang disimpan dalam database dan akan diaktivasi ketika kita melakukan statement-statement SQL (DELETE, UPDATE, dan INSERT) pada sebuah tabel. Aktivasi trigger didasarkan pada event yang terjadi di dalam tabel tersebut sehingga trigger dapat membantu dalam menjaga integritas dan konsistensi data. Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam database akan meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat, kita tidak perlu lagi untuk melakukan validasi data. 

Manfaat
Manfaat trigger diantaranya:
-          Mengatur integritas dari konstrain yang kompleks yang tidak mungkin ditangani oleh sintaks-sintaks pembuatan tabel
-           Mencegah transaksi yang tidak valid
-           Meningkatkan tingkat keamanan database dengan menyediakan audit yang lebih kompleks mengenai informasi perubahan database dan user siapa yang melakukan perubahan

Batasan
Trigger mempunyai batasan
- Tidak dapat menggunakan perintah commit dan rollback, selain itu juga tidak dapat memanggil prosedur, fungsi atau package yang menggunakan perintah commit dan rollback.
- Tidak dapat diimplementasikan pada kolom pada suatu tabel yang memilki konstrain, jika pada akhirnya akan menyebabkan pelanggaran konstrain. Biasanya terjadi akibat modifikasi pada primary key

Sebelum kita beranjak ke pembahasan fungsi dan prosedur, maka kita harus mengerti dahulu apa yang dimaksud dengan PL/SQL, karena fungsi dan prosedur merupakan subprogram dari PL/SQL. Berikut adalah penjelasannya
PL/SQL dirancang khusus untuk pengolahan mulus dari perintah SQL. Ini memberikan sintaks khusus untuk tujuan ini dan mendukung persis datatypes sama seperti SQL. Server-side PL / SQL disimpan dan disusun dalam Oracle Database dan berjalan dalam executable Oracle. Secara otomatis mewarisi ketahanan, keamanan, dan portabilitas Oracle Database.

PL/SQL Block yang dipanggil dengan sekumpulan parameter. PL/SQL memiliki dua jenis subprogram yaitu: procedure dan function. Dimana secara umum procedure digunakan untuk melaksanakan aksi dan function digunakan untuk komputasi suatu nilai.


Cursor
Setiap statement di oracle memiliki c


ursor yang terkait, yang terbagi atas :
- Implicit cursors : dideklarasikan dan di atur oleh PL/SQL untuk semua DML dan statement SELECT PL/SQL
- Explicit Cursors : dideklarasikan dan diatur oleh programmer

Cursor Eksplisit
Kita menggunakan kursor ketika memiliki pernyataan SELECT yang mengembalikan lebih dari satu baris dari database.
Kita dapat mengikuti lima langkah ketika menggunakan kursor :
1. Mendeklarasikan variabel untuk menyimpan nilai-nilai dari pernyataan SELECT.
2. Mendeklarasikan kursor, menetapkan pernyataan SELECT.
3. Buka kursor.
4. Mengambil baris dari kursor (FETCH).
5. Tutup kursor.


read more...

XML (EXtensible Markup Language)


Selanjutnya kita akan membahas mengenai XML atau EXtensible Markup Language adalah sebuah  Markup language yang digunakan untuk dokumen yang mengandung informasi secara terstruktur. XML juga ditujukan untuk pertukaran dokumen via web, Berbentuk file teks à Cross platform, indepedenden terhadap software dan hardware.
Sebenarnya XML tidak jauh berbeda dari HTML, yang membedakannya adalah XML lebih memiliki case sensitive sebagai contoh, jika HTML mempunyai simatik untuk bold dan tidak harus ditutup, sedangkan XML harus ditutup seperti,
Beberapa aturan dalam XML adalah sebagai berikut,
         Setiap tag harus ada penutupnya.
         Penamaan Tag
        case sensitive. tidak sama dengan .
        Tidak diawali dengan angka
        Tidak mengandung spasi
        Hindari ‘-’ dan ‘.’
         Urutan hirarki harus benar.
            Contoh yang salah
            yudi

         Setiap XML harus mengandung root (akar)
           
                       
                                    .....
                       

           

         Setiap atribut harus dalam tanda petik. Contoh:
           
             
           
         Komentar dalam XML: 
            <!-- ini komentar lho --!> 
read more...

Concurrency

Setelah kita membahas Integritas Data dan Transaksi pada Postingan sebelumnya, sekarang kita akan membahas mengenai Concurrency. Pengertian concurrency adalah DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama.
Dalam concurrency juga terdapat beberpa masalah yang harus dihindari, yaitu sebagai berikut:
         Lost Update Problem
         Uncommitted dependency problem
       Incosistent analysis problem





read more...

Integritas Data dan Transaksi

Sudah lama tidak bersua di blog akhirnya saya ngeblog lagi karena rada “dipaksa” sama dosen alias tugas. Hehe.. Tugasnya itu diminta untuk menjelaskan secara general mengenai sistem basis data (jadi rada serius). Hehe.. oke kita mulai topic yang sangat serius ini :)

Integritas basis data atau sering disebut database integrity adalah suatu masalah utama di dalam database yang berusaha agar menjaga data tetap konsisten atau valid, karena suatu data seharusnya mengikuti sejumlah karakteristik dasar sesuai ketentuan yang telah ditentukan. Penerapan aturan-aturan ini akan dapat menghindarkan basis data dari upaya-upaya atau kesalahan yang biasanya tidak disengaja, khususnya dalam melakukan pemanipulasian data, yang dapat membuat basis data menjadi tidak konsisten atau integritasnya terganggu.

 Jenis-jenis integritas data yang harus dipelihara dalam basis data adalah sebagai berikut,
1. Integritas Entitas (Entity Integrity), dimana tidak ada baris data duplikat dalam satu table
2. Integritas Jangkuan (Domain Integrity), dimana tidak ada item data yang melanggar jangkuan nilai di tiap kolom data
 3. Integritas Acuan (Referential Integrity), yang menjaga relasi/korespodensi antar table
4. Integritas Data Antar Tabel (Redundant Data Integrity), dimana data di sebuah table tidak terulang di table lain

Setelah kita membahas Integritas data lalu kita lanjut akan membahas tentang Transaksi. Apa sih transaksi? Dan bagaimana cara kerjanya? Oke let’s check it out!

Transaksi di dalam sebuah basis data dapat didefinisikan sebagai serangkaian aksi yang mengandung pengaksesan basis data dan bahkan juga dapat mengandung serangkaian perubahan data. Sebuah transaksi umumnya terdiri atas sejumlah operasi yang membentuk sebuah satuan kerja lojik.DBMS yang kita gunakan harus dapat menjamin bahwa setiap satuan transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh terjadi ada transaksi yang hanya dikerjakan sebagian karena hal ini dapat mengakibatkan adanya inkonsistensi basis data.

Untuk menjamin agar integritas data tetap terpelihara, maka setiap transaksi harus memiliki sifat-sifat seperti berikut ini,
 - Atomicity Ini berarti bahwa transaksi haruslah berhasil secara keseluruhan, atau gagal sama sekali.
 - Consistency Menjaga konsistensi data di database
 - Isolation Transaksi yang dilakukan secara bersamaan haruslah bisa dimulai dan bisa berakhir. 
- Durability Setelah transaksi berakhir, data yang berubah tidak boleh kembali ke data awal walaupun sistem mati.

Pada transaksi, terdapat dua buah operasi yang berfungi untuk menjaga integritas data dan ketahanan data, yaitu commit dan rollback. Commit berfungsi untuk menandakan bahwa transaksi telah selesai dilaksanakan. Rollback berfungsi untuk member tahu bahwa transaksi harus diulang karena ada suatu kegagalan.

Dalam transaksi database, ada 3 hal yang harus dicegah yaitu.
 - DIRTY READ Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
 - NONREPEATABLE READ Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
 - PHANTOM READ Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya. 

Untuk mencegah 3 hal tersebut, maka dalam Oracle terdapat 2 level isolasi yang dapat diimplementasikan, yaitu :
 - READ COMMITED Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit)

 - SERIALIZABLE Adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel). Tetapi aplikasi yang menggunakan level isolasi ini harus bersedia untuk mengulangi transaksi dikarenakan kegagalan peng-serial-an transaksi. Saat transaksi berada pada level serializable, sebuah query SELECT hanya melihat data yang di COMMIT sebelum transaksi di mulai; transaksi tersebut tidak akan pernah melihat baik data yang belum di COMMIT atau perubahan data yang terjadi selama eksekusi transaksi oleh transaksi lain yang berjalan pada waktu bersamaan (e.g. saat transaksi ini berjalan, ada transaksi lain yang melakukan COMMIT pada data). Jika pada transaksi dengan level isolaso Serializable mengandung DML (Data Manipulatin Language) yang mencoba untuk meng-update suatu data yang mungkin sudah di update pada sebuah transaksi yang belum di commit pada awal transaksi Serializable, maka perintah DML tersebut akan gagal. Untuk mengaplikasikan level isolasi SERIALIZABLE, adalah dengan menggunakan perintah :

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

 Isolai level ini mencegah terjadinya PHANTOM READ.
read more...
Silahkan tulis komentar anda mengenai artikel diatas, Terima Kasih!