Optimize group operations #45
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This makes a few changes to the way groups are handled in order to reduce the number of queries executed for each login.
The result of these changes is that authenticating a user now executes strictly fewer queries and a constant, rather than linear, number.
If the mapping has
n
entries, here is the change in query count for different situations:2n
1
x
groups2n
2
y
groups2n + y
2
x
, removey
2n + y
3
The add and remove queries could be combined, however a user may be a member of many groups, and this would require using the explicit
set
method and sending the name of every group in the query. This would both increase bandwidth as well as potentially leading to database portability issues.