🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
  • Home
  • Blog
  • Einführung des Milvus-Datenmigrations-Tools

Einführung des Milvus-Datenmigrations-Tools

  • Engineering
March 15, 2021
Zilliz

Wichtiger Hinweis: Das Mivus Data Migration Tool ist veraltet. Für die Datenmigration von anderen Datenbanken zu Milvus empfehlen wir Ihnen, das fortschrittlichere Milvus-Migrations-Tool zu verwenden.

Das Milvus-Migrations-Tool unterstützt derzeit:

  • Elasticsearch zu Milvus 2.x
  • Faiss nach Milvus 2.x
  • Milvus 1.x nach Milvus 2.x
  • Milvus 2.3.x nach Milvus 2.3.x oder höher

Wir werden die Migration von weiteren Vektordatenquellen wie Pinecone, Chroma und Qdrant unterstützen. Bleiben Sie dran.

Weitere Informationen finden Sie in der Milvus-Migrationsdokumentation oder im GitHub-Repository.

--------------------------------- Mivus Data Migration Tool ist veraltet ----------------------

Überblick

MilvusDM (Milvus Data Migration) ist ein Open-Source-Tool, das speziell für das Importieren und Exportieren von Datendateien mit Milvus entwickelt wurde. MilvusDM kann die Effizienz der Datenverwaltung erheblich verbessern und die DevOps-Kosten auf folgende Weise reduzieren:

milvusdm blog 1.png milvusdm blog 1.png

MilvusDM wird auf Github gehostet und kann einfach durch Ausführen der Befehlszeile pip3 install pymilvusdm installiert werden. MilvusDM ermöglicht es Ihnen, Daten in einer bestimmten Sammlung oder Partition zu migrieren. In den folgenden Abschnitten wird erklärt, wie man die einzelnen Datenmigrationsarten verwendet.


Faiss nach Milvus

Schritte

1.laden Sie F2M.yaml herunter:

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2

2. Setzen Sie die folgenden Parameter:

  • data_path: Datenpfad (Vektoren und ihre entsprechenden IDs) in Faiss.

  • dest_host: Adresse des Milvus-Servers.

  • dest_port: Port des Milvus-Servers.

  • mode: Daten können mit den folgenden Modi in Milvus importiert werden:

    • Überspringen: Daten ignorieren, wenn die Sammlung oder Partition bereits existiert.

    • Anhängen: Daten anhängen, wenn die Sammlung oder Partition bereits vorhanden ist.

    • Überschreiben: Daten vor dem Einfügen löschen, wenn die Sammlung oder Partition bereits vorhanden ist.

  • dest_collection_name: Name der empfangenden Sammlung für den Datenimport.

  • dest_partition_name: Name der empfangenden Partition für den Datenimport.

  • collection_parameter: Sammlungsspezifische Informationen wie Vektordimension, Größe der Indexdatei und Abstandsmetrik.

F2M:
  milvus_version: 1.0.0
  data_path: '/home/data/faiss.index'
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'append'        # 'skip/append/overwrite'
  dest_collection_name: 'test'
  dest_partition_name: ''
  collection_parameter:
    dimension: 256
    index_file_size: 1024
    metric_type: 'L2'

3. führen Sie F2M.yaml aus:

$ milvusdm --yaml F2M.yaml

Beispielcode

1.liest Faiss-Dateien, um Vektoren und ihre entsprechenden IDs abzurufen.

ids, vectors = faiss_data.read_faiss_data()

2. die abgerufenen Daten in Milvus einfügen:

insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)


HDF5 nach Milvus

Schritte

1.laden Sie H2M.yaml herunter.

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml

