Sabtu, 18 Mei 2013

Berbagi cerita di Sistem Basis Data

Saatnya berbagi.. Kali ini saya akan berbagi informasi mengenai sistem basis data. Nah, sebelumnya kita kenalan dulu ya sama sistem basis data. Sistem basis data adalah sekumpulan basis data yang saling berhubungan satu sama lain yang memungkinkan pemakaian bersama untuk mengakses dan memanipulasi data-data  tersebut. Bicara masalah Sistem basis data (atau biasa disingkat sisbasdat di jurusan saya :D) erat kaitannya dengan integritas data, transaksi (untuk transfer data antar pengguna nih), concurrency, back end programming, XML, dan tentunya keamanan basis data. Untuk lebih jelasnya ayo kita pelajari.
Pertama, kita bahas tentang integritas data. Tentunya kita bertanya-tanya untuk apa sih? (kalau engga, coba tanya sekarang, hehe). Tujuannya untuk menjaga validitas dan konsistensi data. Misalnya data mahasiswa, setiap mahasiswa mempunyai NIM yang unik, maka untuk menjaga validitas agar tidak ada NIM yang sama muncullah constraint unique. Untuk penulisan constraint itu sendiri, bisa tulis sebaris dengan nama kolomnya atau terpisah.



Ditulis sebaris dengan nama kolom
Nim varchar2(8) primary key,
           
         Atau ditulis terpisah dengan nama kolom
Nim varchar2(8),
Constraint pk primary key(nim),


