Estrategias multi-tenancy
A medida que ChatGPT gana popularidad, más desarrolladores crean sus propios servicios SaaS utilizando la pila CVP (ChatGPT, base de datos vectorial, Prompt). Esta guía explica cómo conseguir multitenencia en Milvus, una de las bases de datos vectoriales más utilizadas del mundo, para seguir esta tendencia.
El multiarrendamiento es una arquitectura en la que una única instancia de Milvus sirve a varios arrendatarios. La forma más sencilla de distinguir a los inquilinos es separar sus datos y recursos de los de los demás. Cada arrendatario tiene sus propios recursos dedicados o comparte recursos con otros para gestionar objetos Milvus como bases de datos, colecciones y particiones. En función de estos objetos, existen métodos correspondientes para conseguir la multitenencia de Milvus.
Arrendamiento múltiple orientado a bases de datos
Desde la versión 2.2.9 de Milvus, está disponible la base de datos de objetos. Puede crear múltiples bases de datos en un único clúster Milvus. Esta nueva característica permite conseguir multitenencia orientada a bases de datos asignando una base de datos a cada inquilino, de forma que puedan crear sus propias colecciones y particiones para sacar el máximo partido a sus datos. Sin embargo, esta estrategia garantiza el aislamiento de los datos y el rendimiento de las búsquedas para los inquilinos, pero pueden desperdiciarse recursos en inquilinos ociosos.
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.
Una colección por inquilino
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, tenga en cuenta que este enfoque requiere una mayor inversión en programación de recursos, capacidad operativa y costes, y puede no ser aplicable si el número de arrendatarios supera el número máximo de colecciones que admite un único clúster Milvus.
Arrendamiento múltiple orientado a particiones
También hay dos formas posibles de lograr 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á las entidades en una partición según los valores del campo de clave de partición. Al realizar búsquedas RNA, Milvus cambia a una partición basada en la clave de partición especificada, filtra las entidades según la clave de partición y busca entre las entidades filtradas.