[Zope-dev] OracleStorage, and possibly others
Jim Fulton
jim@digicool.com
Thu, 30 Nov 2000 08:10:15 -0500
Lalo Martins wrote:
>
> Well, two betas of OracleStorage in one day, then a month and a
> half of silence. What's the status?
From our perspective, it's what it was then. We built it for
a customer who later decided they didn't want it. I'm
glad to hear you found it useful.
> What about the other Storage projects? BerkeleyStorage has been
> dead for an year, and I heard pretty nasty words about
> InterbaseStorage. What about someone who wanted to try to port
> OracleStorage to Postgres or some other RDBMS?
We're working on a new suite of Berkeley storages that we are
writing to the the latest Berkeley database APIs. As Chris
pointed out, these are based on a new Berkeley DB extension that
Andrew Kuchling started and that Robin Dunn is finishing.
There are a number of interesting new features that will eventually
result from these storages:
- A new pack/garbage collection approach. The current storages
perform a mark-and-sweep garbage collection when packing. It turns
out that this really isn't very scalable. I'm going two
switch to using the same garbage-collection strategy that Python uses,
which is reference counting supplimented by an incremental cyclic garbage
detection algorithm. I have a simple storage (no undo or versions) that
needs no packing of your data structures are free of cycles.
I'm hopeful that we can make packing automatic and incremental.
- Undo-log generation will be much faster, at least for common
cases. Generation of undo logs (for selecting transactions to undo)
is becoming a significant performance problem with FileStorage.
- ZEO verification, performed when a client with a persistent
cache starts up, will be much faster.
- Policies to control whether multiple revisions are stored
or whether revisions are removed by packing on a object-by-object
or transaction-by-transaction basis.
For example, you could have a poll/votting product that didn't allow
undo of and didn't require storing multiple records for votes. This
would be cleaner than mounting a separate database with a simple
storage.
You could keep significant historical revisions for important objects, such
as Wiki pages, templates, scripts, etc., with a policy to decide
which revisions are significant.
- The ability to set policies to implement quotas.
I expect that we'll work out a lot of these ideas for Berkeley storages and
then implement them in OrcaleStorage. Others should then be able to map the
implementation onto other storages.
I'll note, in passing, that it's much nicer working these ideas out
with the BerkelyDB API than dealing with PLSQL or Python SQL.
We are also working on ZEO storage replication. This may have a big
impact on the storage API, or lead to specialized APIs for replicated
storages.
> Please help stamp out Data.fs! :-)
I don't think Data.fs will go away. I do expect it to be relagated to
initial evaluation and development projects. Use of Berkely DB in
transactional mode requires a significant andminstration commitment.
Log files need to be purged. Backup and recovery processes need to be in
place. A similar cost is associated with using Oracle and many other databases,
I expect. People aren't going to want to deal with these issues when
initially trying and learning Zope (or ZODB).
Jim
--
Jim Fulton mailto:jim@digicool.com Python Powered!
Technical Director (888) 344-4332 http://www.python.org
Digital Creations http://www.digicool.com http://www.zope.org