[Gsoc] ZODB-related project ideas

Dirceu Pereira Tiegs dirceutiegs at gmail.com
Wed Mar 19 17:55:31 EDT 2008


Hello,

I'm the "victim" that Sidnei was talking about here [1] :-).

I want to help ZODB through a GSoC project. Sidnei already listed my  
ideas on the wiki [2] (and most of them are from the ZODB blueprints  
[3]), but I would like to know which is the best.

My experience: I'm using ZODB for about 2 years (with Zope and Plone),  
but I don't have much experience of it's internal code. I'm working on  
my graduation thesis this semester; it's subject is "Replication of OO  
Databases", and I'm using ZODB (and probably will use ZEORaid) to  
demonstrate it. Because of this I'm getting myself more and more  
familiar with ZODB code.

So, the list:

= Improved replication for ZODB through ZEO Raid =

The ZEO RAID storage is a proxy storage that works like a RAID  
controller by creating a redundant array of ZEO servers. The  
redundancy is similar to RAID level 1 except that each ZEO server  
keeps a complete copy of the database. This proposal aims to improve  
gocept.zeoraid, fixing bugs, testing and implementing needed features.

= RelStorage support to Microsoft SQLServer =

RelStorage is a storage implementation for ZODB that stores pickles in  
a relational database. This proposal aims to provide support for  
Microsoft SQLServer in order to take advantage of it's replication and  
deployment infrastructure.

= Allow limiting the size of ClientStorage's blob cache =

Currently the ClientStorage will grow the blob cache indefinitely. We  
should allow some control about how large the cache may grow, e.g. by  
making the ClientStorage support minimizing the blob cache. (Idea: LRU  
principle via mstat access time and a size-based threshold) currently).

 From https://blueprints.launchpad.net/zodb/+spec/limit-clienstorage-blob-cache 
.

= An alternative object caching strategy for ZODB: object  
classification =

Every ZODB connection maintains a cache that keeps objects in memory  
to avoid unnecessary IO work. All objects that are loaded within a  
transaction are put into the cache and are evicted from the cache at  
certain points (e.g. transaction boundaries) when cache minimization  
is performed.

The currently implemented strategy for evicting objects is least  
recently used (LRU). The size of the object cache is limited by the  
number of objects. This size is configurable per database. Large  
applications have different usage patterns on objects so that the LRU  
strategy does not always fit those patterns effectively. Examples are:

  * Applications with a variety of smaller and larger objects. The  
classical example of files stored as pdata constructs defeats the LRU  
caching strategy and potentially evicts heavily used (or even all)  
objects from the cache just to allow loading many smaller,  
infrequently used objects.
  * Catalogs: Light-weight objects like brains might benefit from a  
higher priority of staying cached in comparison to other objects. This  
proposal aims to modify the ZODB to allow different cache  
implementations to be used, and implement a cache that performs an  
object classification using a configurable strategy.

 From https://blueprints.launchpad.net/zodb/+spec/classifying-object-cache 
.

1 - http://article.gmane.org/gmane.comp.web.zope.zodb/9191
2 - http://wiki.zope.org/gsoc/SummerOfCode2008
3 - https://blueprints.launchpad.net/zodb/

Regards,
--
Dirceu Pereira Tiegs
Weimar Consultoria

Hospedagem Plone, Zope e Python
http://www.pytown.com




More information about the Gsoc mailing list