Alternatif untuk menggunakan Transactional NTFS

Abstrak

Microsoft sangat menyarankan pengembang untuk menyelidiki penggunaan alternatif yang dibahas (atau dalam beberapa kasus, menyelidiki alternatif lain) daripada mengadopsi platform API yang mungkin tidak tersedia di versi Windows di masa mendatang.

Pendahuluan

TxF diperkenalkan dengan Windows Vista sebagai sarana untuk memperkenalkan transaksi file atom ke Windows. Ini memungkinkan pengembang Windows untuk memiliki atomitas transaksional untuk operasi file dalam transaksi dengan satu file, dalam transaksi yang melibatkan beberapa file, dan dalam transaksi yang mencakup beberapa sumber - seperti Registri (melalui TxR), dan database (seperti SQL). Meskipun TxF adalah sekumpulan API yang kuat, ada minat pengembang yang sangat terbatas pada platform API ini karena Windows Vista terutama karena kompleksitasnya dan berbagai nuansa yang perlu dipertimbangkan pengembang sebagai bagian dari pengembangan aplikasi. Akibatnya, Microsoft sedang mempertimbangkan untuk menghentikan TxF API dalam versi Windows di masa mendatang untuk memfokuskan upaya pengembangan dan pemeliharaan pada fitur dan API lain yang memiliki nilai lebih bagi sebagian besar pelanggan. Bagian berikutnya menjelaskan sampel metode alternatif untuk mencapai hasil serupa seperti yang dilakukan TxF untuk beberapa jenis skenario aplikasi.

Alternatif untuk TxF by Scenario

Dengan batasan yang dijelaskan di atas, pengembang harus menyelidiki alternatif untuk TxF untuk mencakup skenario aplikasi yang tidak dipenuhi oleh TxF. Dibahas di sini adalah beberapa alternatif yang disarankan untuk penggunaan umum TxF bagi pengembang untuk dipertimbangkan. Perhatikan bahwa daftar ini tidak lengkap atau lengkap.

Aplikasi memperbarui satu file dengan data "seperti dokumen"

Banyak aplikasi yang menangani data "seperti dokumen" cenderung memuat seluruh dokumen ke dalam memori, mengoperasikannya, lalu menulisnya kembali untuk menyimpan perubahan. Atomitas yang diperlukan di sini adalah bahwa perubahan benar-benar diterapkan atau tidak diterapkan sama sekali, karena status yang tidak konsisten akan membuat file rusak. Pendekatan umumnya adalah menulis dokumen ke file baru, lalu mengganti file asli dengan yang baru. Salah satu metode untuk melakukan ini adalah dengan ReplaceFile API.

Aplikasi melakukan pembaruan pada beberapa file dan/atau ke sarang registri

Ada banyak aplikasi yang perlu melakukan pembaruan secara atomik ke sekumpulan file dan ke registri. Skenario ini paling umum dicapai melalui aplikasi penginstal, seperti Penginstal Windows. Untuk informasi selengkapnya tentang Penginstal Windows, silakan merujuk ke Windows Installer.

Aplikasi yang mengelola sekumpulan data terstruktur

Banyak aplikasi mengelola beberapa set struktur data kepemilikan dari berbagai jenis sebagai sarana untuk menyimpan data. Tantangan signifikan untuk aplikasi ini adalah proses mempertahankan integritas pointer/referensi internal jika kegagalan terjadi selama operasi pembaruan. Membuat mekanisme untuk ini memang merupakan "masalah sulit", dan oleh karena itu sebagian besar aplikasi akan mengandalkan server database sejati untuk mengelola himpunan data mereka.

Dua saran untuk membantu mengelola data terstruktur adalah:

  • Microsoft menyediakan kotak masuk Extensible Storage Engine (ESE) di Windows untuk memungkinkan aplikasi melakukan operasi pembaruan dan pengambilan data yang ditransaksikan. Untuk informasi selengkapnya tentang Extensible Storage Engine (ESE), silakan lihat https://msdn.microsoft.com/library/gg269259.aspx.
  • Untuk aplikasi yang memerlukan penyedia database yang lebih kuat, kuat, dan dapat diskalakan, disarankan agar pelanggan mempertimbangkan untuk menggunakan fitur Filestream yang tersedia dengan Microsoft SQL Server. Untuk informasi selengkapnya tentang SQL Filestreams, silakan lihat https://technet.microsoft.com/library/bb933993.aspx.

Aplikasi dengan Transaksi yang melibatkan file pada volume NTFS lokal dan Tabel dalam database SQL eksternal

Ada kelas aplikasi yang memiliki kebutuhan himpunan data besar, atau perlu memiliki atomitas transaksional dalam operasi yang melibatkan database eksternal dan penyimpanan lokal. Untuk skenario ini, sangat disarankan agar pengembang mempertimbangkan untuk menggunakan SQL Filestreams untuk melakukan operasi file transaksional. Untuk informasi selengkapnya tentang SQL Filestreams, silakan lihat https://technet.microsoft.com/library/bb933993.aspx.

TxF adalah sekumpulan API kompleks dan bernuansa yang tidak umum digunakan oleh aplikasi pihak ke-3. Dengan kemungkinan bahwa API ini mungkin tidak tersedia di versi Windows di masa mendatang, dan fakta bahwa ada cara alternatif yang lebih sederhana untuk mencapai banyak skenario tempat TxF dikembangkan, Microsoft sangat menyarankan pengembang untuk menyelidiki cara alternatif tersebut alih-alih membuat dependensi pada TxF dalam aplikasi mereka.