Kenapa Kita Butuh View Serializability?
Kita tahu bahwa serial schedule tidak pernah meninggalkan database dalam keadaan tidak konsisten karena tidak ada eksekusi transaksi bersamaan. Namun jadwal non-serial dapat membuat database dalam keadaan tidak konsisten karena ada beberapa transaksi yang berjalan bersamaan. Dengan memeriksa bahwa jadwal non-serial yang diberikan dapat view serializable, kami memastikan bahwa itu adalah schedule yang konsisten.
Anda mungkin bertanya-tanya alih-alih memeriksa bahwa jadwal non-serial dapat serial atau tidak, tidak bisakah kita memiliki jadwal serial sepanjang waktu? Jawabannya adalah tidak, karena eksekusi transaksi bersamaan sepenuhnya memanfaatkan sumber daya sistem dan jauh lebih cepat dibandingkan dengan jadwal seri.
View Equivalent
Mari kita pelajari cara memeriksa apakah kedua jadwal tersebut memiliki tampilan yang setara.
Dua jadwal T1 dan T2 dikatakan setara, jika memenuhi semua kondisi berikut:
1. Initial Read: Pembacaan awal dari setiap item data dalam transaksi harus cocok dengan kedua jadwal. Misalnya, jika transaksi T1 membaca data item X sebelum transaksi T2 dalam jadwal S1 maka dalam jadwal S2, T1 harus membaca X sebelum T2.
Read vs Initial Read: Anda mungkin bingung dengan istilah membaca awal. Di sini pembacaan awal berarti operasi pembacaan pertama pada item data, misalnya, item data X dapat dibaca beberapa kali dalam suatu jadwal tetapi operasi pembacaan pertama pada X disebut pembacaan awal. Ini akan menjadi lebih jelas setelah kita mendapatkan contoh di bagian selanjutnya dari artikel yang sama ini.
2. Final Write: Operasi penulisan akhir pada setiap item data harus cocok dengan kedua jadwal. Sebagai contoh, item data X terakhir ditulis oleh Transaksi T1 dalam jadwal S1 kemudian pada S2, operasi penulisan terakhir pada X harus dilakukan oleh transaksi T1.
3. Update Read: Jika dalam jadwal S1, transaksi T1 membaca item data yang diperbarui oleh T2 maka dalam jadwal S2, T1 harus membaca nilai setelah operasi penulisan T2 pada item data yang sama. Sebagai contoh, Pada jadwal S1, T1 melakukan operasi baca pada X setelah operasi tulis pada X oleh T2 kemudian pada S2, T1 harus membaca X setelah T2 melakukan menulis pada X.