Casi d'uso degli snapshotCompatible with Milvus 3.0.x
In questa guida troverete i casi d'uso più comuni degli snapshot.
Backup e ripristino dei dati
Gli snapshot sono immagini rapide dei dati relative a un determinato momento, adatte per rollback veloci o test (da giorni a settimane). Allo stesso tempo, i backup sono copie complete e indipendenti, archiviate separatamente per il ripristino di emergenza a lungo termine (da settimane ad anni) e per una migliore protezione contro il guasto totale dello storage.
La tabella seguente mette a confronto snapshot e backup.
Backup |
Snapshot |
|
|---|---|---|
Creazione del backup |
Copia tutti i file di dati (operazione che richiede tempo) |
Crea solo i metadati (in pochi millisecondi) |
Ripristino |
Importa i dati e ricostruisce gli indici |
Copia solo i file di dati e di indice esistenti |
Prestazioni |
Lento e ad alto consumo di risorse |
Veloce e leggero (da pochi secondi a pochi minuti) |
Impatto sul sistema |
Elevato utilizzo di I/O e CPU |
Impatto minimo |
La creazione di uno snapshot richiede solitamente pochi millisecondi, mentre il ripristino richiede da pochi secondi a pochi minuti, a seconda del volume dei dati.
Per ulteriori dettagli sui limiti e sulle restrizioni degli snapshot, nonché sul loro impatto sul sistema, consultare la sezione Snapshot.
Elaborazione dei dati con raccolte esterne
Gli snapshot possono fornire fonti stabili e relative a un determinato momento per carichi di lavoro analitici o di convalida. Per gli snapshot di Milvus, utilizzare il formato di raccolta esterno " milvus-table " anziché leggere direttamente i file di snapshot come input generico di Spark. Uno snapshot di Milvus memorizza i metadati della raccolta, i manifest dei segmenti, i log di eliminazione e le statistiche delle chiavi primarie; pertanto, Milvus necessita del JSON dei metadati dello snapshot e del lettore milvus-table per preservare lo schema corretto e la semantica delle eliminazioni.
Questo flusso di lavoro crea una raccolta esterna interrogabile sui dati dello snapshot. I dati della colonna principale continuano a essere referenziati dall’origine dello snapshot, mentre l’aggiornamento mappa i manifesti StorageV3 di origine nei segmenti esterni di destinazione.
Passaggio 1: Ottenere il percorso dei metadati dello snapshot
Creare o selezionare uno snapshot da una normale collezione Milvus, quindi descriverlo per ottenere la sua posizione nell’object storage.
from pymilvus import DataType, MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
snapshot_info = client.describe_snapshot(
snapshot_name="analytics_snapshot_20260321",
collection_name="my_collection",
include_collection_info=True
)
external_source = f"s3://bucket/{snapshot_info.s3_location}"
Passaggio 2: creare e aggiornare una raccolta esterna di tipo " milvus-table "
Creare una collezione esterna il cui schema corrisponda a quello della collezione di origine dello snapshot. Impostare ` external_spec.format ` su ` "milvus-table"` e impostare ` external_field ` di ciascun campo dati di destinazione sul nome del campo di origine corrispondente.
schema = client.create_schema(
external_source=external_source,
external_spec="""{
"format": "milvus-table",
"extfs": {
"cloud_provider": "aws",
"region": "us-west-2",
"access_key_id": "YOUR_ACCESS_KEY",
"access_key_value": "YOUR_SECRET_KEY"
}
}""",
)
schema.add_field(
field_name="id",
datatype=DataType.INT64,
is_primary=True,
external_field="id",
)
schema.add_field(
field_name="embedding",
datatype=DataType.FLOAT_VECTOR,
dim=768,
external_field="embedding",
)
client.create_collection(
collection_name="snapshot_external_collection",
schema=schema,
)
job_id = client.refresh_external_collection(
collection_name="snapshot_external_collection"
)
Al termine dell’aggiornamento, è possibile creare indici, caricare la raccolta esterna ed eseguire operazioni di ricerca o query sulla vista basata sull’istantanea.