milvus-logo
LFAI
Casa
  • Concetti

Strategie multi-tenancy

Con la crescente popolarità di ChatGPT, sempre più sviluppatori creano i propri servizi SaaS utilizzando lo stack CVP (ChatGPT, Vector Database, Prompt). Questa guida spiega come ottenere la multi-tenancy su Milvus, uno dei database vettoriali più utilizzati al mondo, per stare al passo con questa tendenza.

La multi-tenancy è un'architettura in cui una singola istanza di Milvus serve più tenant. Il modo più semplice per distinguere i tenant è separare i loro dati e le loro risorse da quelli degli altri. Ogni tenant ha le proprie risorse dedicate o condivide le risorse con altri per gestire oggetti Milvus come database, collezioni e partizioni. In base a questi oggetti, esistono metodi corrispondenti per ottenere la multi-tenancy di Milvus.

Multi-tenancy orientata ai database

Dalla versione 2.2.9 di Milvus è disponibile il database degli oggetti. È possibile creare più database in un singolo cluster Milvus. Questa nuova funzione consente di ottenere una multi-tenancy orientata al database, assegnando un database a ciascun tenant, in modo che questi possa creare le proprie collezioni e partizioni per sfruttare al meglio i propri dati. Tuttavia, questa strategia garantisce l'isolamento dei dati e le prestazioni di ricerca per i tenant, ma le risorse possono essere sprecate per i tenant inattivi.

Multi-tenancy orientata alle collezioni

Esistono due modi possibili per ottenere la multi-tenancy orientata alle collezioni.

Una collezione per tutti i tenant

L'uso di una singola collezione per implementare la multi-tenancy, aggiungendo un campo tenant per distinguere i tenant, è un'opzione semplice. Quando si effettua una ricerca RNA per uno specifico tenant, si aggiunge un'espressione di filtro per filtrare tutte le entità che appartengono ad altri tenant. Questo è il modo più semplice per ottenere la multi-tenancy. Tuttavia, occorre tenere presente che le prestazioni del filtro possono diventare il collo di bottiglia delle ricerche ANN.

Una collezione per tenant

Un altro approccio consiste nel creare una collezione per ogni tenant per memorizzare i propri dati, invece di memorizzare i dati di tutti i tenant in una singola collezione. In questo modo si ottiene un migliore isolamento dei dati e migliori prestazioni di interrogazione. Tuttavia, bisogna tenere presente che questo approccio richiede maggiori investimenti in termini di pianificazione delle risorse, capacità operativa e costi e potrebbe non essere applicabile se il numero di tenant supera il numero massimo di collezioni supportate da un singolo cluster Milvus.

Multi-tenancy orientata alle partizioni

Esistono anche due modi possibili per ottenere la multi-tenancy orientata alle partizioni:

Una partizione per tenant

La gestione di una singola collezione è molto più semplice della gestione di più collezioni. Invece di creare più collezioni, si può pensare di assegnare una partizione per ogni tenant per ottenere un isolamento dei dati e una gestione della memoria flessibili. Le prestazioni di ricerca della multi-tenancy orientata alle partizioni sono molto migliori di quelle della multi-tenancy orientata alle collezioni. Tuttavia, si noti che il numero di tenant della collezione non deve superare il numero massimo di partizioni che una collezione può contenere.

Multi-tenancy basata su chiavi di partizione

Milvus 2.2.9 introduce una nuova funzione chiamata chiave di partizione. Al momento della creazione di una collezione, si nomina un campo tenancy e lo si rende il campo chiave della partizione. Milvus memorizzerà le entità in una partizione in base ai valori del campo chiave della partizione. Quando si effettuano ricerche su RNA, Milvus passa a una partizione basata sulla chiave di partizione specificata, filtra le entità in base alla chiave di partizione e cerca tra le entità filtrate.

Questa strategia elimina il limite del numero massimo di tenant che una collezione Milvus può supportare e semplifica notevolmente la gestione delle risorse perché Milvus gestisce automaticamente le partizioni per voi.

Riassumendo, è possibile utilizzare una o alcune delle strategie multi-tenancy sopra descritte per creare la propria soluzione. La tabella seguente mette a confronto queste strategie in termini di isolamento dei dati, prestazioni di ricerca e numero massimo di tenant.

Isolamento dei datiPrestazioni di ricercaNumero massimo di tenantScenari consigliati
Orientato al databaseForteForte64Per chi ha bisogno di collezioni che variano a seconda dei progetti, particolarmente adatte per l'isolamento dei dati tra i reparti dell'organizzazione.
Una raccolta per tuttiDeboleMedioN/DPer chi ha risorse limitate ed è insensibile all'isolamento dei dati.
Una raccolta per inquilinoForteForteMeno di 10.000Per chi ha meno di 10.000 tenant per cluster.
Una partizione per tenantMedioForte4,096Per chi ha meno di 4.096 tenant per collezione.
Basato su chiavi di partizioneMedioForte10,000,000+Per chi prevede un rapido aumento degli inquilini fino a milioni.

Cosa c'è dopo

Gestirelo schema deidatabase

Tradotto daDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?