Senin, 24 Maret 2014

Membuat Hello Word Super Simple

Pada kali ini saya akan membuat tutorial bagaimana caranya membuat hello word super simple dengan menggunakan eclipse dan untuk run progamnya saya menggunakan vrtual bluestack .
Pertama-tama kamu harus sudah menginstall JRE, JDK, dan adt-bundle.

Oke langsung saja kita mulai:

1. Buka eclipse, kalo keluar selec work space seperti gambar dibawah langsung ok saja, atau kamu bisa merubahnya ke tempat yang kamu inginkan.

2.Selanjutnya akan keluar tampilan seperti berikut ini, dan buat sekarang buat project baru, caranya klik file->new->android aplication project.

3. Selanjutnya isikan aplication name, project name, dan package name, isikan form-form tersebut dengan nama-nama seperti gambar dibawah, atau isi sesuai keinginan anda.

4. Selanjutnya akan keluar configure project, langsung saja klik next.

5. Selanjutnya membuat icon, pada kali ini saya membuat icon dengan menggunakan text, isikan text dengan nama HWSS, lalu pilih shape circle, dan pilih backgroune dan foreground color dengan warna hitam dan merah, selanjutnya klik next.

6. Pilih Blank Activity lalu klik next.

7. Terakhir langsung saja klik finish.

8. Akan keluar tampilan seperti gambar di bawah.

9. Selanjutnya edit src->com.subhan~->Main.activity.java, dan isikan code berikut:


package com.subhan.hellowordsupersimple;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        TextView text = new TextView(this);
        text.setText("\t \t Hello Word!!\n\n\nNIM \t \t : A11.2011.06266\nNama \t : Ahmad Subhan\nKelompok: A11.4608\n\n\nNobody's perfect");
        setContentView(text);
        
    }
}



10. Selanjutnya run progam tersebut dengan cara klik kanan folder HelloWordSuperSimple, lalu run as->1 Android Aplication.


11. Selanjutnya pilih emulator-5554, itu adalah aplikasi blustack yang akan digunakan untun me run progam hello word, lali klik ok.

12. Dan ini hasil setelah di run dengan bluestack.

Kamis, 09 Januari 2014

Review Jurnal "PENGEMBANGAN DECISION TREE J48 UNTUK DIAGNOSIS PENYAKIT DIABETES MELLITUS"

Banyak penyandang DM yang terdiagnosis setelah mengalami komplikasi. Padahal, apabila dilakukan diagnosis secara dini, maka penanganan bisa dilakukan lebih cepat dan komplikasi yang membahayakan dapat dihindari.
Dalam perkembangan di dunia kedokteran saat ini, para peneliti dan praktisi memusatkan perhatiannya untuk mendeteksi kondisi DM dan mencegah atau menghambat berkembangnya komplikasi. Untuk mendukung hal ini dapat digunakan teknik data mining untuk menggali informasi yang berharga dari kumpulan informasi diabetes. Dalam penelitian ini dilakukan data mining dari dataset DM kelompok suku Pima Indians, Amerika Serikat, dimana berdasarkan penelitian yang dilakukan oleh National Institute of Diabetes and Digestive and Kidney Diseases (NIDDK) sejak tahun 1965 lebih dari 50% populasinya
Penelitian ini terbagi menjadi dua tahap yaitu pertama, tahap pre-processing data dan kedua, tahap penyusunan decision tree J48.

Tahap Pre-Processing Data
Identifikasi dan Pemilihan Atribut
Dataset dalam penelitian ini diambil dari repositori database Pima Indians, UCI. Table 1 menjelaskan atribut dataset diabetes Pima Indians. Dataset Pima ini terdiri dari 768 data klinis yang semuanya berasal dari jenis kelamin wanita dengan umur sekurang – kurangnya 21 tahun.
Penanganan Nilai Yang Tidak Lengkap
Dari hasil analisa dataset Pima Indians dapat diketahui bahwa tidak semua atribut memiliki nilai yang lengkap, dimana kelengkapan atribut ini akan menentukan seberapa baik hasil dari pengklasifikasi.
Untuk mengatasi nilai yang tidak lengkap pada masing – masing data atribut dapat dilakukan menggunakan empat cara.
  1. cara termudah dengan menghapus data yang tidak memiliki nilai, tetapi hal ini menyebabkan hilangnya informasi penting pada beberapa atribut yang lain.
  2. mengganti nilai yang hilang dengan menggunakan nilai rata-rata (mean), tetapi cara ini tidak sesuai jika jumlah nilai yang hilang sangat banyak karena akan menyebkan dataset tidak sesuai dengan kondisi sebenarnya.
  3. mengganti semua nilai yang tidak ada dengan nilai nol, tetapi hal ini akan menyebabkan hasil klasifikasi yang tidak baik.
  4. dengan mengganti nilai yang tidak ada dengan nilai yang dari tetangga sekelilingnya yang memiliki jarak atau kemiripan terdekat (eucledian distance).

Diskritisasi atribut bertujuan untuk mempermudah pengelompokan nilai berdasarkan kriteria yang telah ditetapkan. Hal ini juga bertujuan untuk menyederhanakan permasalahan dan meningkatkan akurasi dalam proses pembelajaran.

Tahap Penyusunan Decision Tree J48
Decision tree merupakan salah satu algoritma klasifikasi dalam data mining. Algoritma klasifikasi merupakan algoritma yang secara induktif dalam pembelajaran dalam mengkonstruksikan sebuah model dari dataset yang belum diklasifikasikan (pre classified dataset). Decision tree mengklasifikasikan data yang diberikan menggunakan nilai dari atribut.

