[Zope] large number of users in standard acl_users ?

Paul Winkler pw_lists@slinkp.com
Thu, 17 Jul 2003 15:14:37 -0400


On Thu, Jul 17, 2003 at 01:24:26PM -0500, J Cameron Cooper wrote:
> >
> >
> >>With such a low number of concurrent users, you can probably get away 
> >>with it server-wise, though your users may be subject to high latency.
> >
> >Why high latency?
> 
> Well, I was just guessing that the user authentication lookups probably 
> aren't a constant-time operation and scale at least linearly with the 
> number of users, but I don't actually know this. It could be that it 
> falls on the other side of the space/time tradeoff and will instead go 
> nuts on memory.

I think it would be the latter. PersistentMapping is a subclass of
UserDict, which is a small wrapper around the dict type.
Accessing a dictionary item is O(1) according to the python Nutshell
book.

"nuts on memory" might not be a big deal either. User objects are pretty
small.

However, anything that loops over the items in the dictionary would be O(N),
so any page that does this might become noticeable with REALLY large N. 
Some subjective fiddling at the python prompt suggests to me that
10,000 is not large enough for foo.items() to be noticeably slow unless
you do so in a loop; but 100,000 is (it takes about a half second here.)  

What this means in practice is anybody's guess :-)  I don't know 
if anything in Zope loops over the users, except of course 
the ZMI display code.

All of which is a long way of saying that the ZMI alone might be enough 
to force you to use another UserFolder.  You don't want to visit the 
Contents tab of a folder with 10,000 items in it!  :-)

-- 

Paul Winkler
http://www.slinkp.com
Look! Up in the sky! It's THE SLIPPERY JET!
(random hero from isometric.spaceninja.com)