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

milvus-logo
LFAI
Beranda
  • Konsep

Cap waktu

Topik ini menjelaskan konsep cap waktu dan memperkenalkan empat parameter utama terkait cap waktu dalam basis data vektor Milvus.

Ikhtisar

Milvus adalah basis data vektor yang dapat mencari dan menanyakan vektor yang dikonversi dari data yang tidak terstruktur. Ketika melakukan operasi bahasa manipulasi data (DML), termasuk penyisipan dan penghapusan data, Milvus memberikan stempel waktu ke entitas yang terlibat dalam operasi. Oleh karena itu, semua entitas di Milvus memiliki atribut stempel waktu. Dan kumpulan entitas dalam operasi DML yang sama memiliki nilai stempel waktu yang sama.

Parameter stempel waktu

Beberapa parameter terkait cap waktu dilibatkan ketika Anda melakukan pencarian atau kueri kemiripan vektor di Milvus.

  • Guarantee_timestamp

  • Service_timestamp

  • Graceful_time

  • Travel_timestamp

Guarantee_timestamp

Guarantee_timestamp adalah jenis cap waktu yang digunakan untuk memastikan bahwa semua pembaruan data oleh operasi DML sebelum Guarantee_timestamp terlihat ketika pencarian atau kueri kemiripan vektor dilakukan. Sebagai contoh, jika Anda memasukkan satu kumpulan data pada pukul 3 sore, kumpulan data lainnya pada pukul 5 sore, dan nilai Guarantee_timestamp ditetapkan sebagai pukul 6 sore saat pencarian kemiripan vektor. Ini berarti bahwa dua kumpulan data yang dimasukkan pada pukul 3 sore dan 5 sore harus dilibatkan dalam pencarian.

Jika Guarantee_timestamp tidak dikonfigurasi, Milvus secara otomatis mengambil titik waktu ketika permintaan pencarian dibuat. Oleh karena itu, pencarian dilakukan pada tampilan data dengan semua pembaruan data oleh operasi DML sebelum pencarian.

Untuk menghemat waktu Anda dalam memahami TSO di dalam Milvus, sebagai pengguna, Anda tidak perlu mengkonfigurasi secara langsung parameter Guarantee_timestamp. Anda hanya perlu memilih tingkat konsistensi, dan Milvus secara otomatis menangani parameter Guarantee_timestamp untuk Anda. Setiap tingkat konsistensi sesuai dengan nilai Guarantee_timestamp tertentu.

Guarantee_Timestamp Guarantee_Timestamp.

Contoh

Seperti yang ditunjukkan pada ilustrasi di atas, nilai Guarantee_timestamp ditetapkan sebagai 2021-08-26T18:15:00 (untuk mempermudah, stempel waktu pada contoh ini diwakili oleh waktu fisik). Saat Anda melakukan pencarian atau kueri, semua data sebelum 2021-08-26T18:15:00 akan dicari atau ditanyakan.

Service_timestamp

Service_timestamp adalah jenis stempel waktu yang secara otomatis dibuat dan dikelola oleh node kueri di Milvus. Ini digunakan untuk menunjukkan operasi DML mana yang dijalankan oleh node kueri.

Data yang dikelola oleh node kueri dapat dikategorikan ke dalam dua jenis:

  • Data historis (atau juga disebut data batch)

  • Data tambahan (atau disebut juga data streaming).

Di Milvus, Anda perlu memuat data sebelum melakukan pencarian atau kueri. Oleh karena itu, data batch dalam koleksi dimuat oleh simpul kueri sebelum permintaan pencarian atau kueri dibuat. Namun, data streaming dimasukkan ke dalam atau dihapus dari Milvus dengan cepat, yang mengharuskan simpul kueri untuk menyimpan garis waktu operasi DML dan permintaan pencarian atau kueri. Akibatnya, node kueri menggunakan Service_timestamp untuk menyimpan garis waktu tersebut. Service_timestamp dapat dilihat sebagai titik waktu ketika data tertentu terlihat karena node kueri dapat memastikan bahwa semua operasi DML sebelum Service_timestamp telah selesai.

