Hello ZODB developers!
I think I asked something like this a very long time ago, but I'd
like to ask again, in case anything has changed.
Here's my question in a short and long version:
Is anyone using ZEO to build mutliuser networked applications outside
I've been designing and coding (and re-designing and re-coding) a
multi-user GUI application in Python for some time now. At this
stage, it's mainily just GUI forms for editing data and some logic to
share objects with users, keep them from editing the same entry at
the same time etc. I'm currently using Twisted and a a python object-
reational DB called Axiom, built on top of sqllite.
Basically, my problem boils down to these two things:
1) Making sure all clients have the latest version of objects as
transactions are committed is difficult
2) Clients have a different view of the data than the server, and are
therefore pretty "dumb". I would like to be able to maintain, search,
create reports on the data etc. without having to write code to do
remote procedure calls to the server all the time, or have a separate
database running on the client with just enough information so I can
search and display interesting data on the "main screen" of the app.
I've also got lots of code swapping out object references for primary
keys and back again on client/server sides.... it's a bit of a mess.
So, I was thinking each client uses a ClientStorage to access a ZEO
server and I build my user authentication, GUI forms etc. on top of
It would *greatly* simplify the application - I can concentrate on
the domain problems and let ZODB/ZEO handle persistence and keeping
clients in sync.
These are huge headaches for me right now, and I think switching to
ZEO might help. Also I'm also looking to add undo functionality and a
version of the app that runs standalone (i.e. just swap a
FileStoreage for ClientStorage) at some point in the future. ZODB
seems like it will make this a lot easier to to implement.
The thing is, I can't seem to find any references to applications
(open source or otherwise) where developers have used ZEO in this
way, and it makes me wonder if I'm trying to use it in a way for
which it wasn't designed. The ZODB guide hints that this is possible,
but everything I can find about ZEO on the web talks about using it
to scale your Zope server.
Is anyone using ZEO like this?
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org