Evaluasi Pengklasifikasi Decision Tree J48 Menggunakan K-Fold Cross-Validation
Dalam k-fold cross-validation, data pengujian dipisah secara acak ke dalam k himpunan bagian yang mutually exclusive atau “folds (lipatan)”, D1, D2,..., Dk, yang masing – masing kurang lebih berukuran sama. Pelatihan dan pengujian dilakukan sebanyak k kali. Pada iterasi ke-i, partisi Di digunakan sebagai data tes, dan partisi sisanya digunakan bersama untuk melatih model. Dalam iterasi pertama, yaitu himpunan bagian D2, ..., Dk secara bersama bertindak sebagai data pelatihan untuk memperoleh model pertama, yang diuji pada D1; iterasi kedua dilatih pada himpunan bagian D1, D3, ..., Dk dan diuji pada D2; dan. Dalam penelitian ini digunakan 10-fold crossvalidation. 

Dari hasil pengolahan dan uji coba menggunakan decision tree J48 pada dataset dihasilkan penyusunan informasi dalam bentuk tree. Ekstraksi informasi menggunakan data mining dari dataset kesehatan sangat efektif sebagai sistem pendukung kesehatan bagi praktisi kesehatan, dimana tujuan dari data mining adalah untuk mendapatkan pola informasi yang tersimpan dalam suatu basis data yang dapat digunakan untuk pengolahan selanjutnya dan sebagai bahan pendukung keputusan dalam diagnosis penyakit.

Sumber: http://eprints.dinus.ac.id/85/1/INFRM_30_-124_PENGEMBANGAN_DECISION_TREE_J48.pdf

Review Jurnal "STRUKTUR BASIS DATA UNTUK PELAYANAN TERPADU JASA PELABUHAN"

Peranan pelabuhan sebagai salah satu sentra perekonomian bagi suatu wilayah, setiap saat selalu mengalami peningkatan dan kemajuan dalam semua sektor. Perkembangan ini perlu dicermati dan senantiasa dioptimalkan dengan melakukan berbagai pembenahan, khususnya dari segi pelayanan terhadap pelanggan atau pengguna jasa pelabuhan.
Ada banyak pilihan solusi yang bisa dipilih, salah satunya adalah model pelayanan terpadu. Model pelayanan terpadu ini juga perlu harus didukung oleh sistem basis data yang baik agar pelayanan yang optimal dapat disajikan.
Penelitian ini meneliti struktur database untuk layanan terpadu pelabuhan, khususnya dalam layanan kargo umum di Pelabuhan Teluk Bayur Padang. Hasil penelitian menunjukkan bahwa tidak ada struktur database yang dapat digunakan untuk mendukung layanan tersebut. Model data yang digunakan adalah model data relasional yang normal dan dioptimalkan dengan bantuan skema kanonik. Akhir pandang user adalah produk akhir dari struktur database yang diinginkan dengan menggunakan Borland Delhi 3.0 sebagai program.
Berdasarkan data yang didapat dari penelitian di lapangan kendala utama dari sejumlah pelayanan jasa yang diberikan sejauh ini adalah, ketiadaan sistem basis data yang mendukung agar semua proses bisa berlangsung dengan cepat dan handal. Struktur basis data yang dikemukakan disini adalah struktur basis data relasional, yang dilakukan melalui sejumlah relasi atau tabel dua dimensi.
Normalisasi terhadap aspek-aspek pelayanan jasa yang terkait dengan kapal dan kargo tersebut dilakukan dengan menggunakan skema canonical. Proses normalisasi dengan skema canonical tersebut dilakukan secara bertahap dengan mengeliminasi aspek-aspek redundansi, aspek ketergantungan (transitif maupun fungsi) dan interseksi antar atribut pada setiap penggabungan sudut pandang. 
Beberapa diagram yang diperoleh berdasarkan sejumlah sudut pandang tersebut, selanjutnya dilakukan penggabungan secara bertahap.

1. Sudut Pandang Pertama dari Pengguna
Sudut pandang terhadap kapal, merupakan inspirasi dasar terhadap semua hal yang terkait dengan kargo, tepatnya rinci tentang kargo dan daya muat kapal terhadap kargo.

2. Sudut Pandang Kedua dari Pengguna
Pelayaran dan sandar kapal dalam rangka proses bongkar/muat dilakukan pada beberapa pelabuhan. Minimal akan melibatkan dua pelabuhan yaitu pelabuhan asal.

3. Sudut Pandang Ketiga dari Pengguna
Setiap satu kapal dalam melakukan satu pelayaran hanya dilengkapi dengan satu surat jalan (sebagai ilustrasi dalam penelitian ini nomor surat tersebut direpresentasikan melalui Kode Surat Muatan), yang mana surat ini dikeluarkan/diberikan oleh pihak pelabuhan tempat kapal sandar pada saat kapal memuat dan membongkar kargo.

4. Sudut Pandang Keempat dari Pengguna
kargo-kargo tersebut juga dilengkapi dengan kode kargo yang mana kode ini terutama sekali sangat dibutuhkan oleh agen untuk melacak kepemilikan, dimensi atau tonase serta tanggal pengiriman kargo tersebut.

5. Sudut Pandang Kelima dari Pengguna
kode kargo juga diharapkan dapat memberikan rinci lebih lanjut dari kargo. Untuk itu maka elemen yang ditampilkan pada sudut pandang keempat dari pengguna perlu dirinci lebih lanjut.

6. Sudut Pandang Keenam dari Pengguna
Merupakan bentuk final dari struktur basis data yang diperoleh dari pandangan terakhir.

