[ZODB-Dev] zodb design document

Jürgen Herrmann Juergen.Herrmann at XLhost.de
Thu Aug 13 07:00:44 EDT 2009


On Wed, August 12, 2009 17:58, Jim Fulton wrote:
> On Wed, Aug 12, 2009 at 10:33 AM, Jürgen
> Herrmann<Juergen.Herrmann at xlhost.de> wrote:
>> hi there!
>>
>> is there a zodb design document?
>
> There's: http://www.zope.org/Documentation/Developer/Models/ZODB
>
> But it is pretty old and out of date.

thanks, that was valueable information, especially the collab diagrams
for transaction commit/abort.
>
>> what i'm interested in are the following things:
>>  - some basic description how the zodb works (f.ex. i don't understand
>>   what the difference between a serial and a transaction id is)?
>
> There is no difference. I thought there could be when I originally
> designed ZODB, but it turns out to be good enough to use the tid as
> the serial.
thought so, but i wasn't sure enough :)
>
>>  - looking at basestorage and the methods that have to be implemented,
>>   is there documentation what the reimplementation in a concrete
>>   subclass has to do exactly? (ordering of things, desired side effects
>>   etc.)?
>
> You should look at the storage interfaces in ZODB.interfaces and in
> ZEO.interfaces. You should have a firm understanding of how
> transactions work in general.  Our transaction system is based on
> time-stamps.
>
> You should also ask questions here.
>
>> why do i ask? i'd like to create a RadosStorage zodb backend ceph's
>> underlying object storage "RADOS" (see
>> http://ceph.newdream.net/blog/category/rados/ )
>
> That's interesting.  You might want to look at DirectoryStorage,
> http://dirstorage.sourceforge.net/, which implements the storage APIs
> (at least as they existed a few years ago) on top if a file system.
>
ok, looking at the interfaces and some more implementation code from
FileStoreage, RelStorage, MappingStorage, MVCCMappingStorage etc.
helped a lot. For now, one more questions though:

i want RadosStorage to implement IMVCCStorage. so my understanding
is that i remeber last_polled_tid (from invalidation polling and
instead of loading the latest revision of an object, the storage
always returns state as of the transaction with last_polled_tid,
is that correct? if RadosStorage implements IMVCCStorage i guess i
can skip the zeo interfaces, right?

thanks for your help!
jürgen
--
>> XLhost.de - eXperts in Linux hosting ® <<

XLhost.de GmbH
Jürgen Herrmann, Geschäftsführer
Boelckestrasse 21, 93051 Regensburg, Germany

Geschäftsführer: Volker Geith, Jürgen Herrmann
Registriert unter: HRB9918
Umsatzsteuer-Identifikationsnummer: DE245931218

Fon:  +49 (0)800 XLHOSTDE [0800 95467833]
Fax:  +49 (0)800 95467830

WEB:  http://www.XLhost.de
IRC:  #XLhost at irc.quakenet.org



More information about the ZODB-Dev mailing list