2.setzen Sie die folgenden Parameter:

  • data_path: Pfad zu den HDF5-Dateien.

  • data_dir: Verzeichnis mit den HDF5-Dateien.

  • dest_host: Adresse des Milvus-Servers.

  • dest_port: Anschluss des Milvus-Servers.

  • mode: Daten können mit den folgenden Modi in Milvus importiert werden:

    • Überspringen: Daten ignorieren, wenn die Sammlung oder Partition bereits existiert.

    • Anhängen: Daten anhängen, wenn die Sammlung oder Partition bereits vorhanden ist.

    • Überschreiben: Daten vor dem Einfügen löschen, wenn die Sammlung oder Partition bereits vorhanden ist.

  • dest_collection_name: Name der empfangenden Sammlung für den Datenimport.

  • dest_partition_name: Name der empfangenden Partition für den Datenimport.

  • collection_parameter: Sammlungsspezifische Informationen wie Vektordimension, Indexdateigröße und Abstandsmetrik.

Geben Sie entweder data_path oder data_dir an. Setzen Sie nicht beides. Verwenden Sie data_path, um mehrere Dateipfade anzugeben, oder data_dir, um das Verzeichnis mit Ihrer Datendatei anzugeben.

H2M:
  milvus-version: 1.0.0
  data_path:
    - /Users/zilliz/float_1.h5
    - /Users/zilliz/float_2.h5
  data_dir:
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'overwrite'        # 'skip/append/overwrite'
  dest_collection_name: 'test_float'
  dest_partition_name: 'partition_1'
  collection_parameter:
    dimension: 128
    index_file_size: 1024
    metric_type: 'L2'

3. führen Sie H2M.yaml aus:

$ milvusdm --yaml H2M.yaml

Beispielcode

1) Lesen Sie die HDF5-Dateien, um die Vektoren und ihre entsprechenden IDs abzurufen:

vectors, ids = self.file.read_hdf5_data()

2. fügen Sie die abgerufenen Daten in Milvus ein:

ids = insert_milvus.insert_data(vectors, self.c_name, self.c_param, self.mode, ids,self.p_name)


Milvus zu Milvus

Schritte

1.laden Sie M2M.yaml herunter.

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml

2.setzen Sie die folgenden Parameter:

  • source_milvus_path: Quell-Milvus-Arbeitspfad.

  • mysql_parameter: Quell-Milvus-MySQL-Einstellungen. Wenn MySQL nicht verwendet wird, setzen Sie mysql_parameter auf ''.

  • source_collection: Namen der Sammlung und ihrer Partitionen in der Milvus-Quelle.

  • dest_host: Milvus-Server-Adresse.

  • dest_port: Port des Milvus-Servers.

  • mode: Daten können mit den folgenden Modi in Milvus importiert werden:

    • Überspringen: Daten ignorieren, wenn die Sammlung oder Partition bereits existiert.

    • Anhängen: Daten anhängen, wenn die Sammlung oder Partition bereits vorhanden ist.

    • Überschreiben: Löschen Sie die Daten vor dem Einfügen, wenn die Sammlung oder Partition bereits existiert.

M2M:
  milvus_version: 1.0.0
  source_milvus_path: '/home/user/milvus'
  mysql_parameter:
    host: '127.0.0.1'
    user: 'root'
    port: 3306
    password: '123456'
    database: 'milvus'
  source_collection:
    test:
      - 'partition_1'
      - 'partition_2'
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'skip' # 'skip/append/overwrite'

3. führen Sie M2M.yaml aus.

$ milvusdm --yaml M2M.yaml

Beispielcode

1. entsprechend den Metadaten einer bestimmten Sammlung oder Partition die Dateien unter milvus/db auf Ihrem lokalen Laufwerk lesen, um Vektoren und ihre entsprechenden IDs aus der Milvus-Quelle abzurufen.

collection_parameter, _ = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)

2. fügen Sie die abgerufenen Daten in das Ziel-Milvus ein.

milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)


Milvus zu HDF5

Schritte

1.laden Sie M2H.yaml herunter:

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml

2. Setzen Sie die folgenden Parameter:

  • source_milvus_path: Quell-Milvus-Arbeitspfad.

  • mysql_parameter: Quell-Milvus-MySQL-Einstellungen. Wenn MySQL nicht verwendet wird, setzen Sie mysql_parameter auf ''.

  • source_collection: Namen der Sammlung und ihrer Partitionen in der Milvus-Quelle.

  • data_dir: Verzeichnis, in dem die HDF5-Dateien gespeichert werden.

M2H:
  milvus_version: 1.0.0
  source_milvus_path: '/home/user/milvus'
  mysql_parameter:
    host: '127.0.0.1'
    user: 'root'
    port: 3306
    password: '123456'
    database: 'milvus'
  source_collection: # specify the 'partition_1' and 'partition_2' partitions of the 'test' collection.
    test:
      - 'partition_1'
      - 'partition_2'
  data_dir: '/home/user/data'

3. M2H.yaml ausführen:

$ milvusdm --yaml M2H.yaml

Beispielcode

1. entsprechend den Metadaten einer bestimmten Sammlung oder Partition die Dateien unter milvus/db auf Ihrem lokalen Laufwerk lesen, um die Vektoren und ihre entsprechenden IDs abzurufen.

collection_parameter, version = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)

2. speichern Sie die abgerufenen Daten als HDF5-Dateien.

data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)

MilvusDM Dateistruktur

Das folgende Flussdiagramm zeigt, wie MilvusDM verschiedene Aufgaben entsprechend der empfangenen YAML-Datei durchführt:

milvusdm blog 2.png milvusdm blog 2.png

MilvusDM Dateistruktur:

  • pymilvusdm

    • Kern

      • milvus_client.py: Führt Client-Operationen in Milvus durch.

      • read_data.py: Liest die HDF5-Datendateien auf Ihrem lokalen Laufwerk. (Fügen Sie hier Ihren Code hinzu, um das Lesen von Datendateien in anderen Formaten zu unterstützen).

      • read_faiss_data.py: Liest die Datendateien in Faiss.

      • read_milvus_data.py: Liest die Datendateien in Milvus.

      • read_milvus_meta.py: Liest die Metadaten in Milvus.

      • data_to_milvus.py: Erzeugt Kollektionen oder Partitionen auf Basis von Parametern in YAML-Dateien und importiert die Vektoren und die entsprechenden Vektor-IDs in Milvus.

      • save_data.py: Speichert die Daten als HDF5-Dateien.

      • write_logs.py: Schreibt Protokolle während der Laufzeit.

    • faiss_to_milvus.py: Importiert Daten aus Faiss in Milvus.

    • hdf5_to_milvus.py: Importiert Daten in HDF5-Dateien in Milvus.

    • milvus_to_milvus.py: Migriert Daten von einem Quell-Milvus zum Ziel-Milvus.

    • milvus_to_hdf5.py: Exportiert Daten in Milvus und speichert sie als HDF5-Dateien.

    • main.py: Führt entsprechende Aufgaben gemäß der empfangenen YAML-Datei aus.

    • setting.py: Konfigurationen, die sich auf die Ausführung des MilvusDM-Codes beziehen.

  • setup.py: Erzeugt pymilvusdm-Dateipakete und lädt sie in PyPI (Python Package Index) hoch.


Rekapitulation

MilvusDM kümmert sich hauptsächlich um die Migration von Daten in und aus Milvus, einschließlich Faiss nach Milvus, HDF5 nach Milvus, Milvus nach Milvus und Milvus nach HDF5.

Die folgenden Funktionen sind für kommende Versionen geplant:

  • Importieren von Binärdaten von Faiss nach Milvus.

  • Blockliste und Erlaubnisliste für die Datenmigration zwischen Milvus-Quelle und Milvus-Ziel.

  • Zusammenführen und Importieren von Daten aus mehreren Sammlungen oder Partitionen im Quell-Milvus in eine neue Sammlung im Ziel-Milvus.

  • Sicherung und Wiederherstellung der Milvus-Daten.

Das MilvusDM-Projekt ist ein Open-Source-Projekt auf Github. Alle Beiträge zum Projekt sind willkommen. Geben Sie ihm einen Stern 🌟, und fühlen Sie sich frei, einen Fehler zu melden oder Ihren eigenen Code einzureichen!

    Try Managed Milvus for Free

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

    Get Started

    Like the article? Spread the word

    Weiterlesen