Re: libefs



Dietmar Maurer wrote:

> Hello,
>
> I'm working on libefs (file-system-inside-a-file) which can be used as
> storage driver for bonobo. I've just implemented a simple transaction
> handling (changes are only written after a commit) and wonder what I
> should do with old versions:
>
>     a) discard old versions and reuse the disk space as soon as
>     possible:
>
> or
>
>     b) never discard old versions and implement some kind of
>     version control (possibility to open old versions). I think this is
>     the Microsoft behavior (Use SaveAs to delete old versions).

I'd recommend discarding old versions by default but also providing the
ability to retain old versions and save deltas as an option.  I think that
most of the time I would want the simpler behavior but I can think of times
when I would want to have built-in version control too.

BTW, this provides an opportunity to fix a problem with the
MS implementation: that they don't use a client-server architecture for their
storage manager.  Since the client program is in charge of writing data
files, it is possible to irretrievably corrupt a file if a client crashes in
the middle of a save.  For example, if MS Access crashes, you can lose your
entire database, not just one table or one form since the entire database is
stored in a single file which Access constantly holds open.

Since we're reimplementing this, we have the opportunity to fix this
oversight by providing a separate process that manages reading/writing open
files on behalf of the client applications.  If a client application crashes
in the middle of a save, the transaction is rolled back and the user loses
just the work from the current session, not the entire file.

While I'm on the topic of file systems within a file, we also need the
ability to mount external directories within our "file system within a
file".  Another MS Access problem is that it is hard to share an application
without sharing all of your data as well since the forms used to implement
the application are stored in the same file as the data.


Regards,

Dave

--
David Orme                                       LINUX...
david@coconut-palm-software.com          ...it already goes there
http://www.coconut-palm-software.com               :-)





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]