• Informazioni su Milvus
  • Inizia
  • Concetti
  • Guida per l'utente
  • Importazione dei dati
  • Strumenti di intelligenza artificiale
  • Guida all'amministrazione
  • Strumenti
  • Integrazioni
  • Tutorial
  • Domande frequenti
  • API Reference

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.