Perancangan dengan menggunakan model skema canonical, merupakan metoda yang bertitik tolak dari sudut pandang pengguna, sehingga dengan demikian seorang perancang model dapat mengimplementasikan pokok fikirannya melalui bahasa gambar yang relatif lebih komunikatif. Dalam penerapan skema canonical sudut pandang yang diimplementasikan harus dalam bentuk normal ketiga, namun demikian dalam setiap langkah penggabunagn sudut pandang terjadi proses penajaman dan eliminasi terhadap berbagai aspek ketergantungan dan redundansi, sehingga menghasilkan struktur yang optimal.

Sumber: http://jurnal-tip.net/jurnal-resource/file/8.pdf

Selasa, 22 Oktober 2013

Protocol Transaksi konkruen

Proses pengelolaan operasi pada basis data secara simultan tanpa saling berinterferensi satu sama lain.
Pengaksesan konkuren yg hanya membaca data, tidak akan saling ber-interferensi, tetapi apabila ada yg mengupdate data, akan saling berinterferensi & menyebabkan terjadi ketidakkonsistenan.
Akses konkuren tidak akan bermasalah jika user hanya melakukan pembacaan data saja, gangguan akan terjadi jika dua atau lebih user mengakses database secara simultan dan sedikitnya melakukan satu perubahan (update), maka dapat menyebabkan ketidak-konsistenan (inconsistencies).

3 Masalah akibat concurrency
1.       Lost update (modifikasi yg hilang)

Masalah operasi update yg sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari pengguna lain.
Contoh diatas menerangkan hilangnya modifikasi yang dilakukan oleh T2. Kehilangan modifikasi ini dapat diatasi dengan mencegah T1 melakukan pembacaan data sebelum perubahan T2 selesai dilaksanakan.

2.       Uncommited dependency (ketergantung an yg tidak sukses/modifikasi sementara)
Masalah terjadi saat suatu transaksi membaca data dari transaksi lain yg belum dicommit. Misalkan masalah modifikasi sementara terjadi jika satu transaksi (transaksi pertama) membaca hasil dari transaksi lainnya (transaksi kedua) sebelum transaksi kedua dinyatakan committed. Biasa dikenal dengan dirty read problem.
Contoh transaksi T4 merubah balx menjadi £200 tetapi digagalkan, sehingga balx harus dikembalikan ke nilai awal sebelum transaksi yaitu £100. Sedangkan transaksi T3 membaca nilai hasil modifikasi tadi yaitu, balx (£200) dan menguranginya dengan £10, sehingga memperoleh nilai akhir £190, yang seharusnya £90.
Masalah tersebut dapat dihindari Problem dengan mencegah T3 membaca balx sebelum T4 dinyatakan committed  atau abort.

3.       Inconsistent analysis
Masalah terjadi saat satu transaksi membaca beberapa nilai tetapi transaksi kedua pd waktu sama memodifikasi nilai tersebut.
Contoh transaksi T6 menjumlahkan variable balx (£100), baly (£50), dan balz (£25). Pada saat yang hampir bersamaan transaksi T5 memindahkan £10 dari balx ke balz, sehingga transaksi T6 mendapatkan hasil akhir yang salah (yaitu kelebihan £10).
Hal ini disebut dengan nonrepeatable ( or fuzzy) read.
Masalah tersebut dapat dihindari dengan mencegah transaksi T6 membaca balx dan balz sebelum transaksi T5 lengkap di-update.
Objektif pengontrolan konkurensi
Penjadualan transaksi untuk mencegah adanya saling interferensi. Hanya satu transaksi dieksekusi pada satu waktu : satu transaksi di-commit sebelum transaksi lain diperkenankan untuk mulai. Transaksi dapat dilakukan pada sistem paralel, dengan cara penjadualan bersama.

SERIALIZABILITY
Schedule atau jadual merupakan urutan dari operasi read & write secara bersamaan pada sekumpulan transaksi yg konkuren. Serial schedule merupakan jadual dimana operasi2 setiap transaksi dieksekusi secara berurutan tanpa terselip operasi dari transaksi lain. Nonserial schedule merupakan jadual dimana operasi2 dari sekumpulan transaksi konkuren dapat saling menyelip. Serializable berarti jika jadual (nonserial) menghasilkan hasil yg sama seperti halnya jadual serial lainnya.
Urutan operasi sangat penting
·         Jika 2 transaksi hanya melakukan operasi read data, maka tidak terjadi konflik & urutan operasi tidak penting.
·         Jika 2 transaksi melakukan operasi read & write pada data yg berbeda, maka tidak terjadi konflik & urutan operasi tidak penting.
·         Jika satu transaksi melakukan operasi write data & yg lain melakukan operasi read & write pada data yg sama, maka urutan eksekusi sangat penting.

Metode untuk menjamin serializability
1. LOCKING
2. TIMESTAMPING
Keduanya konservatif (pesimistik) karena transaksi ditunda untuk mencegah konflik dg transaksi lain di waktu kemudian.

Metode Optimistic
Berasumsi bhw konflik jarang terjadi sehingga proses tetap berjalan & pengecekan dilakukan pada saat transaksi sudah di-commit.

Metode Locking
Prosedur untuk mengontrol pengaksesan data secara konkuren. Ketika satu transaksi mengakses database, sebuah kunci (lock) dapat mengabaikan akses untuk transaksi lainnya, untuk menghindari hasil yang salah.
Secara umum, transaksi harus menegaskan penguncian (lock) shared (read) atau exclusive (write) terhadap data item sebelum pembacaan (read) atau penulisan (write).
Aturan dasar penguncian (locking):
·         Shared Lock, jika transaksi memiliki shared lock pada suatu data item, maka transaksi tersebut dapat melakukan pembacaan tetapi tidak melakukan perubahan.
·         Exclusive Lock, Jika transaksi memiliki exclusive lock pada suatu data item, maka transaksi tersebut dapat melakukan pembacaan dan perubahan terhadap data item tersebut.

