Revenir au contenu principal
Produit

Accélérez les requêtes de recherche avec les index de recherche en texte intégral sur Databricks

Les index de recherche en texte intégral peuvent accélérer les requêtes d'un facteur 100 ou plus sur les tables au format ouvert, sans modifier leur structure

par Yu Xu, Yingyi Bu et Ivan Vezilić

  • Databricks introduit les index de recherche en texte intégral en version Beta : créez un index avec une simple instruction SQL et vos requêtes de sous-chaînes et de mots-clés seront accélérées, sans qu'aucun indice de requête ni modification d'application ne soient nécessaires.
  • Les équipes qui utilisent la recherche en texte intégral dans leurs environnements de production constatent une accélération de plus de 100x sur les requêtes de recherche de sous-chaînes dans des tables à l'échelle du pétaoctet, ce qui a ouvert la voie à de nouveaux cas d'usage sur Databricks.
  • Disponible dès maintenant sur Databricks Runtime 18.2 pour les tables gérées par Unity Catalog, avec une maintenance automatique des index via Predictive Optimization prévue pour la version 18.3.

Toutes les équipes de données sont confrontées au même défi à mesure que les tables atteignent des centaines de gigaoctets ou de téraoctets, voire plus : les requêtes de recherche textuelle deviennent extrêmement lentes, qu'il s'agisse de rechercher un message d'erreur dans des téraoctets ou des pétaoctets de journaux d'application, de trouver une adresse IP suspecte dans des données de sécurité ou de localiser un contenu spécifique dans un ensemble de données de conformité. Ces requêtes finissent par analyser bien plus de données que nécessaire, ce qui rend les recherches rapides et ciblées difficiles à grande échelle. Aujourd'hui, nous sommes ravis d'annoncer une solution à ces défis : les index de recherche en texte intégral sont disponibles en version Beta sur Databricks Runtime 18.2.

Les équipes sont souvent contraintes de recourir à des solutions de contournement : maintenir des tables dupliquées, concevoir des systèmes de recherche externes comme Elasticsearch ou Splunk, ou sur-optimiser la structure des tables pour un modèle de requête spécifique au détriment des autres.

image2.png

Qu'est-ce que les index de recherche en texte intégral ?

Un index de recherche en texte intégral accélère les requêtes de sous-chaînes et de mots-clés dans les colonnes de texte. Une fois créé, le moteur de requête l'utilise automatiquement, de sorte que les recherches qui nécessitaient auparavant l'analyse d'une table entière n'en lisent plus qu'une infime partie. (Nous expliquons son fonctionnement ci-dessous.)

Les index de recherche en texte intégral sont idéaux pour les recherches à forte cardinalité et pour effectuer des recherches dans plusieurs colonnes de texte à la fois. En voici quelques exemples courants :

  • Analyse des journaux et SIEM (Security Information and Event Management) : recherche de messages d'erreur, d'adresses IP ou de comportements suspects dans des téraoctets de journaux de sécurité et d'applications.
  • Enquêtes de confiance et de sécurité (Trust and Safety) : recherche de contenus spécifiques dans d'immenses ensembles de données de modération de contenu.
  • Audit de conformité : localisation d'enregistrements contenant des termes spécifiques dans les données de rapports réglementaires.

Commencez simplement avec une instruction SQL :

Les requêtes sont ensuite accélérées automatiquement :

Le moteur de requête détecte l'index de recherche et l'utilise pour ignorer la grande majorité des fichiers, ce qui accélère souvent les requêtes de plusieurs ordres de grandeur.

Comment cela fonctionne en coulisses

Les index de recherche en texte intégral sont stockés séparément de la table de base. Lorsque vous créez un index, Databricks tokénise le contenu textuel et construit un index interne : une structure de recherche compacte qui associe les jetons (tokens) aux lignes correspondantes. Lors de la requête, le moteur consulte cet index pour identifier les fichiers susceptibles de contenir des lignes correspondantes, puis lit uniquement ces fichiers.

image3.png

Cette architecture offre plusieurs avantages clés :

  • Aucun impact sur les performances d'écriture : les index sont mis à jour de manière asynchrone. L'écriture dans la table de base n'est jamais ralentie par l'indexation.
  • Optimisation automatique des requêtes : le moteur de requête de Databricks évalue les index disponibles et sélectionne le meilleur chemin d'accès, sans qu'aucun indice de requête (query hint) ne soit nécessaire.
  • Exactitude garantie : même lorsqu'un index n'est pas à jour (en retard par rapport à la table de base), l'exactitude des requêtes est préservée. Databricks analyse à la fois les parties indexées et non indexées de la table selon les besoins, de sorte que les résultats soient toujours complets et précis.
  • Compatible avec Delta et Iceberg : les index de recherche en texte intégral prennent en charge les tables Delta et Iceberg gérées par Unity Catalog sur le calcul serverless et classique.

Quel est le rapport entre les index de recherche en texte intégral et le Liquid Clustering ?

Le Liquid Clustering et les index de recherche en texte intégral résolvent des problèmes différents. Le Liquid Clustering organise physiquement vos données afin que les requêtes filtrant sur la clé de clustering puissent ignorer efficacement de grands volumes de données. Le clustering facilite les filtres d'égalité et de plage sur les valeurs de colonne, mais il ne permet pas de localiser une sous-chaîne ou un mot-clé dans un champ.

À l'inverse, les index de recherche en texte intégral effectuent des recherches dans le texte des valeurs de colonne, ce qui permet des recherches rapides de sous-chaînes et de mots-clés. Cela signifie que les index de recherche en texte intégral accélèrent les requêtes même sur les colonnes que vous avez déjà clusterisées, car le clustering seul ne peut pas trouver de correspondance dans le contenu d'un champ.

En résumé, le Liquid Clustering optimise le filtrage par valeurs de colonne, tandis que les index de recherche en texte intégral optimisent la recherche au sein des valeurs de colonne. Ils sont complémentaires et fonctionnent ensemble sur la même table.

Résultats de performance chez nos clients

Une équipe chargée de la confiance et de la sécurité (Trust and Safety) a adopté les index de recherche en texte intégral pour mener des enquêtes sur une table à l'échelle du pétaoctet.

Une recherche de sous-chaîne qui devait auparavant analyser l'intégralité de la table s'exécute désormais plus de 100 fois plus vite, rendant pour la première fois les enquêtes interactives viables.

Nous travaillons activement sur des structures d'index plus efficaces et d'autres optimisations afin d'offrir des gains de vitesse encore plus importants dans les prochaines versions.

Prise en main

Les index de recherche en texte intégral sont disponibles en version Beta sur Databricks Runtime 18.2. Pour commencer, consultez la documentation sur les index de recherche en texte intégral.

Et ensuite ?

La prochaine étape majeure pour les index de recherche en texte intégral est la version 18.3, dans laquelle vous pouvez attendre :

  • Une intégration complète avec Unity Catalog avec héritage automatique des autorisations.
  • Une maintenance automatique via Predictive Optimization : plus besoin de REFRESH INDEX manuel. Vos index sont mis à jour automatiquement.

Nous sommes impatients de recevoir vos commentaires pendant cette période Beta. Essayez dès aujourd'hui les index de recherche en texte intégral sur vos charges de travail et aidez-nous à façonner la version Public Preview.

(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original

Recevez les derniers articles dans votre boîte mail

Abonnez-vous à notre blog et recevez les derniers articles directement dans votre boîte mail.