Grafite: Taming Adversarial Queries with Optimal Range Filters | Synapse