Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:Milvus

Son Güncelleme:Oct 04, 2026

Bu konu, Milvus bağlayıcısının nasıl kullanılacağını açıklar.

Genel Bakış

Milvus; resim, metin ve ses gibi büyük ölçekli yapılandırılmamış verileri işlemek üzere tasarlanmış, yüksek ölçeklenebilirliğe sahip bir vektör veritabanıdır. Verimli benzerlik araması destekleyen bu veritabanı; öneri sistemleri, görsel erişimi ve anlamsal arama gibi kullanım senaryoları için idealdir. Milvus bağlayıcısı aşağıdaki yetenekleri sunar:


Kategori


Ayrıntılar


Desteklenen türler


Sink tablosu, vektör tablosu


Çalışma modu


Akış


Veri biçimi


Yok


Özel izleme ölçümleri


Yok


API türü


SQL


Güncelleme/silme işlemlerini destekler


Evet

Özellikler

Milvus bağlayıcısı, Apache Flink'i Milvus vektör veritabanıyla sıkı bir şekilde entegre ederek gerçek zamanlı vektör araması senaryoları için yüksek performanslı ve güvenilir bir veri işlem hattı oluşturur. Milvus bağlayıcısının temel özellikleri şunlardır:

  • Yüksek eşzamanlı yazma: Yapılandırılabilir sink paralelliğini destekler.

  • Otomatik yeniden deneme: Kararlılığı artırmak için başarısız işlemleri yeniden dener.

  • Toplu tamponlama: Kayıtları flush işleminden önce toplu hale getirerek yazma performansını artırır.

  • En az bir kez semantiği: Birincil anahtara dayalı idempotent güncellemeler aracılığıyla nihai tutarlılığı sağlar.

  • Vektör araması: Flink SQL içinde doğrudan gerçek zamanlı vektör benzerlik aramalarını etkinleştirir.

Ön Koşullar

  • Bir Milvus kümesi oluşturdunuz. Daha fazla bilgi için bkz. Hızlı başlangıç: Milvus örneği oluşturma.

  • Bir Milvus koleksiyonu oluşturdunuz. Belirli bir bölüme yazma planınız varsa Milvus bölümünün zaten mevcut olduğundan emin olun.

Sınırlamalar

  • Bir sink tablosuna yazmak için Ververica Runtime (VVR) 11.1 veya sonraki bir sürüm gerekir.

  • Bir vektör tablosunu sorgulamak için VVR 11.3 veya sonraki bir sürüm gerekir.

  • Yalnızca Milvus 2.4.x desteklenir.

  • Milvus bağlayıcısı yalnızca en az bir kez semantiğini destekler.

Sözdizimi

CREATE TEMPORARY TABLE milvus_sink (
  id BIGINT,
  f1 STRING,
  f2 BOOLEAN,
  f3 TINYINT,
  f4 SMALLINT,
  f5 INTEGER,
  f6 DATE,
  f7 TIME(3),
  f8 TIMESTAMP_LTZ(3),
  f9 TIMESTAMP(3),
  f10 FLOAT,
  f11 DOUBLE,
  f12 DECIMAL(10, 2),
  f13 ARRAY<FLOAT>,
  f14 ARRAY<DOUBLE>,
  f15 ARRAY<INTEGER>,
  f16 ARRAY<BIGINT>,
  PRIMARY KEY (id) NOT ENFORCED  -- Required. Milvus supports only BIGINT or STRING as the primary key.
) WITH (
  'connector'='milvus',
  'endpoint'='<yourEndpoint>',
  'port'='<yourPort>',
  'userName'='<yourUserName>',
  'password'='<yourPassword>',
  'databaseName'='<yourDatabaseName>',
  'collectionName'='<yourCollectionName>'
);

Bağlayıcı seçenekleri

Genel

Seçenek

Açıklama

Veri türü

Gerekli

Varsayılan değer

Notlar

connector

Bağlayıcının adı.

String

Evet

Değeri milvus olarak ayarlayın.

endpoint

Milvus veritabanının uç noktası (IP adresi veya alan adı).

String

Evet

Bkz. Ağ erişimi ve güvenlik ayarları.

port

Milvus veritabanının bağlantı noktası numarası.

INTEGER

Hayır

19530

username

Milvus veritabanı için kullanıcı adı.

STRING

Evet

Yok.

password

Milvus veritabanı için parola.

STRING

Evet

databaseName

Milvus veritabanının adı.

STRING

Evet

collectionName

Milvus koleksiyonunun adı.

STRING

Evet

partitionName

Veri yazılacak bölümün adı.

STRING

Hayır

_default

partitionKey.enabled

Koleksiyonun bir skaler alanı bölüm anahtarı olarak kullanıp kullanmadığını belirtir.

BOOLEAN

Hayır

false

maxRetries

Başarısız işlemler için yeniden deneme sayısı.

INTEGER

Hayır

3

Yok.

Sink'e özel

Seçenek

Açıklama

Veri türü

Gerekli

Varsayılan değer

Notlar

sink.parallelism

Sink operatörü için paralellik değeri.

INTEGER

Hayır

Ayarlanmazsa paralellik üst akış operatöründen devralınır.

sink.maxRetries