Penggunaan kunci (lock) :
Transaksi yg akan mengakses suatu data harus terlebih dahulu menguncinya, meminta kunci S jika hanya melakukan read data saja atau kunci X jika untuk melakukan operasi read & write. Jika data tsb belum dikunci oleh transaksi apapun, maka kunci diperkenankan.
Jika item tersebut telah dikunci, DBMS menentukan apakah permintaan sesuai dengan penguncian yang ada. Jika yang digunakan adalah shared lock maka permintaan akan diberikan, jika bukan (exclusive lock) maka transaksi harus menunggu kunci tersebut dilepaskan.
Transaksi terus menahan suatu kunci sampai dilepaskan secara eksplisit selama eksekusi atau telah selesai.
Matriks LOCKING

Protokol Two-Phase Locking (2PL)
Protokol untuk menjamin serializability. Suatu transaksi menggunakan protokol 2PL jika seluruh operasi penguncian (locking) mendahului operasi pelepasan kunci (unlock) dalam transaksi.  Terdapat dua fase untuk transaksi, yaitu                :
·         Growing phase – mendapatkan seluruh kunci tetapi tidak dapat melepaskan kunci.
·         Shrinking phase – melepaskan kunci tetapi tidak mendapatkan kunci baru.

Aturan dasar 2PL
Satu transaksi harus meminta sebuah kunci untuk suatu iter sebelum melaksanakan operasi pada item tersebut. Kunci yang diminta dapat berupa write lock maupun read lock , tergantung kebutuhan
Sekali transaksi melepaskan kunci, maka transaksi tersebut tidak dapat meminta kunci yang baru.

Deadlock
Deadlock merupakan kebuntuan (impasse) yang mungkin dihasilkan ketika dua atau lebih transaksi saling menunggu  kunci yang disimpan oleh transaksi lain agar dilepaskan.
Tiga teknik yang umum dilakukan untuk mengatasi deadlock       : 

Timeout
-          Dengan pendekatan timeout, suatu transaksi yang meminta kunci hanya akan menunggu sistem mendefinisikan periode waktu. 
-          Jika kunci belum diberikan dalam periode ini, maka permintaan kunci kehabisan waktu (times out).
-          Dalam kasus ini, DBMS mengasumsikan transaksi terjadi deadlocked, walaupun mungkin tidak terjadi, dan transaksi tersebut digagalkan dan secara otomatis mengulang dari awal transaksi yang bersangkutan.

·         Deadlock prevention
-          Pendekatan lain yang mungkin dilakukan untuk menghindari deadlock adalah memerintahkan transaksi menggunakan transaksi timestamps :
§  Wait-Die – memungkinkan hanya transaksi lama menunggu traksaksi baru, selain itu transaksi digagalkan (dies) dan diulang dengan timestamps yang sama.
§  Wound-Wait – hanya transaksi baru yang menunggu transaksi lama. Jika transaksi lama meminta kunci yang dimiliki oleh transaksi baru, maka transaksi baru akan digagalkan  (wounded).

·         Deadlock detection and recovery
-          Pendeteksian deadlock biasanya ditangani dengan membuat konstruksi Wait For Graph (WFG) yang memperlihatkan ketergantungan transaksi, yaitu transaksi Ti bergantung pada Tj jika transaksi Tj memegang kunci untuk data item yang ditunggu olah Ti.
-          WFG merupakan graf berarah (directed graph) G =(N, E), yang dapat debentuk dengan cara :
§  Buatlah Node untuk setiap transaksi
§  Buatlah edge berarah Ti -> Tj, jika Ti menunggu kunci untuk item yang sedang dikunci oleh Tj.
-          Deadlock terjadi jika dan hanya jika WFG mengandung siklus.
-          Recovery basis data merupakan suatu proses penyimpanan kembali basis data pada keadaan yang benar sebelum terjadi kegagalan(failure).

Testing for serializability

Serializability : pengontrolan secara konkurensi kepada kebenaran dari kriteria yang membutuhkan eksekusi konkuren dari transaksi harus ekuivalen terhadap efek dari eksekusi serial transaksi tersebut.
Tujuan dari protokol kontrol concurrency adalah menjadwalkan transaksi dengan suatu cara untuk menghindari saling mempengaruhi/mengganggu satu dengan yang lain. Hal yang paling umum dilakukan adalah menjalankan satu transaksi dalam satu waktu, tetapi tujuan dari multi user DBMS adalah memaksimalkan tingkat concurrency atau parallelism dalam sistem, sehingga traksaksi-transaksi dapat dieksekusi secara parallel tanpa mengganggu transaksi lainnya. Serializability mengidentifikasi eksekusieksekusi dari transaksi dijamin untuk kepastian konsistensi.
-          Penjadwalan (Schedule) adalah Serangkaian operasi dari sekumpulan transaksi konkuren yang menjaga perintah dari operasi-operasi dalam setiap transaksi individual.
-          Serial Schedule adalah penjadwalan yang dilakukan dimana operasi-operasi disetiap transaksi dieksekusi secara berurutan tanpa terjadi penyelakan operasi dari transaksi lainnya. Dalam eksekusi serial tidak akan ada interferensi antar transaksi, tetapi tidak menjamin hasil dari keseluruh eksekusi serial dari himpunan transaksi akan sama/identik.
-          Nonserial Schedule adalah penjadwalan yang dilakukan dimana operasi-operasi dari sekumpulan transaksi konkuren saling berselakan (interleaved).

