Strategi multi-penyewaan
Dalam banyak kasus penggunaan, pengembang ingin menjalankan satu cluster Milvus dan melayani beberapa penyewa, seperti beberapa tim produk, atau jutaan pengguna akhir. Panduan ini menjelaskan beberapa strategi berbeda untuk mencapai multi-tenancy di Milvus.
Milvus dirancang untuk mendukung multi-tenancy di tingkat database, koleksi, atau partisi. Tujuan dari multi-tenancy adalah untuk memisahkan data dan sumber daya satu sama lain. Menerapkan multi-tenancy pada tingkat yang berbeda dapat mencapai tingkat isolasi yang berbeda tetapi juga melibatkan biaya yang berbeda. Di sini kami menjelaskan trade-off dari keduanya.
Multi-tenancy yang berorientasi pada basis data
Sejak Milvus versi 2.2.9, Anda dapat membuat beberapa database dalam satu cluster Milvus. Fitur ini memungkinkan untuk mencapai multi-tenancy berorientasi database dengan memberikan database untuk setiap penyewa, sehingga mereka dapat membuat koleksi mereka sendiri. Pendekatan ini memberikan isolasi data dan sumber daya terbaik untuk penyewa, tetapi terbatas pada 64 database dalam satu cluster.
Penyewaan multi-penyewa yang berorientasi pada koleksi
Ada dua cara yang memungkinkan untuk mencapai multi-penyewaan berorientasi koleksi.
Satu koleksi untuk semua penyewa
Menggunakan satu koleksi untuk mengimplementasikan multi-penyewaan dengan menambahkan bidang penyewa untuk membedakan antara penyewa adalah pilihan yang sederhana. Saat melakukan pencarian ANN untuk penyewa tertentu, tambahkan ekspresi filter untuk menyaring semua entitas yang dimiliki oleh penyewa lain. Ini adalah cara paling sederhana untuk mencapai multi-tenancy. Namun, perlu diketahui bahwa kinerja filter dapat menjadi penghambat pencarian ANN. Untuk meningkatkan kinerja pencarian, Anda dapat mengoptimalkan dengan multi-tenancy berorientasi partisi di bawah ini.
Satu koleksi per penyewa
Pendekatan lain adalah membuat koleksi untuk setiap penyewa untuk menyimpan datanya sendiri, alih-alih menyimpan data semua penyewa dalam satu koleksi. Hal ini memberikan isolasi data dan kinerja kueri yang lebih baik. Namun, perlu diingat bahwa pendekatan ini membutuhkan lebih banyak sumber daya dalam penjadwalan dan terbatas pada 10.000 koleksi dalam satu klaster.
Multi-penyewaan berorientasi partisi
Ada dua cara untuk mencapai multi-penyewaan berorientasi partisi:
Satu partisi per penyewa
Mengelola satu koleksi jauh lebih mudah daripada mengelola banyak koleksi. Daripada membuat banyak koleksi, pertimbangkan untuk menetapkan satu partisi untuk setiap penyewa untuk mencapai isolasi data yang fleksibel dan manajemen memori. Performa pencarian multi-penyewaan berorientasi partisi jauh lebih baik daripada multi-penyewaan berorientasi koleksi. Namun, perlu diperhatikan bahwa jumlah penyewa koleksi tidak boleh melebihi jumlah maksimum partisi yang dapat ditampung oleh sebuah koleksi.
Penyewaan multi-penyewa berbasis kunci partisi
Milvus 2.2.9 memperkenalkan fitur baru bernama kunci partisi. Pada saat pembuatan koleksi, tentukan bidang penyewa dan jadikan bidang tersebut sebagai kunci partisi. Milvus akan menyimpan entitas dalam sebuah partisi sesuai dengan nilai hash dari field kunci partisi. Ketika melakukan pencarian ANN, Milvus hanya mencari partisi yang berisi kunci partisi. Hal ini akan mengurangi cakupan pencarian sehingga mencapai kinerja yang lebih baik daripada tanpa kunci partisi.