Hello~
# spicedb
g
Hello~ I had a few questions. I am trying to address an issue related to ACL filtering. Technically, I have a working system but I do this essentially using an approach similar to what is described in the ACL filtering article on the blog. The issue is, I would like to query and filter tables containing a very large quantity of items and would like to use sorted indexes for them. When looking at the blog article, it seems to suggest essentially querying SpiceDB for that list. This doesn't seem feasible as I would need to get a full list based on visibility and join that to the table. I am actually not entirely sure how this is supposed to help unless I have a single sorting criteria per set of objects or have some complex method and multiple records per object to maintain inside SpiceDB. Am I missing something?
v
Hi, we've been exploring options for filtering, and have been describing them in https://github.com/authzed/spicedb/issues/207. This is not currently implemented / supported. Filtering large amounts of objects with a specific ordering criteria can't be scaled by just doing API calls to Zanzibar/SpiceDB. The paper suggests this is done with the
leopard
index, which essentially is used for denormalizing user to group and group to group relations. Our assumption is that search indexes leverage such this and/or some other form of denormalized ACL index. We proposed doing this with LookupWatch, which a consumer will listen to and persist changes closer to your database, which will also allow you to have your own custom ordering. The consequence is obviously a tremendous fan-out in potential writes to that denormalized representation, depending on your model, which will be challenging on its own. One single change could lead to hundreds or thousands of changes.