Support for deletion
We can add Domains, Users, Collections, Resources. Deletion is a different matter!
- Domains represent an entire tree, so deleting that is a mechanistic matter.
- Users reference Collections and may have a tree that only they use; collect garbage.
- Collections may be referenced from any Index. Look for
reservoirRef
that start with the UUID. - Collections may be the start of a tree that have no other Indexes referencing them; collect garbage.
Garbage collection may be relatively simple in LDAP. Search for an Index with a reservoirRef
that starts with the UUID. Since UUIDs are fixed-size, they can be matched quite easily. Searches can be local to a Domain, and only Collections may need to be searched.
The User and Domain serve as home Index, so they are the "roots" of the garbage collection process. We could search in both directions; and even switch back and forth. Adding some probabilistic techniques, such as a Bloom filter based on the UUID code itself, we might have something useful that supports a number of search phases in sequence.
Anyhow, it's not simple. We may need to mark objects for garbage collection... something like...
objectClass: reservoirPotentialGarbage
...but that'd be quite ugly :-S