Pages

Saturday, May 18, 2013

Mengenal Lebih Dekat Sistem Basis Data


Mengenal Lebih Dekat
Sistem Basis Data

Teman-teman, sekarang saya akan membahasa atau lebih tepatnya mengulas tentang Sistem Basis Data. Nah, sebelum berlanjut ke pembahasan yang lebih jauh, teman-teman tentu masih ingatkan tentang Basis Data? Lalu apa sih perbedaanya dengan Sistem Basis Data yang akan saya bahas sekarang?

Pada dasarnya, basis data dan sistem basis data memiliki prinsip yang sama, yaitu sama-sama melakukan pengaturan data/arsip dan sama-sama bertujuan untuk kemudahan pengambilan data atau arsip.

Ok, sekarang sudah tau kan persamaan mengenai basis data dan sistem basis data. Jadi kenapa harus ada sistem basis data? Nah, kalau menurut saya, ada banyak sekali hal yang memang ada di sistem basis data dan hal tersebut belum kita ketahui ketika hanya mempelajari basis data. Apa Saja? Saya sudah menuliskan beberapa yang saya ketahui dibawah ini, check this out!

1. Integritas Data
Apa itu integritas data? Integritas data disini adalah akurasi data atau kebenaran data. Ketika kita membuat suatu data tentu kita ingin supaya data yang kita buat  tetap konsisten dan valid/ data yang kita buat terjaga kebenarannya saat disimpan. Dengan adanya integritas data, data yang kita buat dan simpan akan selalu konsisten dan terjaga kebenarannya. Mengapa bisa seperti itu? Karena integritas data dalam sistem basis data ini akan menjaga data kita yang sudah ada/ database supaya tidak ada data yang tidak valid masuk ke database kita. Hebat bukan? 

Selain itu dengan adanya integritas data juga akan menjaga konsistensi data pada hubungan/relasi keterkaitan antar tabel yang ada pada database. Integritas data juga bersifat jangka panjang, jadi bisa mencegah permasalahan seperti ketidak validan data di kemudian hari yang pada saat sekarang sulit untuk ditemukan.

2. Transaksi
Selanjutnya, selain ada integritas data yang sudah dibahas diatas, dalam sistem basis data terdapat pula yang disebut dengan transaksi. Tapi jangan salah pengertian teman-teman, transaksi disini bukan transaksi jual beli, akan tetapi transaksi data. Apa itu transaksi data?:)

Transaksi dalam dunia kita, yaitu dunia IT merupakan suatu tindakan yang dilakukan oleh program yang memiliki tujuan untuk mengakses atau mengubah data yang terdapat di database. Transaksi ini hanya mengenal dua hasil, yang pertama yaitu hasilnya berhasil 100% atau berhasil secara kesuluruhan dan yang kedua hasilnya gagal total. Ayo mau pilih yang mana?:D

Adanya transaksi dalam sistem basis data bukan tanpa tujuan, tapi disini dia(transaksi) memiliki tugas yang mulia yaitu untuk melindungi dari kehilangan dan kerusakan data. Bayangkan saja kalau misalnya transaksi tidak ada, bisa saja data yang kita buat hilang dan rusak. Transaksi ini bisa terdiri dari beberapa instruksi, meskipun ada beberapa instruksi disini tapi instruksi tersebut harus dijamin dikerjakan semua untuk menjamin konsistensi data. Ada dua operasi yang penting dalam transaksi, apa saja?
Commit
Commit memberi tanda bahwa transaksi yang kita lakukan telah selesai.
Rollback
Rollback memberi tanda bahwa transaksi gagal.

Transaksi juga punya empat elemen, supaya kita lebih mudah ingat maka bisa disingkat dengan nama ACID. Tapi ACID disini bukan asam lambung ya teman-teman . .:D
A untuk atomicity, yaitu semua transaksi yang dilakukan berhasil atau semua gagal, jadi tidak bisa setengah-setengah. C untuk consistency, yaitu transaksi mempertahankan konsistensi database. I untuk Isolation, yaitu transaksi terisolasi satu dengan yang lainnya, jadi transaksi yang dilakukan secara bersamaan harus bisa dimulai dan diakhiri. Yang terakhir itu D, untuk durability, yaitu setelah transaksi berakhir data yang berubah tidak boleh kembali ke data awal walaupun sistemnya mati. Kalau bahasa kerennya, jadi setelah commit itu data yang sudah di update harus tetap survive di database meskipun sistemnya mati.

Selain yang disebutkan diatas, dalam transaksi juga ada yang disebut dengan savepoint, pasti teman-teman juga sudah tidak asing dengan istilah tersebut, biasanya istilah tersebut sering dipakai dalam acara kuis yaitu titik aman atau dalam sebuah game yaitu check point. Sebenarnya pengertiannya pun tidak jauh berbeda, jadi savepoint point tersebut merupakan sebuah titik aman dimana kita telah menyelesaikan satu atau beberapa transaksi. Fungsi dari savepoint adalah supaya pada saat kita ingin melakukan rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari savepoint yang telah kita buat.

Apabila sebelumnya kita bisa menggunakan fasilitas pada transaksi untuk memudahkan pekerjaan kita yaitu savepoint, maka sekarang ada tiga hal yang harus dicegah dalam transaksi (isolasi transaksi), yang pertama yaitu dirty read dimana transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan. Selanjutnya yaitu nonrepeatable read dimana transaksi membaca ulang data yang telah dibaca sebelumnya karena data tersebut telah dimodifikasi oleh transaksi lainnya. Dan yang terakhir adalah phantom read dimana transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.

