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ć
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.

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 :
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.
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.

Cette architecture offre plusieurs avantages clés :
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.
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.
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 :
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
Abonnez-vous à notre blog et recevez les derniers articles directement dans votre boîte mail.