In a comment Sahil Malik asked:
"Some guidelines around using Transactional filesystem versus otherwise would be helpful. I am sure TxFs has it's uses and advantages but it must have some downsides as well." I interpreted this to be 'what should I think about when using the file system as part of a transaction?'. This is a pretty interesting question, and one that deserved enough space and visibility that I wanted to address it in its own note.
As I'd mentioned in my reply:
Like any use of transactions, there are tradeoffs to consider. The fact that the data is stored in a file doesn't change the concerns you'd have with transactions anyway: how long can data be locked before it is a problem? Can you reasonably handle in doubt transactions? Do you have the storage for the recovery information?
In other words, the introduction of a file system store into a transaction does not relax any of the design concerns that you have whenever you use transactions today. If it unreasonable to have the data locked in a row in a database, then it is still unreasonable if it is in a file instead.
There are also some similarities that can be a little surprising. Today, if you move a database around between systems you generally need to have completed recovery against any distributed (as in multi-resource or network distributed) transactions before doing so. This is also likely to be true with the file system and the registry. It is the nature of things that it is easier to find that you're using multiple volumes, say, than that you're using multiple databases. That can lead to locked, in doubt data if you move such a volume.
Finally, there are a few ways in which file systems and registry hives differ from databases, however. One of the more obvious is that their information may be needed earlier in system startup. That probably isn't often the case, but if it is in yours, then that you need to think about the what happens if some of the information is indoubt. If it needs, say, MSDTC to resolve the transaction, can you wait until MSDTC has an opportunity to start up?
A second one is that the registry and the file system support the read committed isolation level. Note that the default isolation level for COM+ is Serializable. That is the simplest isolation level to understand, but also the most pessimal for execution. This will occasionally cause a surprise if you are depending on the differences between these two isolation modes (e.g. that reads will lock later writes in another concurrent transaction).
Posted
Sep 15 2005, 10:12 AM
by
jim-johnson