Antarmuka ILog (txlogpub.h)
Menyediakan fungsionalitas pengelogan tingkat rendah generik.
Common Log File System (CLFS), menyediakan fungsionalitas yang merupakan superset yang disediakan oleh ILog.
Warisan
Antarmuka ILog mewarisi dari antarmuka IUnknown . ILog juga memiliki jenis anggota ini:
Metode
Antarmuka ILog memiliki metode ini.
ILog::AppendRecord Tulis rekaman baru di akhir log. |
ILog::Force Memaksa konten log ke disk, setidaknya hingga melalui LSN yang ditentukan. |
ILog::GetLogLimits Mengambil informasi tentang batas log saat ini. |
ILog::ReadRecord Membaca rekaman dari log. |
ILog::ReadRecordPrefix Membaca bagian awal rekaman dari log. |
ILog::SetAccessPolicyHint Memberikan petunjuk tentang implementasi tentang pola di mana rekaman akan dibaca. |
ILog::TruncatePrefix Membuang awalan log yang ditentukan, membuatnya tidak lagi dapat diambil. |
Keterangan
WAL adalah teknik yang digunakan oleh aplikasi tertentu, seperti sistem manajemen database, untuk menerapkan transaksi atomik dan terisolasi. Teknik ini melibatkan penulisan catatan perubahan pada sumber daya aplikasi ke log sebelum Anda membuat perubahan ini. Dengan cara ini perubahan dapat dikembalikan jika diperlukan, misalnya jika transaksi gagal atau terganggu. Agar aplikasi dapat menyediakan transaksi yang kuat terhadap gangguan seperti crash sistem atau kegagalan daya, implementasi pengelogan harus menyediakan metode untuk memaksa log; yaitu, untuk memastikan bahwa rekaman yang ditulis sebelumnya ada di disk sebelum melanjutkan.
Menulis rekaman yang menggunakan ILog adalah operasi berurutan; artinya, rekaman baru selalu ditambahkan ke akhir log. Setiap rekaman yang ditambahkan ke log diberi nomor urutan log (LSN), pengidentifikasi numerik yang dapat digunakan untuk mengambil rekaman nanti. Jenis data LSN adalah typedef untuk LARGE_INTEGER, nilai 64-bit yang ditandatangani; namun, ILog hanya menggunakan LSN dengan nilai nonnegatif. Selain itu, LSN harus memenuhi kondisi berikut:
- LSN meningkat secara monoton; jika rekaman B ditulis ke log setelah rekaman A, LSN rekaman B harus lebih besar dari LSN rekaman A.
- Nilai nol dan MAXLSN (0x7FFFFFFFFFFFFFFF) tidak boleh digunakan sebagai LSN rekaman, karena memiliki arti khusus untuk beberapa metode ILog.
Setelah catatan ditambahkan ke log, rekaman mungkin tidak dimodifikasi. Namun, ketika rekaman yang ditulis sebelumnya tidak lagi diperlukan, misalnya catatan perubahan dalam transaksi yang telah dilakukan, ILog mendukung pemotongan log. Dengan cara ini, ruang disk yang digunakan untuk rekaman yang tidak penting dapat digunakan kembali. Memotong log terdiri dari menghapus semua rekaman dengan LSN kurang dari nilai yang ditentukan.
Sebagai pengoptimalan performa, beberapa implementasi ILog dapat menyangga rekaman dalam memori hingga log dipaksa. Jika demikian, khususnya Anda harus mempertimbangkan kontrol kesalahan dan pemulihan. Pertimbangkan situasi berikut:
- Catatan A ditambahkan ke log, tetapi log tidak dipaksa. Implementasi ILog menyalin rekaman ke buffer dalam memori dan mengembalikan kode keberhasilan.
- Catatan B ditambahkan ke log, dan implementasi ILog memutuskan untuk memaksa log ke disk. Ini karena penelepon meminta log dipaksa atau karena buffer memori penuh. Namun, operasi tulis gagal, misalnya karena ruang disk yang rendah.
Implementasi Berbasis File ILog
Sistem operasi Windows menyediakan implementasi ILog berbasis file, yang memungkinkan Anda membuat log yang cocok untuk pengelogan write-ahead pada file. Log menggunakan file sebagai buffer melingkar, yang memungkinkan ruang yang tidak digunakan untuk digunakan kembali. Ini juga dapat meningkatkan ukuran file yang mungkin diperlukan agar pas dengan rekaman tambahan saat log penuh. Perubahan pada log dibuat secara atomik, sehingga konten log dapat dipulihkan setelah crash. Implementasi ini menggunakan buffer dalam memori untuk menambahkan rekaman log. Akibatnya, rekaman tidak dijamin ditulis ke disk ketika metode ILog::AppendRecord kembali, kecuali pemanggil meminta agar log dipaksa.Gunakan CLSID berikut untuk membuat instans log berbasis file (lihat CoCreateInstance):
CLSID_SimpleFileBasedLog ({E16C0593-128F-11D1-97E4-00C04FB9618A} ).
Implementasi berbasis file ILog juga mendukung antarmuka IFileBasedLogInit dan IPersistFile . Gunakan IFileBasedLogInit::InitNew untuk membuat file log baru. Gunakan IPersistFile::Load untuk membuka file log yang ada.
Implementasi ini menggunakan kebijakan kontrol kesalahan sederhana. Jika salah satu metode gagal karena kesalahan pada tingkat sistem file, yang mencakup kesalahan penuh disk, log disematkan dalam status kesalahan. Ini mencegah klien menambahkan rekaman tambahan ke file atau membaca rekaman yang berpotensi buruk. Untuk terus menggunakan file log, Anda harus membuat instans baru log.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | txlogpub.h |