A method for determining group membership in a computer system, the method
comprising: obtaining an identifier that describes a member of a group,
the member of a group having a member hash table that contains group
membership information describing to what groups a member belongs;
performing a primary search of a plurality of groups to determine if each
group contains the member's identifier, each group in the plurality
having a group hash table that describes to what other groups the group
belongs, caching the results of the primary search in the member hash
table, for each group to which the member belongs, performing a secondary
search of a plurality of groups to determine what groups contain the
group to which the member belongs, and caching the results of the
secondary search into the group hash table and merging the results into
the member hash table, and reading the member hash table to determine
group membership.