On Tue, Jan 15, 2013 at 2:40 PM, Jim Fulton <j...@zope.com> wrote:

> So, first, a concise partial answer to a previous question:
>
> ZODB provides an in-memory object cache.  This is non-persistent.
> If you restart, it is lost.  There is a cache per connection and the
> cache size is limited by both object count and total object size (as
> estimated by database record size).
>
> ZEO also provides a disk-based cache of database records read
> from the server.  This is normally much larger than the in-memory cache.
> It can be configured to be persistent.  If you're using blobs, then there
> is a separate blob cache.
>
> On Tue, Jan 15, 2013 at 2:15 PM, Claudiu Saftoiu <csaft...@gmail.com>
> wrote:
> >> You can't cause a specific object (or collection of objects) to stay
> >> ion the cache, but if you're working set is small enough to fit in
> >> the memory or client cache, you can get the same effect.
> >
> >
> > That makes sense. So, is there any way to give ZODB a Persistent and
> tell it
> > "load everything about the object now for this transaction" so  that the
> > cache mechanism then gets triggered, or do I have to do a custom search
> > through every aspect of the object, touching all Persistents it touches,
> > etc, in order to get everything loaded? Essentially, when  the server
> > restarts, I'd like to pre-load all these objects (my cache is indeed big
> > enough), so that if a few hours later someone makes a request that uses
> it,
> > the objects will already be cached instead of starting to be cached right
> > then.
>
> ZODB doesn't provide any pre-warming facility.  This would be
> application dependent.
>
> You're probably better off using a persistent ZEO cache
> and letting the cache fill with objects you actually use.
>

Okay, that makes sense. Would that be a server-side cache, or a client-side
cache? I believe I've already succeeded in getting a client-side persistent
disk-based cache to work (my zodb_indexdb_uri is
"zeo://%(here)s/zeo_indexdb.sock?cache_size=2000MB&connection_cache_size=500000&connection_pool_size=5&var=zeocache&client=index"),
but this doesn't seem to be what you're referring to as that is exactly the
same size as the in-memory cache. Could you provide some pointers as to how
to get a persistent disk-based cache on the ZEO server, if that is what you
meant? It seems ZODB/ZEO  really lacks for centralized documentation.

Thanks,
- Claudiu
_______________________________________________
For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to