Shane Hathaway wrote at 2008-1-31 01:08 -0700:
>I admit that polling for invalidations probably limits scalability, but
>I have not yet found a better way to match ZODB with relational
>databases. Polling in both PostgreSQL and Oracle appears to cause no
>delays right now, but if the polling becomes a problem, within
>RelStorage I can probably find ways to reduce the impact of polling,
>such as limiting the polling frequency.
I am surprised that you think to be able to play with the polling
Postgres will deliver objects as they have been when the
Therefore, when you start a postgres transaction
you must invalidate any object in your cache that
has been modified between load time and the begin of this
transaction. Otherwise, your cache can deliver stale state
not fitting with the objects loaded directly from Postgres.
I read this as you do not have much room for manouver.
You must ask Postgres about invalidations when the transaction
Of course, you can in addition ask Postgres periodically
in order to have a smaller and (hopefully) faster result
when the transaction starts.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org