Selain primary key, bisa juga kita membuat constraint foreign key, check, dan unique. Contoh lagi deh, misalnya mau membuat validasi untuk jenis kelamin.
Constraint chk_jk check (jk in (‘L’,’P’)),
Mudah bukan membuatnya? :D . Nah karena sudah tau, jadi  gunakan validasinya ya.
Oke, pembahasan selanjutnya tentang transaksi dan concurrency. Kedua hal ini berhubungan erat dan tak terpisahkan. Mengapa? Karena sistem basis data bisa digunakan oleh banyak pengguna, disitu akan terjadi transaksi yang mungkin dilakukan secara bersamaan dan mengakses data yang sama, sehingga agar tidak saling mengganggu dan datanya tetap valid.
Apa yang ada dibenak teman-teman mengenai transaksi? Sebenarnya konsep transaksi sering kita lakukan sehari-hari. Misalnya ketika membeli barang. Saat kita membayar dan mendapatkan barang tersebut maka transaksi telah terjadi. Jadi, transaksi merupakan unit lojik pekerjaan yang terdiri dari beberapa intruksi. Dua operasi penting pada transaksi adalah commit dan rollback. Commit menandakan bahwa transaksi telah selesai. Missal dalam kehidupan nyata yaitu saat kita membauar barang yang dibeli. Rollback memberikan tanda bahwa transaksi GAGAL.
Ada 4 elemen transaksi yang harus diingat, biasa disingkat ACID. Atomicity , semua transaksi berhasil atau semua gagal. Consistency, transaksi mempertahankan konsistensi database. Isolation, transaksi terisolasi satu sama lain. Durability, setelah transaksi berakhir, data yang berubah tidak boleh kembali ke data awal meskipun sistem mati. Kemudian ada yang namanya Save Point. Apa itu? Seperti pada game, save point merupakan titik aman dimana kita telah menyelesaikan satu atau beberapa transaksi. Fungsinya supaya saat ingin rollbacktransaksi tidak berjalan dari awal kembali, tetapi dari save point yang telah dibuat.
Selanjutnya ada 3 hal yang harus dicegah. Dirty read, membaca data dari hasil transaksi lain yang gagal. Nonrepeatable read, membaca ulang data yang telah dibaca sebelumnbya karena dimodifikasi oleh transaksi lain. Phantom read, membaca sebuah data yang telah hilang akibat transaksi lain. Untuk mencegah tiga hal itu, ada dua level isolasi yang bisa dilakukan. Read commited yaitu transaksi hanya bisa melihat perubahan data setelah transaksi lain commit. Serializable, eksekusi dilakukan secara serial, transaksi dilakukan satu setelah yang lainnya.
Pada transaksi database, dikenal istilah locking. Ada dua metode  yaitu shared lock (S-Lock) dan Exclusive lock (X-lock). Jika transaksi memiliki shared lock pada suatu data, transaksi tersebut hanya bisa melakukan pembacaan. Bagi transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data tersebut. Ada juga penguncian level table yang berfungsi untul mencegah perubahan atau penghapusan table selama ada transaksi yang menggunakan table itu. Lalu ada juga penguncian level baris yang hanya berlaku untuk operasi UPDATE dan DELETE. Kemudian ada situasi yang mungkin pernah kita alami di kehidupan nyata, deadlock, merupakan situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepas sebelum di mulai (Yudi Wibisono).
Itu dia cerita tentang concurrency dan transaksi yang tak bisa terpisahkan, seperti aku dan kamu, eaaaa.  Jangan terlalu serius guys, nanti bosen, masih ada yang mau saya bagi nih. Selanjutnya adalah mengenai back end programming. Apa itu? Back end programming adalah aplikasi program computer yang berjalan di bawah aplikasi program computer Front End dan tidak tampak. Contohnya adalah stored prosedur dan trigger. Stored  procedure memiliki performance yang lebih baik, network trafik lebih rendah,  dapat digunakan oleh banyak aplikasi, dapat memanfaatkan tipe, fungsi yang disebdiakan RDBMS. Stored procedure memiliki bentuk khusus, yaitu trigger. Manfaatnya adalah membuat integrity constraint yang kompleks, mencatat aktivitas suatu table, dan sinkronisasi.
Sekarang lanjut materi berikutnya tentang XML (EXtensible Markup Language) . XML mengandung informasi yang terstruktur, untuk pertukaran dokumen via web, dan berbentuk file text.  Kenapa harus XML? Jrengjrengjreng… Karena XML ini di-supprot oleh banyak tools (RDBMS, bahasa pemrograman), tidak bergantung pada platform (platform independen).
Ini nih isi XML:
1.    Tag ,tag ini bisa didefinisikan sendiri : <nama>Nindi</nama>
2.    Tag dapat mempunya atribut :  <daftar_nama jumlah=”10”> … </daftar_nama>
3.    Struktur -> hirarki (tag dalam tag) : <daftar ><nama>Nindi</nama></daftar >
Berikut ini keuntungan XML : self documenting, dapat dibaca software dan manusia, fleksibel, dapat dikembangkan tanpa melanggar format lama, hirarkis, independen terhadap bahasa pemrograman, OS. Kerugiannya yaitu pengulangan tag sehingga tidak efisien.
Beberapa aturan XML:
1.    Deklarasi dokumen XML
2.    Setiap tag harus ada penutupnya
3.    Penamaan tag : case sensitive, tidak diawali dengna angka, tidak mengandung spasi, hindari ‘-’ dan ‘.’
4.    urutan hirarki harus benar
5.    Setiap XMl harus mengandung root
6.    Setiap atribut harus dalam tanda petik
7.    Komentar dalam XML : <!—isi komentar --!>
Ada pula XML Parser. Parser merupakan program untuk membaca dokumen XML. Ada dua cara pembacaan yaitu tree based dengan memindahkan isi XML ke memori terlebih dahulu, Event based, fungsi callback dipanggil setiap menemui elemen. Jenis-jenis parser : 1) DOM(Document Object Model),2) Xerces, dan 3) SAX (Simple API for XML). DOM parser menerjemahkan dokumenXML dan menempatkan elemen-elemen yang ditemuinya saat memproses dokumen ke dalam struktur pohon lalu disimpan ke dalam memori. SAX parser berjalan menjelajahi dokumen dan menyimpannya dalam suatu event-handler. SAX parser lebih tepat digunakan untuk menangani dokumen XML yang dinamis.
Saat ini yang banyak digunakan adalah XMP Schema. Mengapa?
1.        Lebih extensible untuk perubahan selanjutnya
2.        Ditulis dengan menggunakan aturan XML
3.        Mendukung adanya tipe data
4.        Lebih lengkap dan powerfull daripada DTD
5.        Mendukung adanya namespace
6.        Rekomendasi W3C
Elemen dalam XML Schema didefinisikan dalam beberapa jenis: simple element dan complex element.
Ada satu hal yang perlu dipelajari lagi, yaitu keamanan sistem basis data. Keamanan basis data tidak hanya berkaitan dengan basis data saja, tetapi juga meliputi bagian dari sistem basis data. Secara garis besar keamanan basis data dikelompokan sebagi berikut:
-Keamanan Server : Perlindungan Server adalah suatu proses pembatasan akses.
-Trusted Ip Access : Setiap server harus dapat mengonfigurasi alamat ip yang diperbolehkan mengakses dirinya.
-Koneksi Database : Pastikan koneksi yang digunakan unik
-Kontrol Akses Tabel
Penyalahgunaan Database:
1.    Tidak sengaja, jenisnya:
a.    Kerusakan selama proses transaksi
b.    Anomali yang disebabkan oleh akses database yang konkuren
c.    Anomali yang disebabkan oleh pendistribusian data pada beberapa computer
d.    Logika error yang mengancam kemampuan transaksi untuk mempertahankan konsuistensi database
2.    Disengaja, jenisnya:
a.    Pengambilan data/pembacaan data oleh pihak yang tidak berwenang
b.    Pengubahan data oleh pihak yang tidak berwenang
c.    Penghapusan data oleh pihak yang tidak berwenang
Tingkatan pada keamanan database:
1.    Fisikal -> lokasi-lokasi dimana terdapat sistem komputer haruslah aman secara fisik terhadap serangan perusak.
2.    Manusia -> wewenang pemakai harus dilakukan dengan berhati-hati untuk mengurangoi kemungkinan adanya manipulasi oleh pemakai yang berwenang
3.    Sistem operasi -> kelemahan pada OS ini memungkinkan pengaksesan data oleh pihak tidak berwenang.
4.    Sistem database -> pengaturan hak pemakai yang baik.
Keamanan data: 1) Otoritas, 2) Table view, dan 3) Backup data dan recovery.
Teknik pemuliahan: 1) Deferred update / perubahan yang ditunda, 2) Immediate update / perubahan langsung, dan 3) Shadow paging.
Fasilitas keamana database: Publikasi, Proteksi, Hanya baca (read-only), Dapat dibaca yang lain, dan Dapat diimpor.
Salah satu hal penting dalam komunasi menggunakan komputer untuk menjamin kerahasiaan data adalah enkripsi. Enkripsi untuk keamanan basis data : enkripsi konvensional dan enkripsi public-key.
            Sekian informasi yang bisa dibagikan, semoga bermanfaat J ..
Referensi :
·         http://shofiqsula.wordpress.com/2010/02/10/procedure-dalam-mysql/
·         http://dendieisme.blogspot.com/2009/03/mysql-store-procedure.html
·         http://yurindra.wordpress.com/about/keamanan-basisdata/
·       http://yonk1991.xtgem.com/post/Kuliah/Semester4/XML/XML%20Schema.html
·       http://bisakomputer.com/aturan-penulisan-sintaks-pada-dokumen-xml

  • slide bapa Yudi Wibisono

Untuk informasi lebih lanjut, silakan kunjungi :
cs.upi.edu
elearning.cs.upi.edu

Tidak ada komentar:

Posting Komentar