[ZODB-Dev] zeo database specific network protocol?

Shane Hathaway shane@zope.com
Wed, 11 Dec 2002 22:25:46 -0500


On 12/11/2002 09:54 PM, David McCusker wrote:

> I'm starting a one day survey on network protocols for databases as a
> background context check on our designs for Chandler APIs for db 
> access via some network protocol.
> 
> (I can use any pointers to things you consider relevant to this
> survey.)
> 
> I was asked whether Zeo has a protocol for making zodb access
> transparent over the network, so I said I'd ask what it was like.  I
> gather Zeo docs are so  slim I'm unlikely to see a spec, so I thought
> I'd ask here.
> 
> Can someone characterize Zeo's wire protocol?  Or point me at a spec
> or a vague statement made by someone else?  Or if someone has a
> protocol in mind as an abstract idea, that would be interesting too.

The wire protocol consists of binary packets of arbitrary length.  The 
clients request pickled data, tell the server to begin committing a 
transaction, send new pickled data, and request that the ZEO server 
commit the transaction.  The server acknowledges those messages and, 
once each transaction commits, broadcasts to all clients the OIDs of 
objects just committed so that clients don't rely on stale data.  That's 
the core functionality.  It's a low-level protocol.

Because they operate at a low level, ZEO servers have the same 
limitations that NFS servers have: since the protocol works directly 
with object identifiers (or inode identifiers, in the case of NFS), it's 
difficult for the server to impose security restrictions.  So the burden 
of security is left entirely to the clients.  This may affect the design 
of Chandler, since you wouldn't want to trust every desktop with full 
access to the company-wide message database.  But ZEO would be good for 
designing a cluster of Exchange-like servers.

Shane