On 9/3/2020 09:39, Duane wrote:
On Thu, Sep 3, 2020 at 11:14 AM, Chuck Palmer wrote:
So, I'm a software engineer for Second Life. We have over 2.6 million resident groups in our system and we provide realtime group information, include roles for a member.
The simple db schema for such a thing is to have a user table which has information about users, including a UUID for the user; a groups table that has information about groups including a group UUID and a roles table that has role information including a role UUID. Then, there is a simple mapping table that has rows consisting of tuples (userid,groupid,roleid) that is updated whenever someone joins, leaves or changes roles in the group. Then, retrieving the roles and groups for a user is a simple SELECT statement against the mapping table and decoding the group and role id's back to human readable strings by a secondary lookup. No "waste of resources" and yes, it is available instantaneously. A query of this kind, even including the subqueries for the strings returns in fractions of a second - yes cycles are used, but not an appreciable amount. This is, after all, what databases are built to do.
PG&E Delenda Est