[Twisted-Python] Re: [Divmod-dev] keeping client data in sync with Twisted, mirroring some Axiom Items on the client-side
robert at gravina.com
Tue Oct 24 13:24:17 EDT 2006
On 2006/10/25, at 1:27, Mike Pelletier wrote:
> The good news is that zeo+zodb can be used without pulling in the
> rest of Zope
> (thank god) and you probably could marry it with the rest of your
I started off doing this actually, and decided to switch to Axiom
because it was object-relational. I've had some no-so-fun experiences
with Plone and ZODB madness, but it probably has more to do with not
understanding what was going on.
For the most part, as long as all the database-related work goes on
on the server side, whether I use ZODB or Axiom probably doesn't make
much of a difference to the rest of the application.
> The bad news is that zodb has completely different usage semantics and
> tuning assumptions than axiom, and even if you find a way to deal
> with zodb
> asynchronously (which may be a bigger problem than I just indicated
> now that
> I give it a passing though), you may find that such a change ends
> up leaking
> up a few layers of abstraction, depending on your use cases. I'd
> be happy to
> hash it out off-list if you decide to go that way.
Thanks. Actually most of my database access so far is along the lines
of the client sending an object to the server (along with its child
objects), and the server persists it (and add/edits/removes the
children to suit). Your typical CRUD GUI.
> Regardless of these
> challenges, if your app is write-heavy, zodb is probably not the
> way to go.
I have heard this before yes. Actually I there will be more reading
going on than writing. The application is your basic database-with-
reports type application, so I'd say it would not be write heavy.
> It does seem like what you are trying to do with Axiom would be a
> common case, but it's young so it might not have been addressed.
> I'm eager
> to hear what the smart people have to say.
As am I :) What I'm trying to I believe can be done with Twisted PB.
Calling remote methods on all clients who have an object which is
pb.Cacheable is quite easy to do. I am just unsure about how to go
about it in a generic way. Also I'm sure there's a lot more to
creating a distributed object system than meets the eye, but then
again Twisted PB handles much of the heavy lifting.
Originally, I planned to do much of the work on the server, and one
thing I liked about Twisted was that I could easy decide what work
was done on the client, and what on the server. Now that I'm a little
further in developmentI realise that the clients would really benifit
from having much of that data locally, so that can search/make PDF
reports etc. easily. Perhaps I'm just using Twisted wrong and I
should be doing this on the server? I'm really I'm happy for the
clients do *all* the work, which is why I'm back to considering ZEO
again. The server just needs to handle authentication and access
control, ensuring everyone has the latest copy of an object, make
sure two users aren't allowed to open a edit GUI for some object at
the same time, etc.
One important point, is that with ZEO I just code as if the database
was a local ZODB. I like that because it saves literally hundreds of
lines of code dealing with sending objects back and forth, notifying
> I think I've heard noises about
> Axiom starting to support other databases beyond sqllite, so
> perhaps it is
> not beyond the realm of possibility that you could connect a bunch of
> axiom-wielding processes to the same database.
> For that matter, sqlite has
> been talking about providing a client/server interface. Either
> way, I think
> you'd be on the bleeding edge.
If I were to go this way, then I wouldn't really be using Twisted
right? In this case, I may as well use ZEO. Perhaps I'm taking the
wrong approach - maybe all I need is a database server which clients
connect to, and do away with the whole of Twisted cred/PB etc. that
> Boy, I'm a big help, eh?
Actually you were thanks!
More information about the Twisted-Python