The ZODB currently uses a hardcoded pickle protocol one. There's both
the more efficient protocol two and in Python 3 protocol 3. Protocol
two has seen various improvements in recent Python versions, triggered
by its use in memcached.
I'd be interested to work on changing the protocol. How should I approach this?
I can see three general approaches:
1. Hardcode the version to 2 in all places, instead of one.
Pros: Easy to do, backwards compatible with all supported Python versions
Cons: Still inflexible
2. Make the protocol version configurable
Pros: Give control to the user, one could change the protocol used for
storages or persistent caches independently
Cons: More overhead, different protocol versions could have different bugs
3. Make the format configurable
Shane made a proposal in this direction at some point. This would
abstract the persistent format and allow for different serialization
formats. As part of this one could also have different Pickle/Protocol
Pros: Lots of flexibility, it might be possible to access the data
from different languages
Cons: Even more overhead
If I am to look into any of these options, which one should I look
into? Option 1 is obviously the easiest and I made a branch for this
at some point already. I'm not particularly interested in option 3
myself, as I haven't had the use-case.
Thanks for any advice,
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org