Mise à l'échelle pour le volume de requêtes
Problème : Quand une requête a une limite élevée (par ex. 1000) et qu'il y a plusieurs shards (par ex. 10), naïvement chaque shard doit retourner les 1000 résultats complets — totalisant 10 000 points notés transférés et fusionnés. C'est inefficace puisque les données sont distribuées aléatoirement entre les auto-shards.
Idée centrale
Au lieu de demander à chaque shard la limite complète, demander à chaque shard une limite plus petite calculée via les statistiques de la distribution de Poisson, puis fusionner. C'est sûr parce que l'auto-sharding garantit une distribution de données aléatoire et indépendante.
Quand cela s'active
- Plus de 1 shard
- L'auto-sharding est en use (tous les shards interrogés partagent la même shard key)
- La limite + offset de la requête >= SHARD_QUERY_SUBSAMPLING_LIMIT (128)
- La requête n'est pas exacte
Compromis clé
La stratégie échange une petite probabilité de résultats légèrement incomplets contre une réduction importante du transfert de données inter-shards, particulièrement pour les requêtes à limite élevée sur plusieurs shards. Le facteur de sécurité 1.2x et le seuil de Poisson à 99,9% maintiennent le taux d'erreur très bas — comparable aux imprécisions déjà introduites par les indices vectoriels approximatifs comme HNSW.