Estrategias multiarrendamiento
En muchos casos de uso, los desarrolladores quieren ejecutar un clúster Milvus y servir a múltiples inquilinos, como un par de equipos de producto, o millones de usuarios finales. Esta guía explica algunas estrategias diferentes para conseguir multiarrendamiento en Milvus.
Milvus está diseñado para soportar multi-tenancy a nivel de base de datos, colección o partición. El objetivo de la multitenencia es separar los datos y los recursos entre sí. La implementación de la multi-tenencia a diferentes niveles puede lograr diferentes grados de aislamiento, pero también implica diferentes gastos generales. A continuación explicamos sus ventajas y desventajas.
Arrendamiento múltiple orientado a la base de datos
Desde la versión 2.2.9 de Milvus, puede crear múltiples bases de datos en un único cluster Milvus. Esta característica hace posible lograr la multi-tenencia orientada a la base de datos asignando una base de datos para cada inquilino, de modo que puedan crear sus propias colecciones. Este enfoque proporciona el mejor aislamiento de datos y recursos para los inquilinos, pero está limitado a 64 bases de datos en un clúster como máximo.
Arrendamiento múltiple orientado a colecciones
Hay dos formas posibles de conseguir la multitenencia orientada a colecciones.
Una colección para todos los inquilinos
Utilizar una única colección para implementar la multitenencia añadiendo un campo de inquilino para distinguir entre inquilinos es una opción sencilla. Al realizar búsquedas de RNA para un inquilino específico, añada una expresión de filtro para filtrar todas las entidades que pertenezcan a otros inquilinos. Esta es la forma más sencilla de conseguir la multitenencia. Sin embargo, tenga en cuenta que el rendimiento del filtro puede convertirse en el cuello de botella de las búsquedas RNA. Para mejorar el rendimiento de la búsqueda, puede optimizar con la multitenencia orientada a particiones que se indica a continuación.
Una colección por tenant
Otro enfoque consiste en crear una colección para que cada inquilino almacene sus propios datos, en lugar de almacenar los datos de todos los inquilinos en una única colección. Esto proporciona un mejor aislamiento de los datos y un mejor rendimiento de las consultas. Sin embargo, hay que tener en cuenta que este enfoque requiere más recursos en la programación y está limitado a 10.000 colecciones en un clúster como máximo.
Arrendamiento múltiple orientado a particiones
Hay dos formas de conseguir la multitenencia orientada a particiones:
Una partición por inquilino
Gestionar una única colección es mucho más fácil que gestionar varias. En lugar de crear varias colecciones, considere la posibilidad de asignar una partición a cada inquilino para lograr un aislamiento de datos y una gestión de memoria flexibles. El rendimiento de búsqueda de la multi-tenencia orientada a particiones es mucho mejor que la multi-tenencia orientada a colecciones. Sin embargo, hay que tener en cuenta que el número de inquilinos de la colección no debe superar el número máximo de particiones que puede contener una colección.
Multiarrendamiento basado en claves de partición
Milvus 2.2.9 introduce una nueva característica llamada clave de partición. Al crear una colección, nombre un campo de inquilino y conviértalo en el campo de clave de partición. Milvus almacenará entidades en una partición según el valor hash del campo de clave de partición. Al realizar búsquedas RNA, Milvus sólo buscará en la partición que contenga la clave de partición. Esto reducirá en gran medida el alcance de la búsqueda, logrando así un mejor rendimiento que sin clave de partición.