Tujuan dari serializability adalah menemukan nonserial schedule yang memungkinkan transaksi untuk mengeksekusi secara konkuren tanpa mengganggu/interferen yang lainnya dan menghasilkan state database yang dapat dihasilkan oleh eksekusi serial. Dengan kata lain, jika terdapat nonserial schedule yang ekuivalen dengan beberapa serial schedule disebut dengan serializability.

Dalam serializability, perintah operasi pembacaan/penulisan sangat penting:
-          Jika terdapat dua transaksi hanya membaca data item, maka tidak akan terjadi konflik dan perintah tidak diperlukan.
-           Jika terdapat dua transaksi yang membaca atau menulis data item yang terpisah, maka tidak akan terjadi konfilk dan perintah tidak diperlukan.
-           Jika satu transaksi menuliskan data item dan transaksi lainnya membaca atau menulis data item yang sama, maka perintah eksekusi diperlukan.
Contoh konflik dalam Serializability
a.       nonserial schedule S1
b.      nonserial schedule S2, ekuvalen dengan S1
c.       serial schedule S3, ekuivalen dengan S1dan S2
Schedule S3 merupakan serial schedule dan ketika S1 dan S2 ekuivalen dengan S3, maka S1 dan S2 merupakan serializability schedule. Jenis serializability yang seperti ini dikenal sebagai conflict serializability, yaitu memerintahkan operasi yang saling bertentangan dengan suatu cara sama seperti eksekusi serial.
Dengan constrained write rule (transaksi yang mengubah data item berdasarkan padanilai awal, yang pertama kali dibaca), menggunakan precedence (or serializability) graph untuk memeriksa serializability. Precedence Graph merupakan directed graph G = (N,E) yang berisi dari himpunan node N dan edge E, sbb :
Buat node untuk setiap transaksi
-          Buat edge penghubung Ti -> Tj, jika Tj membaca nilai dari item yang ditulis oleh Ti
-          Buat edge penghubung Ti -> Tj, jika Tj menuliskan nilai ke item setelah dibaca oleh Ti
-          Buat edge penghubung Ti -> Tj, jika Tj menuliskan nilai ke item setelah ditulis oleh Ti
Jika edge Ti -> Tj terdapat dalam precedence graph untuk S, kemudian terdapat serial schedule S’ yang ekuivalen dengan S, maka Ti harus ditampilkan sebelum Tj. Jika precedence graph mengandung siklus schedule maka tidak akan terjadi conflict serializability.
Contoh - Non-conflict serializable schedule:
-          T9 memindahkan £100 dari variabel balx ke variabel baly.
-          T10 mengurangi kedua variabel tersebut sebesar 10%.
-          Precedence grah untuk schedule ini memiliki siklus, sehingga bukan merupakan conflict serializability.
View Serializability
Terdapat beberapa jenis serializability yang menawarkan definisi yang tidak terlalu kaku (less stringent definition) dari schedule ekuivalen dari pada conflict serializability. Definisi yang lebih sedikit batasannya disebut dengan view schedule. Dua schedule S1 dan S2 disebut equivalent jika:
-          Untuk setiap data item x, jika Ti membaca nilai awal dari x dalam S1, Ti juga harus membaca nilai awal dari x dalam S2.
-          Untuk setiap pembacaan atas x oleh Ti dalam S1, jika nilai dibaca oleh x dituliskan oleh Tj, Ti juga harus membaca nilai dari x yang dihasilkan oleh Tj dalam S2.
-          Untuk setiap data item x, jika penulisan terskhir dari x ditampilkan oleh Ti dalam S1, beberapa transaksi harus menampilkan penulisan akhir dari x dalam S2.
Schedule dikatakan view serializable jika view tersebut ekuivalen dengan serial schedule. setiap conflict serializable schedule merupakan view serializable, walaupun kebalikannya tidak benar. Dapat menampilkan bahwa view serializable schedule yang tidak conflict serializable terdiri dari satu atau lebih blind writes.
RECOVERABILITY
-          Serializability mengidentifikasikan schedule yang memelihara konsistensi database, diasumsikan tidak ada transaksi yang gagal. Juga memeriksa recoverability dari transaksi dalan schedule. Jika transaksi gagal, atomicity membutuhkan akibat dari transaksi yang harus diselesaikan.
-          Durability state ketika transaksi commit, perubahannya tidak dapat diselesaikan (tanpa menjalankan yang lain, penggantian, transaksi).

-          Recoverable Schedule merupakan schedule yang setiap pasang dari transaksi Ti dan Tj, jika Tj membaca sebuah data item sebelum dituliskan oleh Ti, maka operasi commit dari Ti mendahului operasi commit dari Tj.

Recoverability

Data dan database merupakan komponen terpenting dalam suatu sistem informasi manajemen, disamping tentu saja aplikasi untuk sistem informasi harus tersedia, keduanya saling tergantung. Suatu aplikasi sistem informasi manajemen tidak ada gunanya jika tidak mempunyai data yang lengkap, demikian juga sebaliknya jika punya data tetapi tidak mempunyai aplikasi yang digunakan untuk mengelolanya sehingga tidak dapat dihasilkan suatu laporan, statistik atau pun informasi.
Klasifikasi kerusakan
-          Kerusakan transaksi :
-          Logical errors: transaksi tidak lengkap karena ada kesalahan dalam program
-          System errors: database harus menghentikan sementara transaksi yang aktif karena ada kondisi yang tidak diharpkan (mis., deadlock)
-          System crash: kerusakan listrik atau hardware atau software yang menyebabkan system crash.
-          Penyimpan sementara: I nformasi yang ada di media ini hanya ada selama listrik mengalir
-          Kerusakan disk:  akibat dari head diskdrive yang rusak atau kotor

