Stratégies multi-tenant
Alors que ChatGPT gagne en popularité, de plus en plus de développeurs créent leurs propres services SaaS en utilisant la pile CVP (ChatGPT, Vector Database, Prompt). Ce guide explique comment mettre en place une architecture multi-tenant sur Milvus, l'une des bases de données vectorielles les plus utilisées au monde, afin de suivre cette tendance.
La multi-location est une architecture dans laquelle une instance unique de Milvus sert plusieurs locataires. La façon la plus simple de distinguer les locataires est de séparer leurs données et leurs ressources de celles des autres. Chaque locataire dispose de ses propres ressources dédiées ou partage des ressources avec d'autres pour gérer les objets Milvus tels que les bases de données, les collections et les partitions. En fonction de ces objets, il existe des méthodes correspondantes pour réaliser le multi-tenant Milvus.
Multi-tenance orientée base de données
Depuis la version 2.2.9 de Milvus, la base de données des objets est désormais disponible. Vous pouvez créer plusieurs bases de données dans un seul cluster Milvus. Cette nouvelle fonctionnalité permet de réaliser une multi-location orientée base de données en attribuant une base de données à chaque locataire, afin qu'ils puissent créer leurs propres collections et partitions pour tirer le meilleur parti de leurs données. Toutefois, cette stratégie garantit l'isolation des données et les performances de recherche pour les locataires, mais les ressources risquent d'être gaspillées pour les locataires inactifs.
Multi-location axée sur la collecte
Il existe deux façons de parvenir à une multi-location orientée collection.
Une collection pour tous les locataires
L'utilisation d'une collection unique pour mettre en œuvre la multi-location en ajoutant un champ de locataire pour distinguer les locataires est une option simple. Lorsque vous effectuez des recherches ANN pour un locataire spécifique, ajoutez une expression de filtrage pour éliminer toutes les entités qui appartiennent à d'autres locataires. Il s'agit de la méthode la plus simple pour parvenir à la multi-location. Cependant, il faut savoir que les performances du filtre peuvent devenir le goulot d'étranglement des recherches ANN.
Une collection par locataire
Une autre approche consiste à créer une collection pour chaque locataire afin de stocker ses propres données, au lieu de stocker les données de tous les locataires dans une seule collection. Cela permet de mieux isoler les données et d'améliorer les performances des requêtes. Toutefois, il convient de garder à l'esprit que cette approche nécessite un investissement plus important en termes de planification des ressources, de capacité opérationnelle et de coûts et qu'elle peut ne pas être applicable si le nombre de locataires dépasse le nombre maximum de collections qu'un seul cluster Milvus peut prendre en charge.
Multi-locations orientées vers les partitions
Il existe également deux façons d'obtenir une multi-location orientée partition :
Une partition par locataire
La gestion d'une seule collection est beaucoup plus facile que la gestion de plusieurs collections. Au lieu de créer plusieurs collections, envisagez d'attribuer une partition à chaque locataire afin d'obtenir une isolation des données et une gestion de la mémoire flexibles. Les performances de recherche de la multi-location orientée partition sont bien meilleures que celles de la multi-location orientée collection. Il convient toutefois de noter que le nombre de locataires de la collection ne doit pas dépasser le nombre maximal de partitions qu'une collection peut contenir.
Multi-tenance basée sur les clés de partition
Milvus 2.2.9 introduit une nouvelle fonctionnalité appelée clé de partition. Lors de la création d'une collection, nommez un champ de locataire et faites-en le champ de clé de partition. Milvus stocke les entités dans une partition en fonction des valeurs du champ clé de partition. Lors des recherches ANN, Milvus passe à une partition basée sur la clé de partition spécifiée, filtre les entités en fonction de la clé de partition et effectue une recherche parmi les entités filtrées.