durusmail: durus-users: Re: what I learned
Conflict in sequential atomic read/modify/write
2006-07-26
Re: what I learned
2006-07-27
2006-07-27
2006-07-27
2006-08-01
2006-07-27
2006-07-27
2006-07-27
2006-07-27
2006-07-29
Re: what I learned
David Binger
2006-07-27
On Jul 26, 2006, at 9:12 PM, Peter Wilkinson wrote:

>
> On 27/07/2006, at 11:01 AM, David Binger wrote:
>
>> This is the basic motivation
>> behind MVCC, which Durus does not currently provide.  I think we
>> will provide MVCC in Durus 4.0.
>
> Hi David,
> This reminds me of something I've been meaning to ask... Is there a
> public roadmap or just a list of possible additions that you see
> going into future versions of Durus (and QP).

There is no written roadmap, public or private.
Our general intent with these packages is to continue to keep them
stable and useful in our applications.

There is one idea in the air, though, for Durus, and I'll go ahead
and describe it here, since I already hinted at it.

The FileStorage2 format includes an offset index when it is packed.
A FileStorage2 instance starts by reading this entire index into memory
for fast access.  This is fine as long as you can afford those startup
seconds and as long as you have enough RAM to hold the entire index.

I'm interested in introducing a FileStorage3 format that is like
FileStorage2 except that the packed offset index would be written
in a form that would make it possible to use (for reading) directly
from the file, instead of loading it all into RAM.  This will make
startup times much faster and the storage server will use much less
RAM.  It will only maintain an in-memory offset index for instances
whose offsets have actually changed since the last pack.

This change opens the door for a new type of client/server behavior,
in the common situation where clients can have direct access to the
underlying file.  In particular, this new type of client could maintain
an independent offset index, and do all reads directly, without
interacting with the server at all.  The server would handle all
writes, and it would distribute offsets with invalidations, so that the
index of each client would always reflect a consistent view of the
database.  Every client would need to be notified when the storage
file was
packed so that the local offset index could be reset.  The result
of this should be that clients see a consistent, though possibly
not-quite-current view of the database as they are reading, and
conflicts, if necessary, are handled when and if there is a commit.
(That's what I'm thinking is MVCC.
Please correct me if I am wrong about that.)
Clients would require more memory, as they would need to maintain
the offset index of all new objects, but the server would use less
memory,
and it would not be bothered by delivering object records.

That's it for the future.  We also have a list of improvements
that are already coming in Durus 3.5, which I hope we can release
next month.  The 3.5 changes will make make the server work better
with Unix Domain Sockets.  We're adding support for allocating
oids in blocks, and for bulk-loading object records, among other
things.













reply