Ketika ada permintaan pencarian atau kueri yang masuk, node kueri membandingkan nilai Service_timestamp dan Guarantee_timestamp. Terutama ada dua skenario.

Service_Timestamp Stempel Waktu Layanan.

Skenario 1: Service_timestamp >= Guarantee_timestamp

Seperti yang ditunjukkan pada gambar 1, nilai Guarantee_timestamp ditetapkan sebagai 2021-08-26T18:15:00. Ketika nilai Service_timestamp bertambah menjadi 2021-08-26T18:15:01, ini berarti bahwa semua operasi DML sebelum titik waktu ini dieksekusi dan diselesaikan oleh node kueri, termasuk operasi DML sebelum waktu yang ditunjukkan oleh Guarantee_timestamp. Hasilnya, permintaan pencarian atau permintaan kueri dapat dieksekusi dengan segera.

Skenario 2: Service_timestamp < Guarantee_timestamp

Seperti yang ditunjukkan pada gambar 2, nilai Guarantee_timestamp ditetapkan sebagai 2021-08-26T18:15:00, dan nilai Service_timestamp saat ini hanya 2021-08-26T18:14:55. Ini berarti bahwa hanya operasi DML sebelum 2021-08-26T18:14:55 yang dieksekusi dan diselesaikan, meninggalkan bagian dari operasi DML setelah titik waktu ini tetapi sebelum Guarantee_timestamp yang belum selesai. Jika pencarian atau kueri dieksekusi pada titik ini, beberapa data yang diperlukan tidak terlihat dan belum tersedia, yang secara serius memengaruhi keakuratan hasil pencarian atau kueri. Oleh karena itu, simpul kueri perlu menunda permintaan pencarian atau kueri hingga operasi DML sebelum guarantee_timestamp selesai (yaitu ketika Service_timestamp >= Guarantee_timestamp).

Graceful_time

Secara teknis, Graceful_time bukanlah cap waktu, melainkan periode waktu (misalnya 100ms). Namun, Graceful_time layak disebut karena sangat terkait dengan Guarantee_timestamp dan Service_timestamp. Graceful_time adalah parameter yang dapat dikonfigurasi dalam file konfigurasi Milvus. Parameter ini digunakan untuk menunjukkan periode waktu yang dapat ditoleransi sebelum data tertentu terlihat. Singkatnya, operasi DML yang belum selesai selama Graceful_time dapat ditoleransi.

Ketika ada permintaan pencarian atau permintaan kueri yang masuk, ada dua skenario.

Graceful_Time Graceful_Time.

Skenario 1: Service_timestamp + Graceful_time >= Guarantee_timestamp

Seperti yang ditunjukkan pada gambar 1, nilai Guarantee_timestamp ditetapkan sebagai 2021-08-26T18:15:01, dan Graceful_time sebagai 2s. Nilai Service_timestamp bertambah menjadi 2021-08-26T18:15:00. Meskipun nilai Service_timestamp masih lebih kecil daripada Guarantee_timestamp dan tidak semua operasi DML sebelum 2021-08-26T18:15:01 selesai, periode ketidaktampakan data selama 2 detik masih dapat ditoleransi seperti yang ditunjukkan oleh nilai Graceful_time. Oleh karena itu, permintaan pencarian atau permintaan kueri yang masuk dapat segera dieksekusi.

Skenario 2: Service_timestamp + Graceful_time < Guarantee_timestamp

Seperti yang ditunjukkan pada gambar 2, nilai Guarantee_timestamp ditetapkan sebagai 2021-08-26T18:15:01, dan Graceful_time sebagai 2s. Nilai saat ini dari Service_timestamp hanya 2021-08-26T18:14:54. Ini berarti bahwa operasi DML yang diharapkan belum selesai dan bahkan dengan adanya waktu tenggang 2 detik, ketidaktampakan data masih tidak dapat ditoleransi. Oleh karena itu, simpul kueri perlu menunda pencarian atau permintaan kueri hingga permintaan DML tertentu selesai (yaitu ketika Service_timestamp + Graceful_time >= Guarantee_timestamp).

Apa selanjutnya

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?