[ZODB-Dev] difference between RAM and cache in ZODB

Chris Bainbridge chris.bainbridge at gmail.com
Tue Mar 31 04:29:07 EDT 2009


2009/3/31 Sandra <elsandram at yahoo.fr>
>
> For example, my computer have 1 GB RAM, could i have 2 GB objects loaded in ZODB memory? I don´t well understand what is the cache in ZODB compared to the RAM.

A ZODB client has an in-memory cache in RAM, and an optional on-disk
cache. The server stores lots of objects. When the client needs one of
these objects it connects to the server, sends the object ID, and the
server sends the object. The ZODB client will cache this downloaded
object in RAM so that operations on it are faster. However, RAM size
is limited, so when there are many objects the cache gets full, and
old objects have to be removed - if the removed objects are needed
again in the future, they must be re-downloaded from the ZODB server.
If the ZODB client file cache is enabled, then a copy of all the
downloaded objects is kept in a file on the local hard disk of the
client. Since hard disk capacity is greater than RAM this provides a
storage space for a much greater number of objects - accessing the
file cache is slower than RAM, but (usually) faster than retrieving an
object from the ZODB server.

ZODB caching is done at the application level, but you're operating
system will also be managing its own hard disk cache; caching in ZODB
and caching in the operating system have a similar function, but are
completely separate, so try not to confuse them.


More information about the ZODB-Dev mailing list