Not necessary. For example what if you want to manage concurrency? You will need row locking and perhaps table locking, thing, which I haven't figured out how to do with zope.
Concurrency do not exists. Computers simulate concurrency but nothing can't do 2 things at time overcoat if you have only 1 HD or 1 CPU What if you have two CPUs trying to access the same HD? I agree, one CPU will have the access first, but somehow you will have to block the resorce. If you try to simulate this with zope, you could think about a lock attribute on the object, but one thing could happen:
Three CPUs: A, B, and C are trying to access object D on Hardisk E. 1) CPU A Arives first and takes Object D and checks lock, which is zero. 2) CPU B, which was late, takes Object D just right after A, so, lock is still zero. 3) CPU A sets lock to one and modifies D on a html form. 4) CPU B sets lock to one and modifies D on a html form. 5) CPU A saves modifications and sets lock to one. 6) CPU C arives and takes D because lock is zero. As you see, CPU B and C are working with the false information. This is difficult to simulate with zope. That's why I think the row locking of a DB like mysql or postgres will do it better. The locking, if I'm not wrong, happens while accessing the data the first time. Regards, Josef