Algoritma Recovery adalah teknik untuk meyakinkan konsistensi database dan transaksi atomik dan ketahanan terhadap kerusakan memiliki dua bagian :
1.       Aksi yang ditempuh selama transaksi berjalan normal untuk menjamin informasi yang memadai yang kelak dibutuhkan oleh mekanisme recovery
2.       Aksi ditempuh setelah terjadinya kerusakan/kegagalan sistem yang dilakukan untuk memulihkan isi database ke suatu keadaan yang menjamin konsistensi basis data, keatomikan dan ketahanan

Struktur penyimpan

1.       Penyimpan sementara:
    1. Tidak mampu mengatasi kerusakan sistem
    2. contoh: main memory, cache memory
2.       Penyimpan tetap:
    1. Mampu mengatasi kerusakan sistem
    2. Cnoth : disk, tape, flash memory,
                        non-volatile (battery backed up) RAM
  1. Penyimpan stabil:
    1. Bentuk lain dari penyimpanan untuk mengatas kerusakan sistem
    2. Pembuatan copy database dan menyimpan di tempat lain untuk menjaga jika ada kerusakan
Akses data
  Blok menunjukkan satuan pentransferan data dari dan ke disk, dan dapat berisi banyak item / baris data.
  Buffer block blok yang menyimpan data sementara di main memory.
  Blok ini bergerak antara disk dan main memory melalui dua operasi:
-          input(B) transfer block B  ke main memory.
-          output(B) transfer buffer blok B ke disk, dan menggantikan blok yang lama.
  Setiap transaksi Ti mempunyai area kerja private untuk tempat pengelolaan salinan dari semua item data yang diubah oleh transaksi.
-           Ti‘ adalah copy data item X dan disebut xi.
  Untuk menyederhanakan, setiap item data disimpan dalam blok tunggal.
  Transaksi mentransfer data ke dan dari area kerja ke buffer dengan operasi :
-          read(X) memberi harga X dari basis data ke variabel lokal di memori bernama xi.
-          write(X) memberi harga dari variabel lokal xi ke item data {X} blok buffer.
-          Jika blok dimana X berada tidak ada di memori utama,maka lakukan perintah input (Bx).
  Transaksi yang menggunakan kedua operasi tersebut :
                                Ti:           get vTransfer
                                                read (A)
                                                A ß A – vTransfer
            Write (A)
           Read (B)
           B ß B + vTransfer
           Write (B)
           Display A

           Display B



Recovery and Atomicity
Mengubah database tanpa memastikan bahwa transaksi berhasil baik akan membuat database dalam keadaan tidak konsisten. Seperti pada contoh pentransferan uang, transaksi yang mengubah harus berjalan sempurna atau tidak samasekali. Beberapa operasi output membutuhkan Ti  (untuk output A dan B). Kerusakan dapat terjadi bila salah satu perubahan pada item data tidak terjadi.
Dengan asumsi ruang disk yang dialokasikan untuk basis data tidak rusak, maka da 3 pilihan skema untuk menjalankan mekanisme recovery secara otomatis, yaitu :
1.       File log dengan penundaan pengubahan
2.       File log dengan pengubahan langsung
3.       Page bayangan (Shadow paging)

Recovery berbasis log

Sebuah  log adalah pelindung kestabilan penyimpan.
-          File log ini berisi log record, yang berkorelasi dengan semua operasi perubahan pada basis data.
Ketika transaksi Ti mulai, dalam registernya akan tertulis  <Tstart>log record
Sebelum Ti execute write(X), dalam log record tertulis <Ti, X,  V1,  V2>, dimana V1 adalah nilai X  sebelum ditulis, dan V2 adalah nilai yang baru dari X.
-          Log record mencatat bahwa Ti telah melakukan penulisan pada Xj   Xj mempunyai nilai V1 sebelum ditulis, dan akan bernilaiV2 setelah transaksi write.
Ketika Ti selesai, log record menulis <Ti  commit> .
Log record langsung menulis dalam penyimpan tetap bukan buffer
Duapendekatan penggunaan log
-          Penundaan modifikasi database
-          Pengubahan langsung database

Penundaan pengubahan database
Skema penundaan pengubahan database mencatat semua perubahan ke log, tetapi menunda untuk writes setelah commit.
Anggap transaksi berjalan berurutan
Transaksi mulai dengan menulis record <Ti  start> ke log.
Sebuah operasi  write(X) menyimpulkan bahwa di log record telah tertulis <Ti, X, V>, dimana V adalah nilai baru untuk X
-          Nilai lama tidak diperlukan dalam skema ini

ketika Ti telah commit, maka dalam log tertulis <Ti commit>
Akhirnya, log record dibaca dan digunakan untuk eksekusi penulisan selanjutnya
Selama recovery sesudah rash, sebuah transaksi butuh penyelesaian <Ti  start> dan<Ti commit> dalam log.
Penulisan ulang transaksi Ti ( redoTi) mengubah nilai data menjadi baru.
Contoh transaksi  T0 dan T1 (T0 dieksekusi sebelum T1):
                T0: read (A)                                                         T1 : read (C)
                                A: - A - 50                                                    C:-   C- 100
                                Write (A)                                                     write (C)
                                read (B)
                                B:-  B + 50
                                write (B)






Berikut ditunjukkan log dari 3 transaksi.

