DataWorks, Milvus'u veri kaynağı olarak bağlamanıza olanak tanır. Bu sayede toplu senkronizasyon görevleri aracılığıyla Milvus vektör veritabanından veri okuyabilir ve bu veritabanına veri yazabilirsiniz.
Desteklenen Milvus sürümleri
Milvus 2.4.x
Milvus 2.5.x
Desteklenen alan türleri
Aşağıdaki tabloda Milvus yerel türleri ile Milvus Writer'ın kullandığı DataWorks dahili tür sınıflandırmaları arasındaki eşlemeler listelenmiştir.
| Milvus veri türü | DataWorks tür sınıflandırması |
|---|---|
| Int8 | LONG |
| Int16 | LONG |
| Int32 | LONG |
| Int64 | LONG |
| Float | DOUBLE |
| Double | DOUBLE |
| FloatVector | DOUBLE |
| String | STRING |
| VarChar | STRING |
| SparseFloatVector | STRING |
| JSON | STRING |
| Array | STRING |
| Bool | BOOLEAN |
| BFloat16Vector | BYTES |
| Float16Vector | BYTES |
| BinaryVector | BYTES |
Ön koşullar
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
Çalışan bir Milvus örneği ve uç nokta URL'si (örneğin
http://xxxx.milvus.aliyuncs.com:19530)Milvus kimlik doğrulama kimlik bilgileri (kullanıcı adı ve parola)
Veri kaynaklarını yönetme ve senkronizasyon görevleri oluşturma iznine sahip bir DataWorks çalışma alanı
Veri kaynağı ekleyin
Senkronizasyon görevi geliştirmeden önce DataWorks'e Milvus veri kaynağı ekleyin. Talimatlar için Veri kaynağı yönetimi konusuna bakın. Veri kaynağını eklerken parametre açıklamalarına doğrudan DataWorks konsolundan erişebilirsiniz.
Senkronizasyon görevi geliştirin
DataWorks, Milvus koleksiyonlarından veri okuyan veya bu koleksiyonlara veri yazan çevrimdışı senkronizasyon görevlerini destekler. Veri akışı şu şekildedir: Okuyucu kaynaktan kayıtları çeker, alan türü eşlemesi uygulanır ve yazıcı kayıtları hedef Milvus koleksiyonuna toplu olarak yazar.
Tek tablo için çevrimdışı senkronizasyon görevini yapılandırın
Aşağıdaki yaklaşımlardan birini kullanın:
Kod düzenleyici yapılandırması — Tam betik demosu ve parametre referansı için Ek bölümüne bakın
Ek: Betik demosu ve parametreler
Aşağıdaki betikler ve parametre tabloları kod düzenleyici aracılığıyla yapılandırılan toplu senkronizasyon görevleri için geçerlidir. Genel betik biçimi için Görevi kod düzenleyicide yapılandırma konusuna bakın.
Okuyucu
Betik demosu
{
"job": {
"content": [
{
"reader": {
"name": "milvusreader",
"parameter": {
"endpoint": "http://xxxx.milvus.aliyuncs.com:19530",
"database": "default",
"username": "root",
"password": "xxxxxxx",
"collection": "testColection",
"column": [
{
"name": "id",
"type": "Int64",
"primaryKey": "true"
},
{
"name": "int8col",
"type": "Int8"
},
{
"name": "int16col",
"type": "Int16"
}
]
}
},
"writer": {
"name": "Writer",
"category": "writer",
"stepType": "stream",
"parameter": {}
}
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": false,
"concurrent": 1,
"channel": 1
}
}
}
}
Okuyucu parametreleri
| Parametre | Açıklama | Zorunlu | Varsayılan |
|---|---|---|---|
collection |
Okunacak koleksiyon. | Evet | Yok |
column |
Okunacak alanlar. Her biri name ve type içeren alan nesnelerinden oluşan bir dizi olarak yapılandırın. Birincil anahtar alanı için primaryKey değerini "true" olarak ayarlayın. Dinamik alanları okumak için aşağıdaki dinamik alan seçeneklerine bakın. |
Evet | Yok |
filter |
WHERE yan tümcesine eşdeğer bir filtre koşulu. Söz dizimi için Milvus boolean ifadesi belgelerine bakın. | Hayır | Yok |
batchSize |
Toplu iş başına okunacak kayıt sayısı. | Hayır | 1024 |
column için dinamik alan seçenekleri
Tüm dinamik alanları tek bir JSON alanı olarak senkronize etmek için:
"column": [
{
"name": "dynamicName",
"type": "json",
"dynamicFileType": "allDynamicField"
}
]
Tek bir dinamik alanı senkronize etmek için (burada {singleDynamicName} koleksiyondaki alan adıdır):
"column": [
{
"name": "{singleDynamicName}",
"type": "int",
"dynamicFileType": "singleDynamicField"
}
]
Yazıcı
Betik demosu
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"name": "Reader",
"category": "reader",
"stepType": "stream",
"parameter": {}
},
{
"name": "Writer",
"category": "writer",
"stepType": "milvus",
"parameter": {
"datasource": "zm_test",
"collection": "test",
"schemaCreateMode": "createIfNotExist",
"enableDynamicSchema": true,
"envType": 1,
"column": [
{
"name": "floatv1",
"type": "FloatVector",
"dimension": "3"
},
{
"name": "incol",
"type": "Int16"
}
],
"writeMode": "insert",
"batchSize": 1024
}
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
}
}
Yazıcı parametreleri
| Parametre | Açıklama | Zorunlu | Varsayılan |
|---|---|---|---|
datasource |
DataWorks'te yapılandırıldığı şekilde veri kaynağının adı. | Evet | Yok |
collection |
Milvus'taki hedef koleksiyon. | Evet | Yok |
schemaCreateMode |
DataWorks'ün senkronizasyondan önce koleksiyonu nasıl işlediği. Ayrıntılar için Koleksiyon oluşturma modları bölümüne bakın. | Evet | createIfNotExist |
column |
Hedef alanlar. Alan nesnelerinden oluşan bir dizi olarak yapılandırın. Her alan için name ve type gereklidir. Vektör alanları ayrıca dimension gerektirir (örneğin "dimension": "3"). |
Evet | Yok |
writeMode |
Yazma davranışı. Ayrıntılar için Yazma modları bölümüne bakın. | Hayır | upsert |
partition |
Hedef bölüm. _default bölümüne yazmak için boş bırakın. |
Hayır | _default |
batchSize |
Toplu iş başına yazılacak kayıt sayısı. | Hayır | 1024 |
enableDynamicSchema |
DataWorks koleksiyonu oluştururken dinamik şemayı etkinleştirir. | Hayır | true |
Yazma modları
| Mod | Davranış |
|---|---|
upsert |
Otomatik artan birincil anahtarı olmayan koleksiyonlar için varlığı birincil anahtarına göre günceller. Otomatik artan birincil anahtarı olan koleksiyonlar için birincil anahtarı otomatik olarak oluşturulan bir değerle değiştirir ve veriyi ekler. |
insert |
Mevcut birincil anahtarları kontrol etmeden veriyi ekler. Milvus'un birincil anahtarları otomatik olarak oluşturduğu, otomatik artan birincil anahtara sahip koleksiyonlar için kullanın. Otomatik artan birincil anahtarı olmayan bir koleksiyonda insert kullanılırsa yinelenen kayıtlar oluşabilir. |
Koleksiyon oluşturma modları
schemaCreateMode parametresi hedef koleksiyon mevcut olmadığında DataWorks'ün ne yapacağını kontrol eder.
| Mod | Davranış |
|---|---|
createIfNotExist |
Yapılandırılan column ve diğer parametrelere dayanarak koleksiyonu oluşturur ve ardından senkronizasyonu başlatır. Koleksiyon zaten mevcutsa olduğu gibi kullanır. |
Ignore |
Koleksiyon mevcut değilse hata bildirir. |
recreate |
Her senkronizasyon çalıştırmasından önce mevcut koleksiyonu siler ve yeni bir tane oluşturur. |