Tingkatkan Throughput Pembacaan Basis Data Vektor Anda dengan Replika Dalam Memori
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:
Konsep yang terkait dengan replika dalam memori
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.
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.
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:
- Cara Menggunakan Data String untuk Memberdayakan Aplikasi Pencarian Kemiripan Anda
- Menggunakan Milvus yang Disematkan untuk Menginstal dan Menjalankan Milvus secara Instan dengan Python
- Tingkatkan Throughput Pembacaan Basis Data Vektor Anda dengan Replika Dalam Memori
- Memahami Tingkat Konsistensi dalam Basis Data Vektor Milvus
- Memahami Tingkat Konsistensi dalam Basis Data Vektor Milvus (Bagian II)
- Bagaimana Basis Data Vektor Milvus Memastikan Keamanan Data?
- Konsep yang terkait dengan replika dalam memori
- Apa yang dimaksud dengan replika dalam memori?
- Mengapa replikasi dalam memori penting?
- Mengaktifkan replika dalam memori dalam basis data vektor Milvus
- Apa selanjutnya
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word