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

milvus-logo
LFAI
  • Home
  • Blog
  • Memahami Tingkat Konsistensi dalam Basis Data Vektor Milvus

Memahami Tingkat Konsistensi dalam Basis Data Vektor Milvus

  • Engineering
August 29, 2022
Chenglong Li

Cover_image Gambar sampul

Artikel ini ditulis oleh Chenglong Li dan diterjemahkan oleh Angela Ni.

Pernahkah Anda bertanya-tanya mengapa terkadang data yang telah Anda hapus dari database vektor Mlivus masih muncul di hasil pencarian?

Alasan yang sangat mungkin adalah bahwa Anda belum mengatur tingkat konsistensi yang sesuai untuk aplikasi Anda. Tingkat konsistensi dalam database vektor terdistribusi sangat penting karena menentukan pada titik mana penulisan data tertentu dapat dibaca oleh sistem.

Oleh karena itu, artikel ini bertujuan untuk mengungkap konsep konsistensi dan mempelajari tingkat konsistensi yang didukung oleh basis data vektor Milvus.

Langsung ke:

Apa itu konsistensi

Sebelum memulai, kita perlu mengklarifikasi konotasi konsistensi dalam artikel ini karena kata "konsistensi" adalah istilah yang berlebihan dalam industri komputasi. Konsistensi dalam database terdistribusi secara khusus mengacu pada properti yang memastikan setiap node atau replika memiliki tampilan data yang sama ketika menulis atau membaca data pada waktu tertentu. Oleh karena itu, di sini kita berbicara tentang konsistensi seperti dalam teorema CAP.

Untuk melayani bisnis online yang sangat besar di dunia modern, beberapa replika biasanya diadopsi. Sebagai contoh, raksasa e-commerce online Amazon mereplikasi pesanan atau data SKU-nya di beberapa pusat data, zona, atau bahkan negara untuk memastikan ketersediaan sistem yang tinggi jika terjadi kerusakan atau kegagalan sistem. Hal ini menjadi tantangan bagi sistem - konsistensi data di beberapa replika. Tanpa konsistensi, sangat mungkin item yang dihapus di keranjang Amazon Anda muncul kembali, menyebabkan pengalaman pengguna yang sangat buruk.

Oleh karena itu, kita membutuhkan tingkat konsistensi data yang berbeda untuk aplikasi yang berbeda. Dan untungnya, Milvus, database untuk AI, menawarkan fleksibilitas dalam tingkat konsistensi dan Anda dapat mengatur tingkat konsistensi yang paling sesuai dengan aplikasi Anda.

Konsistensi dalam basis data vektor Milvus

Konsep tingkat konsistensi pertama kali diperkenalkan dengan dirilisnya Milvus 2.0. Versi 1.0 dari Milvus bukanlah basis data vektor terdistribusi sehingga kami tidak melibatkan tingkat konsistensi yang dapat disetel. Milvus 1.0 melakukan flush data setiap detik, yang berarti bahwa data baru akan segera terlihat setelah dimasukkan dan Milvus membaca tampilan data yang paling baru pada titik waktu yang tepat ketika pencarian kesamaan vektor atau permintaan kueri datang.

Namun, Milvus telah direfaktor dalam versi 2.0 dan Milvus 2.0 merupakan database vektor terdistribusi berdasarkan mekanisme pub-sub. Teorema PACELC menunjukkan bahwa sistem terdistribusi harus mengorbankan konsistensi, ketersediaan, dan latensi. Selain itu, tingkat konsistensi yang berbeda berfungsi untuk skenario yang berbeda. Oleh karena itu, konsep konsistensi diperkenalkan di Milvus 2.0 dan mendukung penyetelan tingkat konsistensi.

Empat tingkat konsistensi dalam basis data vektor Milvus

Milvus mendukung empat tingkat konsistensi: kuat, keusangan terbatas, sesi, dan akhirnya. Dan pengguna Milvus dapat menentukan tingkat konsistensi ketika membuat koleksi atau melakukan pencarian atau kueri kemiripan vektor. Bagian ini akan terus menjelaskan bagaimana keempat tingkat konsistensi ini berbeda dan skenario mana yang paling cocok untuk mereka.

