qdrant-sliding-time-window

Guide la mise à l'échelle par fenêtre temporelle glissante dans Qdrant. À utiliser quand quelqu'un demande « seules les données récentes comptent », « comment expirer d'anciens vecteurs », « rotation de données temporelle », « supprimer efficacement les anciennes données », « recherche dans un fil de réseau social », « recherche d'actualités », « recherche dans des logs avec rétention », ou « comment ne conserver que les N derniers mois de données ».

npx skills add https://github.com/qdrant/skills --skill qdrant-sliding-time-window

Mise à l'échelle avec une fenêtre temporelle glissante

À utiliser quand seules les données récentes ont besoin d'une recherche rapide -- posts sur les réseaux sociaux, articles d'actualité, tickets de support, logs, offres d'emploi. Les anciennes données deviennent soit obsolètes, soit peuvent tolérer un accès plus lent.

Trois stratégies : rotation de shards (recommandée), rotation de collections (quand la configuration par période diffère), et filtre-et-suppression (la plus simple, pour un nettoyage continu).

Rotation de Shards (Recommandée)

À utiliser quand : les données ont des limites temporelles naturelles (quotidiennes, hebdomadaires, mensuelles). Préférée car les requêtes couvrent toutes les périodes en une seule demande sans fan-out au niveau application. Sharding défini par l'utilisateur

  1. Créer une collection avec sharding défini par l'utilisateur activé
  2. Créer une clé de shard par période (par ex., 2025-01, 2025-02, ..., 2025-06)
  3. Ingérer les données dans la clé de shard de la période actuelle
  4. Quand une nouvelle période commence, créer une nouvelle clé de shard et rediriger les écritures
  5. Supprimer la clé de shard la plus ancienne en dehors de la fenêtre de rétention
  • Supprimer une clé de shard récupère toutes les ressources instantanément (pas de fragmentation, pas de surcharge d'optimiseur)
  • Pré-créer la clé de shard de la période suivante avant la rotation pour éviter une interruption d'écriture
  • Utiliser shard_key_selector au moment de la requête pour chercher uniquement des périodes spécifiques par efficacité
  • Les clés de shard peuvent être placées sur des nœuds spécifiques pour un tiering chaud/froid

Rotation de Collections (Échange d'alias)

À utiliser quand : vous avez besoin d'une configuration de collection par période (par ex., quantification ou paramètres de stockage différents). Alias de collections

  1. Créer une collection par période, pointer un alias d'écriture vers la plus récente
  2. Interroger toutes les collections actives en parallèle, fusionner les résultats côté client
  3. Quand une nouvelle période commence, créer la nouvelle collection et échanger l'alias d'écriture Changer de collection
  4. Supprimer la collection la plus ancienne en dehors de la fenêtre

Compromis vs rotation de shards : permet des différences de configuration par collection, mais nécessite un fan-out au niveau application et une surcharge opérationnelle plus importante.

Filtre-et-Suppression

À utiliser quand : les données arrivent continuellement sans limites temporelles claires, ou vous voulez la configuration la plus simple.

  1. Stocker un payload timestamp sur chaque point, créer un index de payload dessus Index de payload
  2. Filtrer à la fenêtre désirée au moment de la requête avec une condition range Filtre de plage
  3. Supprimer périodiquement les points expirés en utilisant delete-by-filter Supprimer des points
  • Exécuter le nettoyage pendant les heures creuses par lot (10 000-50 000 points) pour éviter les verrous d'optimiseur
  • Les suppressions ne sont pas gratuites : les points tombstoned dégradent la recherche jusqu'à ce que l'optimiseur compacte les segments
  • Ne récupère pas le disque instantanément (la compaction est asynchrone)

Tiers Chaud/Froid

À utiliser quand : les données récentes ont besoin d'une recherche rapide en RAM, les données plus anciennes doivent rester interrogeables avec une performance inférieure.

  • Rotation de shards : placer la clé de shard actuelle sur des nœuds de stockage rapide, déplacer les anciennes clés de shard vers des nœuds moins chers via placement de shard. Toutes les requêtes passent toujours par une seule collection.
  • Rotation de collections : garder la collection actuelle en RAM (always_ram: true), déplacer les collections plus anciennes vers des vecteurs mmap/sur disque. Quantification

Ce qu'il NE FAUT PAS faire

  • N'utilisez pas filtre-et-suppression pour des séries temporelles à haut volume avec des millions de suppressions quotidiennes (utilisez la rotation à la place)
  • N'oubliez pas d'indexer le champ timestamp (les filtres de plage sans index provoquent des analyses complètes)
  • N'utilisez pas la rotation de collections quand la rotation de shards suffirait (complexité de fan-out inutile)
  • Ne supprimez pas une clé de shard ou une collection avant de vérifier que sa période est entièrement en dehors de la fenêtre de rétention
  • Ne sautez pas la pré-création de la clé de shard ou de la collection de la période suivante (les échecs d'écriture pendant la rotation sont difficiles à récupérer)

Skills similaires