Einführung des Milvus-Datenmigrations-Tools
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:
Faiss zu Milvus: Importieren Sie ungezippte Daten von Faiss zu Milvus.
HDF5 nach Milvus: Importieren Sie HDF5-Dateien in Milvus.
Milvus zu Milvus: Migrieren Sie Daten von einem Quell-Milvus zu einem anderen Ziel-Milvus.
Milvus zu HDF5: Speichern von Daten in Milvus als HDF5-Dateien.
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
oderdata_dir
an. Setzen Sie nicht beides. Verwenden Siedata_path
, um mehrere Dateipfade anzugeben, oderdata_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 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 StartedLike the article? Spread the word