Başarısız bir yazma işleminde yapılacak maksimum yeniden deneme sayısı.

INTEGER

Hayır

3

VVR 11.3 ve sonraki sürümlerde bu seçenek kullanımdan kaldırılmıştır. Bunun yerine maxRetries seçeneğini kullanın.

sink.buffer-flush.max-rows

Tamponlanacak maksimum kayıt sayısı (eklemeler, upsert işlemleri ve silmeler dahil). Bu sayıya ulaşıldığında flush işlemi tetiklenir.

INTEGER

Hayır

10000

Bu tetikleyiciyi devre dışı bırakmak için değeri 0 olarak ayarlayın.

sink.buffer-flush.interval

Tamponlanan kayıtları flush etmek için milisaniye (ms) cinsinden zaman aralığı. Bu aralık aşıldığında flush işlemi tetiklenir.

INTEGER

Hayır

1000

Zaman tabanlı flush işlemini devre dışı bırakmak için değeri 0 olarak ayarlayın.

sink.ignoreDelete

Silme işlemlerinin yoksayılıp yoksayılmayacağını belirtir.

BOOLEAN

Hayır

false

Geçerli değerler:

  • true: Silme işlemlerini yoksayar.

  • false: Silme işlemlerini işler.

Vektör tablosuna özel

Parametre

Açıklama

Veri türü

Gerekli

Varsayılan değer

Notlar

search.metric

Vektör benzerliğini ölçmek için kullanılan metrik.

String

Hayır

L2

Desteklenen benzerlik metrikleri hakkında bilgi için Milvus belgelerine bakın. Milvus v2.4 şu anda aşağıdaki metrikleri destekler:

  • L2: Öklid mesafesi

  • IP: İç çarpım

  • COSINE: Kosinüs benzerliği

Tür eşleme

Flink SQL türü

Milvus türü

STRING

VarChar(n)

BOOLEAN

Bool

TINYINT

Int8

SMALLINT

Int16

INTEGER

Int32

BIGINT

Int64

DATE

VarChar(n)

TIME(3)

VarChar(n)

TIMESTAMP_LTZ(3)

Int64

Not

Milisaniye cinsinden epoch zamanı olarak depolanır.

TIMESTAMP(3)

VarChar(n)

FLOAT

Float

DOUBLE

Double

DECIMAL(10, 2)

VarChar(n)

ARRAY<FLOAT>

FloatVector

Not

Bir Milvus koleksiyonu oluşturduktan sonra vektör alanı için bir dizin oluşturun.

ARRAY<DOUBLE>

Array<Double>[m]

ARRAY<INTEGER>

Array<Int32>[m]

ARRAY<BIGINT>

Array<Int64>[m]

Örnekler

  • Akış verilerini Milvus'a yazma

-- Create a mock data source that generates 100 rows per second. simulated streaming data.
CREATE TEMPORARY TABLE mock_source (
    id STRING,
    vector ARRAY<FLOAT>,       -- Vector passed as a FLOAT array.
    event_time AS PROCTIME() -- Processing time attribute.
) WITH (
    'connector' = 'datagen',
    'rows-per-second' = '100',  -- Generates 100 rows per second.
    'fields.id.kind' = 'sequence',
    'fields.id.start' = '1',
    'fields.id.end' = '1000'
);

CREATE TEMPORARY TABLE milvus_sink (
  id STRING,               -- Unique identifier, such as a device ID.
  vector ARRAY<FLOAT>,     -- Vector data. The array length must be consistent with the source.
  timestamp BIGINT         -- Timestamp for stream processing.
  PRIMARY KEY (id) NOT ENFORCED  -- Required. Milvus supports only BIGINT or STRING as the primary key.
) WITH (
  'connector'='milvus',
  'endpoint'='xxx',
  'port'='19530',
  'userName'='xxx',
  'password'='xxx',
  'databaseName'='xxxx',
  'collectionName'='xxxx'
);

-- Transform data and write to Milvus.
INSERT INTO milvus_sink
SELECT 
    id,
    vector,
    UNIX_TIMESTAMP() * 1000 AS timestamp  -- Current timestamp in milliseconds.
FROM mock_source;
  • Vektör araması gerçekleştirme

CREATE TEMPORARY TABLE milvus_table (
  id STRING,               -- Unique identifier.
  vector ARRAY<FLOAT>,     -- Vector data. The array length must be consistent with the source.
  PRIMARY KEY (id) NOT ENFORCED  -- Required. Milvus only supports BIGINT or STRING as the primary key.
) WITH (
  'connector'='milvus',
  'endpoint'='xxx',
  'port'='19530',
  'userName'='xxx',
  'password'='xxx',
  'databaseName'='xxxx',
  'collectionName'='xxxx'
);
-- Find the top 2 most similar items for the vector [1.1, 2.2, 3.3].
SELECT * FROM 
LATERAL TABLE(
  VECTOR_SEARCH(
    TABLE milvus_table, 
    DESCRIPTOR(vector), 
    ARRAY[1.1, 2.2, 3.3], 
    2));

Not: Sorguyu çalıştırmadan önce Milvus koleksiyonunun belleğe yüklenmesi gerekir. Daha fazla bilgi için Milvus belgelerindeki Koleksiyon yükleme konusuna bakın.