Sabtu, 18 Mei 2013

Integritas Data, Transaksi, Concurrency, Backend Programming, XML dan Keamanan Basis Data

Integritas Data
        Integritas Data, yaitu model integrasi data yang dilakukan langsung pada database atau struktur data dari aplikasi. integritas adalah “kesetiaan representasional informasi untuk keadaan sebenarnya dari objek yang mewakili informasi, dimana kesetiaan itu sendiri terdiri dari empat atribut inti yaitu: kelengkapan, ketepatan waktu, akurasi / kebenaran, dan validitas”. 
Ada bebereapa jenis Constraints Integrity, yaitu:
·         Entity Integrity atau Integritas Entitas
Integritas ini merupakan aturan yang menyatakan bahwa setiap table harus memiliki primary keydan setiap kolom primary key tersebut haruslah unique dan not null.
·         Referential Integrity atau Integritas Referensial
Integritas ini menyatakan bahwa setiap foreign key pada suatu table harus mengacu pada primary key dari table lainya.
·         Domain Integrity
Integritas ini menetapkan bahwa setiap elemen dari relasi harus sesuai dengan jenis dan batasan atribut elemen tersebut.
·         User Defined Integrity
Untuk jenis yang satu ini, menetapkan aturan sesuai keinginan user sendiri, misal untuk umur harus diantara 0 sampai 17, selain itu tidak diperbolehkan.

Transaksi
Sebuah transaksi adalah unit eksekusi program yang mengakses dan mungkin mungkin mengubah beberapa item data. Suatu transaksi harus melihat database yang konsisten. Selama eksekusi transaksi, database mungkin tidak konsisten. Ketika sebuah transaksi dianggap commit maka database harus konsisten.
Dua hal yang berkaitan dengan manajemen transaksi:
+ Kegagalan fungsi (Failures), terdiri dari kegagalan perangkat keras (hardware) dan system crash
+ Eksekusi beberapa transaksi secara bersamaa
Untuk menjaga integritas data, database sistem harus menjamin:
- Atomicity.
Jika semua operasi pada sebuah transaksi sukses maka transaksi dianggap sukses, jika salahsatu  operasi pada suatu transaksi gagal maka transaksi dianggap gagal.
- Consistency.
Eksekusi sebuah transaksi secara terisolasi bertujuan untuk menjaga konsistensi database.
- Isolation. 
Meskipun ada beberapa transaksi yang berlangsung bersamaan, masing-masing transaksi tidak boleh mengetahui transaksi lain yang sedang berlangsung. Hasil transaksi sementara harus disembunyikan dari transaksi lain yang sedang berlangsung. Sehingga, untuk pasangan transaksi Ti dan Tj, yang terlihat oleh Ti adalah Tj selesai melakukan  eksekusi sebelum Ti mulai, atau  Tj memulai eksekusi setelah Ti selesai.
- Durability.
Setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem.

Contoh. Sebuah transaksi transfer uang
Transaksi untuk transfer $50 dari account A ke account B:
1.   read(A)
2.   A := A – 50
3.   write(A)
4.   read(B)
5.   B := B + 50
6.   write(B)
Consistency requirement – jumlah A dan B tidak berubah setelah eksekusi transaksi.
Atomicity requirement — Jika transaksi gagal dijalankan setelah langkah ke 3 dan sebelum langkah ke 6, maka sistem harus menjamin bahwa perubahan yang terjadi tidak direfleksikan di database, jika hal ini tidak dapat dilakukan maka akan menghasilkan inconsistency.
State (keadaan) Transaksi
+  Active, merupakan keadaan (state) awal; transaksi berada di state ini ketika dia sedang dieksekusi
+  Partially committed, setelah operasi (statement) terakhir telah dieksekusi.
+ Failed, setelah diketahui bahwa eksekusi secara normal tidak lagi dapat dilakukan.
+ Aborted, setelah sebuah transaksi di-roll back (dikembalikan ke kondisi sebelum transaksi). Ada dua    pilihan setelah transaksi di-abort :
     –  Ulangi transaksi
     –  hanya jika tidak ada kesalahan logika internal
+  Committed, setelah semua operasi selesai dijalankan dengan sukses.

Concurrency
Proses-Proses yang disebut konkurensi apabila proses-proses (lebih dari satu proses) berada pada saat yang sama. Karena proses tersebut bisa saja tidak saling bergantung tetapi saling berinteraksi.
Masalah Concurrency
1. Lost update/kehilangan modifikasi.
Masalah operasi update yg sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari pengguna lain
2. Uncommited dependency/ketergantungan pada saat belum commit
Permasalahan timbul pada saat transaksi dibiarkan melihat hasil dari transasksi lain yang belum commit.
3. Inconsistent analysis/analisis yang tidak konsisten
Permasalahan timbul apabila suatu transaksi membaca beberapa nilai tetapi transasksi berikutnya memodifikasi salah satu nilai.
Pengontrollan Concurrency
Lebih dari satu pengguna (pada DBMS terpusat) dapat melakukan operasi pada basis data secara simultan. Jika tidak dikontrol, hal ini dapat menyebab kan interferensi satu sama lain sehingga basis data menjadi tidak konsisten. Untuk mencegahnya, DBMS mengimple-mentasikan pengontrolan konkurensi. Implementasi pengamanan sangat penting untuk menjamin sistem tidak diinterupsi dan diganggu. Proteksi dan pengamanan terdapat perangkat keras dan sistem operasi yang sama pentingnya