Selain beberapa hal yang disebutkan diatas, pada transaksi database pun dikenal istilah locking yang berfungsi untuk menjaga integritas data. Terdapat dua buah metode locking yaitu shared lock (S-Lock) dan exclusive lock (X-Lock). S-Lock hanya bisa melakukan pembacaan sedangkan X-Lock dapat melakukan perubahan dan pembacaan terhadap data tersebut. Selain dua locking protokol tersebut adapula yang disebut dengan deadlock. Akan tetapi deadlock bukan merupakan pencegahan akan tetapi permasalahan yang kerap terjadi pada transaksi sistem basis data. “Deadlock merupakan situasi dimana dua atau lebih transaksi dalam kondisi wait state, satu sama lain menunggu Lock dilepas sebelum dimulai (Yudi Wibisono)”.

3. Concurrency
Setelah membahas tentang integritas data dan transaksi sekarang saya akan berlanjut ke concurrency. Sebenarnya kalau dilihat di kamus bahasa Inggris, concurrency itu berarti persetujuan. Persetujuan seperti apa yang dibutuhkan dalam sistem basis data?

Nah, DBMS atau Data Base Management System mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama. Concurrency atau lebih lengkapnya Concurrency Control Mechanism (CCM) dibutuhkan agar transaksi tidak saling mengganggu. Jadi antara transaksi yang satu dan yang lainnya dapat berjalan lancar seperti yang semestinya.
Berikut adalah beberapa masalah yang dapat ditangani oleh concurrency:
Lost Update Problem
Uncommitted dependency problem
Inconsistent analysis problem

4. Backend Programming
Teman-teman mungkin rada asing dengan kata backend programming, tapi jangan terlalu jauh berfikir, maksud dari backend programming itu adalah program yang tidak dapat dilihat oleh  user. Salah satu contoh dalam sistem basis data yang tergolong kedalam backend programming yaitu trigger dan stored procedure.

Stored Procedure adalah salah satu objek routine yang tersimpan pada database MySQL dan dapa digunakan untuk menggantikan berbagai kumpulan perintah yang sering kita gunakan. Disini stored procedure sangat berguna ketika kita tidak ingin user mengakses table secara langsung, atau dengan kata lain membatasi hak akses user dan mencatat operasi yang dilakukan. Dengan demikian resiko kebocoran dan kerusakan data dapat lebih diminimalisir.

Sedangkan trigger merupakan bentuk khusus dari stored procedure, jadi sebenarnya masih satu rumpun dengan stored procedure. Trigger merupakan stored procedure yang dipanggil secara khusus pada event-event tertentu, bisa sebelum dan sesudah insert, update atau delete. Kenapa trigger masih di butuhkan sedangkan sudah ada stored prosedure karena trigger mempunyai kegunaan yaitu untuk membuat integrity constraint yang kompleks dan untuk mencatat aktivitas suatu tabel(logging) serta untuk sinkronisasi. Aktivasi trigger didasarkan pada event yang terjadi didalam 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 tetap terjaga.

5. Extensible Markup Language (XML)
Wah pasti teman-teman rada bingung nih, kenapa dalam sistem basis data harus belajar XML, supaya tidak bingung mari simak penuturan saya dibawah ini.

XML merupakan markup language untuk dokumen yang mengandung informasi terstruktur, ditujukan untuk pertukaran dokumen via website dan independen terhadap software dan hardware. XML merupakan standard de-facto(mendapat pengakuan publik luas) untuk bertukar data, menyimpan data dan mendeskripsikan data. Selain itu XML di support oleh banyak tools(RDBMS, bahasa pemrograman, dll.)

6. Keamanan Basis Data
Setelah banyak yang saya bahas mengenai hal-hal yang ada dalam sistem basis data, maka sekarang saya akan membahas salah satu bagian terpenting yaitu keamanan basis data. Kenapa dikatakan penting, karenan tentu saja setiap orang yang membuat atau menyimpan data pasti ingin datanya aman dan tetap terjaga kerahasiaannya. 

Keamanan basis data merupakan suatu proteksi terhadap pengrusakan data dan pemakaian data oleh pemakai yang tidak punya kewenangan. Untuk menjaga keamanan basis data, ada beberapa hal yang dapat dilakukan, diantaranya:
Penentuan perangkat lunak Data Base Server yang handal
Pemberian otoritas kepada user mana saja yang berhak mengakses, serta memanipulasi data-data yang ada

Tujuan dari keamanan basis data sendiri adalah untuk confidentiality (kerahasiaan), integrity (integritas), availability (ketersediaan). Tujuan tersebut diharapkan dapat mengatasi permasalahan ancaman keamanan terhadap basis data yaitu interruption (gangguan/terhenti), interception (penahanan/pemotongan), modification (modifikasi), fabrication (pemalsuan).

Alhamdulillah materi tentang sistem basis data yang saya ketahui  sudah dipaparkan diatas, mudah-mudahan bermanfaat dan tidak puas sehingga bisa mencari lagi. Tulisan diatas juga saya dapat dari beberapa sumber, diantaranya:
http://nadhiadisiini.blogspot.com/2011/11/keamanan-basis-data.html
http://mysql.phi-integration.com/sql/membuat-stored-procedure-di-mysql
slide Pak Yudi Wibisono

atau teman-teman bisa mengunjungi alamat:
cs.upi.edu
elearning.cs.upi.edu