On Apr 2, 2009, at 4:19 AM, Adam GROSZER wrote: > Hello, > > What's a good practice to create unique container keys for a heavily > loaded application? (I mean lots of writes to the same container) > Obviously having a counter on the container and incrementing and using > that for key gives write conflicts. > > What do the experts use?
Assuming that ordering of the keys isn't important, my favorite strategy is to: - use integer keys, which saves memory and makes lookup faster if you use an IOBTree. - assign keys sequentially with random starting points, using a _v_ variable to keep track of the index. The idea is that instances in separate threads/processes use different random starting points, to avoid conflicts, but assign keys sequentially to update the btree efficiently. See for example _generateId in: http://svn.zope.org/zope.intid/trunk/src/zope/intid/__init__.py?rev=95793&view=auto Jim -- Jim Fulton Zope Corporation _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev