[Dev] two layer object cachingJeremy Hylton Mon, 4 Nov 2002 16:05:14 -0500
>>>>> "DM" == David McCusker <david@treedragon.com> writes: DM> I usually tell folks a two layer caching scheme is a good idea, DM> as opposed to just one layer of caching. Below I explain what DM> this means. It might or might not be applicable to a given DM> storage system or object persistence system, depending on how DM> the system works inside. Note this technique is not applicable DM> to load-everything-in-memory systems. Is this on topic for this list? (I'm not trying to be snide, just unclear on what the focus of this list should be.) ZODB uses an in-memory object cache for performance and to manage pointer swizzling, i.e. mapping from persistent object references to Python object references. One limitation of this cache is that its size is measured in objects instead of bytes. There's no obvious way to determine the amount of memory a Python object is occupying. ZODB FileStorage doesn't have the low cache that you mention. It depends entirely on the OS to handle file caching. ZODB's client-server storage (ZEO) does have a file-based LRU cache to avoid reloading objects from the server. If you have limited memory, it's not clear to me whether it's better spent on high cache, low cache, or a mixture of both. I expect application characteristics would be an important effect. Jeremy
|