Friday, April 22, 2005 8:39 PM
by
malx
What scenarios can Transactional NTFS be used for?
This question seemed so good I thought I'd answer it in a whole new blog post :)
As always, it'd be great to see software developers impress me and find
new uses for this technology that I haven't foreseen. I can't
tell developers how to write a great application; but I can pick a
great application when I see one, and I'm looking to you to impress me.
Transactional NTFS can't guarantee that changes you make to a set files
will always be successful, but it can guarantee that on failure the
result will always be consistent. Consider an application
install: if you can't copy a particular file, and want to undo all of
the files you've already installed, what happens if your undo fails?
Maybe a user has your readme opened, and locked, in their editor; maybe
they've already moved your start menu entries; maybe they've deleted or
moved files you carefully put there. With Transactional NTFS, all
of your changes can be removed - this is guaranteed.
A better example would be a patch or service pack. If it
succeeds, great, if it doesn't, that's okay, but if it half-succeeds,
that's terrible. Transactional NTFS will protect your application
from inconsistency.
Imagine updating a website: you make some changes, but fail to update a
particular target. This leaves your site inconsistent, with
broken links. Transactional NTFS will protect you from this
possibility; and better still, will ensure all your updates become
visible at the same time, reducing the risk of inconsistent results.
When saving a document, some software will attempt to delete the old
file, then create a new file in its place. What happens if
something goes wrong? Both copies can be lost. Transactional NTFS
eliminates this possibility.
Suppose on a network, you want to copy a large amount of data from one
machine to another: Transactional NTFS can ensure this succeeds or
fails atomically, preventing inconsistent results between servers.
These are my thoughts, as an developer. How you can best use
Transactional NTFS depends on your application. You may have
different ideas; I'm interested to hear about them, and I'm sure other
developers are too, so feel free to share.