[Zope-dev] Specialist/Rack scalability
Phillip J. Eby
pje@telecommunity.com
Sun, 21 Jan 2001 21:01:33 -0500
At 07:12 PM 1/21/01 +0000, Steve Alexander wrote:
>
>So, storing things in a Rack happens in a number of stages:
>
> Your application interacts with the Rack
> The Rack (perhaps) stores the object persistently in its BTree
> The BTree is a collection of persistent ZODB objects
> The ZODB objects are stored as Python Pickles in a FileStorage
>
>We can consider what the effect of storing 60 000 objects is at each of
>these interfaces.
>
>The Rack shouldn't have a problem with 60 000 objects.
>
>I doubt a BTree would have a problem.
>
>The ZODB might not like accessing many large objects during a single
>transaction, as all those objects need to be in memory at once.
>
>A FileStorage should have no problem reading 60 000 stored objects.
>However, if these objects are changing much, your Data.fs will grow
>fast. In any case, you may find undo and history screens take a long
>time to appear.
>
>However, if you are using a Rack, you have a lot of choice about where
>you put your data. You can put frequently changed aspects of your data
>on the filesystem, and the rest in FileStorage for example.
Just to expand a little on the abov... Racks should scale at least as
well, if not larger than a ZCatalog, given the same storage backing for the
ZODB. This is because ZCatalog has to manage a minimum of one forward and
reverse BTree for *each* index, plus another few BTrees for overall storage
and housekeeping. Also, keyword and full text indexes store multiple BTree
entries per object, so that's a factor as well.
So don't worry about the Rack. If you're using a Rack, you can store the
data anywhere, and you can index it in an RDBMS, LDAP directory, ZCatalog,
or some combination thereof, using triggers to keep the data in sync.