You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-users@xml.apache.org by Fernando Padilla <fe...@interdimensions.com> on 2003/02/28 21:12:47 UTC

[OT] transactions, filesystems, databases; ease of use

>Gianugo wrote:
>Fernando Padilla wrote:
>> Sorry for the digression.  But I hold a slightly different view.
>> Filesystems do not have a transactional nor a distributed interface.
>
>And sorry for the disgression, but what about NFS/CIFS coupled with a
>journaled filesystem?
>
>Ciao,
>
>--
>Gianugo Rabellino


:) I meant not to send that email :) and was surprised that I had
inadvertently sent it :) oops.  but now that it's open, I guess we can
indulge in a little academic sparring, but not too much, alright ;)

ps - this is a digression and anyone can easily ignore this ( i hate to 
force my ramble on people ).


transactions: A journaled implementation has nothing to do with 
transactions.  I don't know of any filesystems that allows you to say, 
openTransaction, do a lot of operations, then either rollback, or commit 
all of those operations in an atomic format.  If there is one, I would 
love to learn about it.


I'll give it to you that there are distributed filesystems that are great
solutions to many system requirements - ignoring such issues as
administration overhead and platform dependencies.  But I guess, the
transaction and ACID rules that any "filesystem" lacks is what gets to me.  

So I see Databases filling two roles, an ACID and transactional Data
Storage role, then an optimized/efficient Data Querying role. Filesystems
provide neither of these, by design.

I guess the metaphor is comparing UDP to TCP. Yes, most of the time UDP
will get there, but you would NEVER assume that it will get there 100% of
the time.  If you use the filesystem, most of the time the system will
maintain a coherent view ( data will not be missing and properly
synchronized), but the filesystem NEVER said it would guarantee that for
you; at least not for multiple file operations, etc, etc.


Anyway, this is just academic sparring :)  Programming is sometimes an 
artform, with no blank and white, as to practice, technique and design.  I 
for one am a little lazy, and feel that requiring a database to implement 
ACID transactions for me, and leveraging that for all of the system's data 
storage needs, is a good thing.

UDP is a fine protocol, but everyone feels more comfortable using TCP.  
Because it provides service guarantees that UDP does not.  Because no one
in their right mind would try to reimplement a protocol that has similar
service guarantees as TCP ontop of UDP for each project they work on.  
Because you worry less, your designs have to make less assumptions, and
your implementation is simpler.


But then again, we don't have a Database equivalent of TCP, that provides
efficient service guarantees for any data storage needs.  So I have been
discussing the ideal, maybe unreachable today.  But that is what I hope
Xindice will do.  So as we go and evolve Xindice, and turn it into what it
will become in the future, we shouldn't do things because that is the way
they've been done, we should strive for the ideal, for what we want it to
be.


the sometimes pedantic,
Fernando Padilla