Jika ada kegagalan sistem:
1.       redo(T0) yang membuat semua nilai item data yang diubah T0 ke nilai-nilai baru
2.       Untuk me-redo transaksi T0 hanya membutuhkan file log yang mengandung dua buah record yang memuat  <T0 start> dan <T0 commit>
Pengubahan database langsung
Skema immediate database modification adalah mekanisme dengan perubahan secara langsung ke basisdata meskipun transaksi masih berlangsung.
Update log record harus ditulis sebelum item database ditulis
-          Perubahan aktual ke database tidak diperkenankan sebelum record yang bersesuaian dalam file log dituliskan ke media penyimpan stabil

-          Sebelum eksekusi sebuah operasi output(B), record dalam file log yang berhubungan dengan item data B telah ditulis dalam media penyimpan stabil

 Prosedur recovery untuk sistem ini ada dua:
-          undo(Ti) yang merekam kembali nilai semua item data yang diubah oleh transaksi Ti ke nilai awalnya.
-          redo(Ti) yang membuat semua nilai item data yang diubah oleh transaksi Ti ke nilai barunya
Setelah terjadi kerusakan database, skema recovery akan melihat isi file log untuk mengetahui transaksi mana yang akan diulangi, dan transaksi mana yang dibatalkan, dengan aturan:
-          Transaksi Ti harus dikembalikan ke kondisi awal (undo) jika dalam file log ada record <Ti start>, tetapi tidak ada record <Ti commit>.
-          Transaksi Ti harus dituntaskan (redo) jika dalam file log ada record <Ti start> dan <Ti commit>.
Operasi undo dilaksanakan terlebih dahulu dari pada redo.
Contoh:
 Recovery untuk setiap kasus :
a.       undo (T0): B kembali bernilai 2000 dan B ke 1000.
b.      undo (T1) dan redo (T0): C kembali menjadi 700, dan kemudian A dan B are diset ke 950 dan 2050 .
c.       redo (T0) dan redo (T1): A dan B di set ke 950 dan 2050 demikian pula  C di set ke 600

Checkpoint
Dalam melakukan redo maupun undo sebuah transaksi ada beberapa kesulitan :
1.       Proses pencarian membutuhkan waktu
2.       Sebagian besar transaksi yang perlu diulangi sudah menuliskan perubahannya ke database sehingga tidak benar-benar perlu diulangi
Untuk mengurangi beban waktu tambahan ini maka digunakan checkpointing
3.       Menulis semua record log yang sedang berada di memori utama ke media penyimpanan stabil.
4.       Menuliskan semua blok buffer yang berubah ke disk.
5.       Menuliskan record < checkpoint> di file log ke media penyimpan stabil.

Selama recovery dibutuhkan kepastian bahwa transaksi Ti mulai sebelum checkpoint :
1.       Keberadaan record <checkpoint> dalam file log memungkinkan sistem menjalankan proses recoverynya dengan lebih efisien
2.       Dari file log dapat diketahui bahwa transaksi Ti yangmemiliki record <Ti commit> yang muncul sebelum checkpoint terakhir .
3.       Kondisi tersebut menandakan bahwa perubahan kedalam database telah dituliskan
Untuk teknik recovery dengan perubahan langsung,maka akan diterapkan ketentuan :
4.       Untuk transaksi Ti dan semua transaksi setelah Ti (dinyatakan sebagai Tk) yang tidak memiliki record <Tk commit>, jalankan operasi undo(Tk)
5.       Untuk transaksi Ti dan semua transaksi setelah Ti (dinyatakan Tk) yang memiliki record <Tk commit>,jalankan operasi redo(Tk)
Untuk teknik recovery dengan penundaan pengubahan, operasi undo tidak dibutuhkan. Karena itu hanya ketentuankedua yangharus dilakukan yaitu menjalankan operasi redo(Tk)
Contoh:

T1 dapat dilanjutkan
T2 dan T3 ulang
T4 batalkan

Shadow Paging
Shadow paging adalah alternatif lain selain file log yang memerlukan akses ke disk yang lebih sedikit.
Dasar pemikiran: merawat dua halaman tabel selama transaksi berlangsung current page table, dan shadow page table
Simpan tabel bayangan dalam penyimpan tetap, dengan demikian jejak transaksi tersimpan.
-          Shadow page table tidak pernah berubah selama eksekusi
Pada waktu mulai maka kedua tabel ditandai. Hanya page asli yang digunakan selama eksekusi transaksi berlangsung.
Kapanpun halaman ditulis untuk pertama kali
-          Copy halaman ini diberikan ke halaman yang tidak dipakai.
-          Halaman sekarang dipakai sebagai sumber untuk di copy
-          Update dilakukan di copyan
Contoh Page Table

Tabel asli dan tabel bayangan terbentuk terbentuk setelah transaksi

Untuk mengcommit transaksi, harus dilakukan :
1.       Menjamin semua page data yang ada dalam memori utama yang telah diubah oleh transaksi, disalin ke dalam disk
2.       Simpan tabel page yang aktif ke disk.
3.       Simpan alamat disk dari tabel page aktif ke lokasi yang tetap dalam media penyimpanan stabil yang telah berisi alamat tabel page bayangan. Aksi ini melakukan penimpaan pada alamat tabel page bayangan yang lama. Tabel page aktif akan menjadi tabel page yang baru dan transaksi commit.
Jika crash terjadi sebelum langkah ke 3 selesai dikerjakan, kita akan kembali ke keadaan sebelum transaksi terjadi. Jika crash terjadi setelah langkah ke 3 maka efek transaksi tersimpan, sehingga redo tidak perlu.
Keunggulan dari shadow-paging
-          Tidak adanya tambahan waktu untuk penulisan record ke dalam file log
-          Proses recovery lebih cepat karena tidak butuh undo atau redo
Kelemahannya :
-          Tambahan waktu untuk proses commit
Proses commit sebuah transaksi membutuhkan sejumlah blok data untuk direkam, seperti blok data aktual, tabel page aktif dan alamat disk dari tabel page aktif
-          Pemisahan data ( fragmentasi )
Skema shadow paging menyebabkan page database mengubah lokasinya saat terjadi perubahan data, sehingga terjadi fragmentasi data yang dapat memperlambat transfer data dari database ke main memory
-          Data sampah (garbage)
Setelah transaksi tercommit, page database yang berisi data versi lama telah diubah menjadi tidak terakses dan page-page inilah yang disebut sampah
-          Lebih sulit dalam mengembangkan algoritma supay transaksi berjalan konkuren
Lebih menggunakan basis log

Recovery untuk transaksi konkuren
Meskipun banyak transaksi yang terlibat, sistemhanya akan menggunakan sebuah buffer disk dan sebuah file log. Blok untuk buffer akan dipakai secara bersama oleh semua transaksi . Jika sebuah transaksi T telah mengubah item data Q, tidak boleh ad atransaksi lain yang boleh mengubah item data yang sama hingga T telah di-commit atau di-roll back.  Dapat memanfaatkan Locking Protocol Dua fase yang ketat, yangmenerapkan penguncian dengan mode exclusive hingga akhir transaksi.
File log dapat digunakan untuk meroll back transaksi yang gagal dengan penelusuran mundur untuk setiap record yang terbentuk.
Dalam sebuah sistem yang konkuren, record checkpoint dalam file log berbentuk < checkpoint L>
diman L merupakan daftar transaksi yang aktif pada saat checkpoint terjadi
Ketika sistem melakukan pemulihan data maka yang dilakukan adalah:
  1. cari undo-list dan  redo-list dalam keadaan kosong
  2. Lakukan penelusuran mundur terhadap file log sampai ditemukannya  <checkpoint L> . 
    Untuk setiap record yang ditemukan :
-          Jika record adalah <Ti commit>, tambahkan Ti dalam redo-list
-          Ika record adalah <Ti  start>, maka  jika Ti tidak ada dalam redo-list, tambahkan Tdalam undo-list
  1. Untuk setiap Tdalam L, jika Ti itidaka ada dalam redo-list, tambahkan Ti dalam undo-list

Begitu kedua daftar terbentuk, maka proses recpovery akan dilakukan dengan langkah-langkah sbb :
  1. Lakukanpenelusuran mundur sampai ditemukan record <Ti start> untuk setiap transaksiTi dalam undo-list.
-          Selama penelusuran, jalankan operasi undo untuk setiap record dalam file log yangmemiliki transaksi Ti pada undo-list.
  1. Cari record <checkpoint L> terakhir dalam filelog.
  2. Lakukanpenelusuran maju pada file log mulai dari record <checkpoint L> terakhir dan jalankan operasi .
-          redo untuk setiap record dalam file log yang dimiliki transaksi Ti yang ada dalam redo-list
Contoh Recovery
Langa algorithma recovery dalam file log:
<T0 start>
<T0, A, 0, 10>
<T0 commit>
<T1 start>
<T1, B, 0, 10>
<T2 start>                   /* Scan in Step 4 stops here */
<T2, C, 0, 10>
<T2, C, 10, 20>
<checkpoint {T1, T2}>
<T3 start>
<T3, A, 10, 20>
<T3, D, 0, 10>
<T3 commit>

Backup

Berdasarkan waktu pelaksanaan atau strateginya ada 2 jenis operasi backup :
  1. Backup statis (Offline backup), dimana backup dilakukan dengan lebih dulu menonaktifkan basis data secara keseluruhan.
-          Backup statis dapat dilakukan oleh sistem operasi atau dengan program khusus yang diadakan DBMS.
-          Backup statis dilakukan dengan penyalinan obyek database secara keseluruhan
  1. Backup dinamis (online backup), dimana backup dilakukan tanpa penonaktifan basis data.
-          Backup dinamis dilakukan dengan penyalinan database secara keseluruhan dengan cara selektif, yaitu hanya terhadap tabel-tabel yang mengalami perubahan, misalnya dengan checkpoint
-          Secara periodik, dbms akan melakukan pembentukan file dump di media penyimpanan stabil yang berisi salinan dari semua tabel sebelum terjadinya perubahan
Sistem backup jarak jauh
Remote backup memungkinkan sistem berjalan terus meskipun penyimpan utama mengalami kerusakan.

Pendeteksian kerusakan:
-          Harus menerapkan beberap asaluran komunikasi yang independen diantara situs utama dengan situs backup.
Pemindahan kendali:
-          Ketika situs utama mengalami kerusakan situs backup akanmengambil alih pemrosesan menjadi situs primer baru
Waktu untuk pemulihan
-          Jika isi file log pada situs remotebackup menjadi besar sekali proses recovery akan emmakan waktu, untuk dapat diatas dengan melakukan record redo secara periodik
-          Konfigurasi hot spare dapat membuat proses pengalihan kontrol berlangsung cepat
Waktu untuk commit
-          supaya ada jaminan bahwa perubahan pada transaksi tercommit, sebuah transaksi tidak harus dinyatakan commit sebelum record lognya diterima situs backup.

Derajat durabilitas dapat diklasifikasikan sebagai :
-          One safe. Sebuah transaksi dicommit segera setelah record log tersebut telah ditulis pada situs lokal.
-          Two very safe. Sebuah transaksi di commit segera setelah record log tersbut telah direkam baik pada situs primer maupun backupnya.

Block Storage Operations

Portion of the Database Log Corresponding to T0 and T1
 State of the Log and Database Corresponding to T0 and T1

Portion of the System Log Corresponding to T0 and T1


 State of System Log and Database Corresponding to T0 and T1