Alors que le stockage de données dans une base de données relationnelle est toujours une option populaire, les SGBDR modernes proposant des fonctionnalités de recherche plein-texte (full-text) avancées restent rares.
Qu'à cela ne tienne : des techniques existent pour répliquer les données dans une autre solution de stockage telle qu'Elasticsearch, qui permet justement de la recherche plein-texte avancée et performante.
Cependant, sur une application dont les besoins de passage à l'échelle sont modérés, le déploiement d'un cluster Kafka et le passage à une architecture basée sur les événements peut paraître exagéré. Est-il possible de faire plus simple, de répliquer les données au fil de l'eau, de manière distribuée, avec une base de données comme seule infrastructure ? Et idéalement sans rien configurer…
Durant cette présentation, nous aborderons brièvement les problématiques résolues par l'indexation full-text via Hibernate Search, une bibliothèque Java.
Puis, une démonstration illustrera l'utilisation concrète au sein de Quarkus, la stack Java cloud-native et donc appropriée pour une application distribuée.
Nous expliquerons ensuite plus en détails la façon dont Hibernate Search distribue la charge d'indexation sur plusieurs instances d'une application de façon dynamique, sans topologie pré-définie, tout en garantissant la cohérence à terme des index, sans imposer d'autre éléments d'infrastructure qu'une simple base de données relationnelle.