🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Tingkatkan Throughput Pembacaan Basis Data Vektor Anda dengan Replika Dalam Memori

Tingkatkan Throughput Pembacaan Basis Data Vektor Anda dengan Replika Dalam Memori

  • Engineering
August 22, 2022
Congqi Xia

Cover_image Gambar sampul

Artikel ini ditulis bersama oleh Congqi Xia dan Angela Ni.

Dengan rilis resminya, Milvus 2.1 hadir dengan banyak fitur baru untuk memberikan kenyamanan dan pengalaman pengguna yang lebih baik. Meskipun konsep replika dalam memori bukanlah hal yang baru dalam dunia database terdistribusi, namun ini merupakan fitur penting yang dapat membantu Anda meningkatkan kinerja sistem dan meningkatkan ketersediaan sistem dengan cara yang mudah. Oleh karena itu, artikel ini akan menjelaskan apa itu replika in-memory dan mengapa hal ini penting, lalu memperkenalkan cara mengaktifkan fitur baru ini di Milvus, database vektor untuk AI.

Langsung ke:

Sebelum mengenal apa itu replika dalam memori dan mengapa hal ini penting, kita perlu terlebih dahulu memahami beberapa konsep yang relevan termasuk grup replika, replika pecahan, replika streaming, replika historis, dan pemimpin pecahan. Gambar di bawah ini adalah ilustrasi dari konsep-konsep ini.

Replica_concepts Konsep replika

Kelompok replika

Grup replika terdiri dari beberapa node kueri yang bertanggung jawab untuk menangani data historis dan replika.

Replika pecahan

Replika pecahan terdiri dari replika streaming dan replika historis, keduanya termasuk dalam pecahan yang sama (yaitu saluran DML). Beberapa replika pecahan membentuk sebuah grup replika. Dan jumlah replika pecahan yang tepat dalam grup replika ditentukan oleh jumlah pecahan dalam koleksi tertentu.

Replika streaming

Replika streaming berisi semua segmen yang berkembang dari saluran DML yang sama. Secara teknis, replika streaming harus dilayani oleh hanya satu simpul kueri dalam satu replika.

Replika historis

Replika historis berisi semua segmen tersegel dari saluran DML yang sama. Segmen tersegel dari satu replika historis dapat didistribusikan pada beberapa node kueri dalam grup replika yang sama.

Pemimpin pecahan

Shard leader adalah simpul kueri yang melayani replika streaming dalam replika pecahan.

Apa yang dimaksud dengan replika dalam memori?

Mengaktifkan replika dalam memori memungkinkan Anda memuat data dalam koleksi pada beberapa node kueri sehingga Anda dapat memanfaatkan sumber daya CPU dan memori ekstra. Fitur ini sangat berguna jika Anda memiliki kumpulan data yang relatif kecil tetapi ingin meningkatkan throughput pembacaan dan meningkatkan pemanfaatan sumber daya perangkat keras.

Basis data vektor Milvus menyimpan satu replika untuk setiap segmen dalam memori untuk saat ini. Namun, dengan replika dalam memori, Anda dapat memiliki beberapa replikasi segmen pada node kueri yang berbeda. Ini berarti jika satu node kueri sedang melakukan pencarian pada sebuah segmen, permintaan pencarian baru yang masuk dapat ditugaskan ke node kueri lain yang menganggur karena node kueri ini memiliki replikasi segmen yang sama persis.

Selain itu, jika kita memiliki beberapa replika dalam memori, kita dapat mengatasi situasi ketika sebuah simpul kueri mengalami kerusakan. Sebelumnya, kita harus menunggu segmen dimuat ulang untuk melanjutkan dan mencari di simpul kueri lain. Namun, dengan replikasi in-memory, permintaan pencarian dapat dikirim ulang ke simpul kueri yang baru dengan segera tanpa harus memuat ulang data lagi.

Replication Replikasi

Mengapa replikasi dalam memori penting?

Salah satu manfaat paling signifikan dari mengaktifkan replika dalam memori adalah peningkatan QPS (kueri per detik) dan throughput secara keseluruhan. Selain itu, replika beberapa segmen dapat dipertahankan dan sistem lebih tangguh dalam menghadapi kegagalan.

Mengaktifkan replika dalam memori dalam basis data vektor Milvus

Mengaktifkan fitur baru replika dalam memori sangat mudah di database vektor Milvus. Yang perlu Anda lakukan hanyalah menentukan jumlah replika yang Anda inginkan ketika memuat koleksi (misalnya, memanggil collection.load()).

Pada contoh tutorial berikut, kita anggap Anda telah membuat sebuah koleksi bernama "buku" dan memasukkan data ke dalamnya. Kemudian Anda dapat menjalankan perintah berikut untuk membuat dua replika saat memuat koleksi buku.

from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.load(replica_number=2) # load collection as 2 replicas

Anda dapat secara fleksibel memodifikasi jumlah replika pada contoh kode di atas agar sesuai dengan skenario aplikasi Anda. Kemudian Anda dapat langsung melakukan pencarian kesamaan vektor atau kueri pada beberapa replika tanpa menjalankan perintah tambahan apa pun. Namun, perlu dicatat bahwa jumlah maksimum replika yang diperbolehkan dibatasi oleh jumlah total memori yang dapat digunakan untuk menjalankan node kueri. Jika jumlah replika yang Anda tentukan melebihi batasan memori yang dapat digunakan, kesalahan akan dikembalikan selama pemuatan data.

Anda juga dapat memeriksa informasi replika dalam memori yang Anda buat dengan menjalankan collection.get_replicas(). Informasi grup replika dan node kueri serta pecahan yang sesuai akan dikembalikan. Berikut ini adalah contoh keluarannya.

Replica groups:
- Group: <group_id:435309823872729305>, <group_nodes:(21, 20)>, <shards:[Shard: <channel_name:milvus-zong-rootcoord-dml_27_435367661874184193v0>, <shard_leader:21>, <shard_nodes:[21]>, Shard: <channel_name:milvus-zong-rootcoord-dml_28_435367661874184193v1>, <shard_leader:20>, <shard_nodes:[20, 21]>]>
- Group: <group_id:435309823872729304>, <group_nodes:(25,)>, <shards:[Shard: <channel_name:milvus-zong-rootcoord-dml_28_435367661874184193v1>, <shard_leader:25>, <shard_nodes:[25]>, Shard: <channel_name:milvus-zong-rootcoord-dml_27_435367661874184193v0>, <shard_leader:25>, <shard_nodes:[25]>]>

Apa selanjutnya

Dengan rilis resmi Milvus 2.1, kami telah menyiapkan serangkaian blog yang memperkenalkan fitur-fitur baru. Baca lebih lanjut dalam seri blog ini:

Like the article? Spread the word

Terus Baca