Backend Programming
Backend Programming adalah code yang tidak terlihat oleh user dan bekerja dibelakang layar atau server.
Stored Procedure
Stored Procedure adalah sekumpulan perintah SQL yang disusun dalam sebuah prosedur yang memiliki nama dan fungsi tertentu.
Struktur badan procedur secara umum :
CREATE OR REPLACE PROCEDURE <nama procedure> AS
            /*Deklarasi variable, type, dan local subprogram*/
BEGIN
            /*Bagian utama prosedur*/
EXCEPTION
            /*Penangan error*/
END <nama procedur>;
Function
Selain Stored Procedure, terdapat juga Function. Sedikit berbeda dengan Stored Procedure, disini ada nilai yang dikembalikan.
Struktur badan Function secara umum:
CREATE OR REPLACE FUNCTION <nama fungsi> RETURN <tipe data>
AS
            /*Deklarasi variable, type, dan local subprogram*/
BEGIN
            /*Bagian utama fungsi*/
EXCEPTION
            /*Penangan error*/
RETURN(<Nilai yang dikembalikan>);
END <nama fungsi>;
/
Untuk mengeksekusi stored procedure dan fungsi gunakan perintah :
EXECUTE <nama procedure/fungsi>;
Sedangkan untuk menghapusnya menggunakan perintah
DROP PROCEDURE/FUNCTIOM <nama procedure/function>;
Trigger
Secara keseluruhan trigger hampir sama dengan Procedure dan Function, hanya saja untuk Trigger dioperasikan secara otomatis ketika terdapat aktivitas statement-statement SQL seperti Insert, Update dan Delete. Trigger ini bisa diaktivasi sebelum atau pun sesudah terjadinya satatement-statement tersebut.
Struktur badan Trigger secara umum:
CREATE OR REPLACE TRIGGER <nama trigger>
(BEFORE|AFTER) (INSERT|UPDATE [OF <nama_kolom>, …]|DELETE) ON <nama_tabel>
[FOR EACH ROW] [WHEN (kondisi)]
DECLARE
            /*Deklarasi variable, tipe data*/
BEGIN
            /*Bagian utama trigger*/
END;
/
Trigger ini memiliki status apakah dia aktif atau nonaktif. Untuk mengubah status Trigger berikut sintaksnya :
ALTER TRIGGER <nama_trigger> DISABLE | ENABLE;
dimana DISABLE untuk menonaktifkan Trigger, dan ENABLE untuk mengaktifkan Trigger.
Sintaks untuk menghapus Trigger :
DROP TRIGGER <nama_trigger>;

XML
XML merupakan sebuah bahasa pemrograman berbasis web untuk dokumen yang mengandung informasi terstruktur. XML memiliki kepanjangan Extensible Markup Language. XML ini ditujukan untuk pertukaran dokumen via web. Hampir sama dengan Markup Languange lainya seperti HTML, XML juga memiliki tag-tag didalamnya. Hanya saja tag-tag tersebut bisa dinamakan sendiri, contoh nya <umur> </umur>. Tag-tag tersebut juga bisa memiliki atribut seperti <barang warna=”hijau”> </barang>.
Keunggulan dari XML :
·         Dapat dibaca software dan manusia.
·         Flexible.
·         Independen terhadap bahasa pemrograman.
Dari beberapa keuntungan diatas masih terselip satu kerugian dari XML yaitu pengulangan Tag.
Aturan XML :
ü  Setiap tag harus ada penutupnya.
ü  Penamaan Tag :
ü  Case sensitive
ü  Tidak diawali angka
ü  Tidak mengandung spasi
ü  Hindari penggunaan '-' dan '.'
ü  Urutan hirarki harus benar.
ü  Setiap XML harus mengandung root.
ü  Setiap atribut harus dalam tanda petik.
ü  Komentar dalam XML : <!--komentar-->

Keamanan basis data
Keamanan basis data merupakan suatu proteksi terhadap pengrusakan data dan pemakaian data oleh pemakai yang tidak punya kewenangan. Untuk menjaga keamanan Basis Data, dapat dilakukan beberapa cara berikut ini :
·         Penentuan perangkat lunak Data Base Server yang handal.
·         Pemberian otoritas kepada user mana saja yang berhak mengakses, serta memanipulasi data- data yang ada.
Tujuan Keamanan Basis data :
·         Confidentiality
·         Integrity
·         Availability
Ancaman keamanan terhadap Basis data
·         Interuption
·         Interception
·         Modification
·         Fabrication
Pengaturan Keamanan Basis Data :
1. Otorisasi
Pemberian wewenang atau hak istimewa (privilege) untuk mengakses sistem atau obyek database kepada pengguna yang bertanggung jawab
2. Tabel View
Tabel view merupakan metode pembatasan bagi pengguna untuk mendapatkan model database yang sesuai dengan kebutuhan perorangan. Metode ini dapat menyembunyikan data yang tidak digunakan atau tidak perlu dilihat oleh pengguna.
3. Backup data dan recovery
a.       Backup adalah proses secara periodik untuk membuat duplikat dari database dan melakukan logging file (atau program) ke media penyimpanan eksternal.
b.      Recovery merupakan upaya untuk mengembalikan basis data ke keadaaan yang dianggap benar setelah terjadinya suatu kegagalan.
Terdapat 3 jenis pemulihan, antara lain :
·         Pemulihan terhadap kegagalan transaksi : Kesatuan prosedur alam program yang dapat mengubah / memperbarui data pada sejumlah tabel.
·         Pemulihan terhadap kegagalan media : Pemulihan karena kegagalan media dengan cara mengambil atau memuat kembali salinan basis data (backup)
·         Pemulihan terhadap kegagalan sistem : Karena gangguan sistem, hang, listrik terputus alirannya.


References :