Kuat

Strong adalah tingkat konsistensi tertinggi dan paling ketat. Ini memastikan bahwa pengguna dapat membaca data versi terbaru.

Strong Kuat

Menurut teorema PACELC, jika tingkat konsistensi diatur ke kuat, latensi akan meningkat. Oleh karena itu, kami merekomendasikan untuk memilih konsistensi yang kuat selama pengujian fungsional untuk memastikan keakuratan hasil pengujian. Dan konsistensi yang kuat juga paling cocok untuk aplikasi yang memiliki permintaan ketat untuk konsistensi data dengan mengorbankan kecepatan pencarian. Contohnya adalah sistem keuangan online yang berurusan dengan pembayaran pesanan dan penagihan.

Keusangan yang terbatas

Bounded staleness, seperti namanya, memungkinkan ketidakkonsistenan data selama periode waktu tertentu. Namun, secara umum, data selalu konsisten secara global di luar periode waktu tersebut.

Bounded_staleness Bounded_staleness

Bounded staleness cocok untuk skenario yang perlu mengontrol latensi pencarian dan dapat menerima ketidaktampakan data secara sporadis. Misalnya, dalam sistem pemberi rekomendasi seperti mesin rekomendasi video, ketidaktampakan data sesekali memiliki dampak yang sangat kecil pada tingkat penarikan keseluruhan, tetapi dapat secara signifikan meningkatkan kinerja sistem pemberi rekomendasi. Contohnya adalah aplikasi untuk melacak status pesanan online Anda.

Sesi

Session memastikan bahwa semua data yang ditulis dapat langsung dirasakan saat dibaca selama sesi yang sama. Dengan kata lain, ketika Anda menulis data melalui satu klien, data yang baru dimasukkan langsung dapat dicari.

Session Sesi

Kami merekomendasikan untuk memilih session sebagai tingkat konsistensi untuk skenario-skenario di mana permintaan konsistensi data dalam sesi yang sama sangat tinggi. Contohnya adalah menghapus data entri buku dari sistem perpustakaan, dan setelah konfirmasi penghapusan dan me-refresh halaman (sesi yang berbeda), buku tersebut seharusnya tidak lagi terlihat dalam hasil pencarian.

Akhirnya

Tidak ada jaminan urutan pembacaan dan penulisan, dan replika pada akhirnya akan menyatu pada kondisi yang sama karena tidak ada operasi penulisan lebih lanjut yang dilakukan. Di bawah konsistensi akhirnya, replika mulai bekerja pada permintaan baca dengan nilai terbaru yang diperbarui. Konsistensi akhirnya adalah level terlemah di antara keempat level tersebut.

Eventual Akhirnya

Namun, menurut teorema PACELC, latensi pencarian dapat sangat dipersingkat dengan mengorbankan konsistensi. Oleh karena itu, konsistensi akhirnya paling cocok untuk skenario yang tidak memiliki permintaan tinggi untuk konsistensi data tetapi membutuhkan kinerja pencarian yang sangat cepat. Contohnya adalah mengambil ulasan dan peringkat produk Amazon dengan konsistensi akhir.

Catatan akhir

Jadi, kembali ke pertanyaan yang diajukan di awal artikel ini, data yang dihapus masih dikembalikan sebagai hasil pencarian karena pengguna belum memilih tingkat konsistensi yang tepat. Nilai default untuk tingkat konsistensi adalah bounded staleness (Bounded) dalam database vektor Milvus. Oleh karena itu, data yang dibaca mungkin tertinggal dan Milvus mungkin membaca tampilan data sebelum Anda melakukan operasi hapus selama pencarian atau kueri kemiripan. Namun, masalah ini mudah diatasi. Yang perlu Anda lakukan adalah menyetel tingkat konsistensi ketika membuat koleksi atau melakukan pencarian atau kueri kemiripan vektor. Sederhana!

Dalam posting berikutnya, kami akan mengungkap mekanisme di balik dan menjelaskan bagaimana database vektor Milvus mencapai tingkat konsistensi yang berbeda. Tetap disini!

Apa yang selanjutnya

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

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca