Стратегии работы с несколькими арендаторами
Во многих случаях разработчики хотят запустить один кластер Milvus и обслуживать несколько арендаторов, например, несколько продуктовых команд или миллионы конечных пользователей. В этом руководстве описано несколько различных стратегий для достижения многопользовательского режима в Milvus.
Milvus разработан для поддержки многопользовательского доступа на уровне баз данных, коллекций или разделов. Цель многопользовательской аренды - отделить данные и ресурсы друг от друга. Реализация многопользовательского доступа на разных уровнях позволяет достичь различной степени изоляции, но также влечет за собой различные накладные расходы. Здесь мы расскажем о компромиссах между ними.
Мультитенантность, ориентированная на базу данных
Начиная с версии 2.2.9 Milvus, вы можете создавать несколько баз данных в одном кластере Milvus. Эта возможность позволяет добиться ориентированной на базы данных многопользовательской аренды, назначая базу данных для каждого арендатора, чтобы они могли создавать свои собственные коллекции. Такой подход обеспечивает наилучшую изоляцию данных и ресурсов для арендаторов, однако он ограничен максимум 64 базами данных в одном кластере.
Мультитенантность, ориентированная на коллекции
Существует два возможных пути достижения ориентированной на коллекции многопользовательской среды.
Одна коллекция для всех арендаторов
Использование одной коллекции для реализации многопользовательского доступа путем добавления поля tenant для различения арендаторов - простой вариант. При выполнении поиска ANN для конкретного арендатора добавьте выражение фильтра, чтобы отсеять все сущности, принадлежащие другим арендаторам. Это самый простой способ добиться многопользовательского доступа. Однако имейте в виду, что производительность фильтра может стать узким местом ANN-поиска. Чтобы повысить производительность поиска, можно оптимизировать многопользовательскую работу, ориентированную на разделы.
Одна коллекция для каждого арендатора
Другой подход заключается в создании коллекции для каждого арендатора для хранения его собственных данных, вместо того чтобы хранить данные всех арендаторов в одной коллекции. Это обеспечивает лучшую изоляцию данных и производительность запросов. Однако следует помнить, что такой подход требует больше ресурсов для планирования и ограничен максимум 10 000 коллекций в кластере.
Ориентированное на разделы многопользовательское использование
Существует два способа достижения ориентированной на разделы многопользовательской сети:
Один раздел на одного арендатора
Управлять одной коллекцией гораздо проще, чем несколькими. Вместо того чтобы создавать несколько коллекций, подумайте о назначении раздела для каждого арендатора, чтобы добиться гибкой изоляции данных и управления памятью. Производительность поиска при ориентированном на разделы многопользовательстве гораздо выше, чем при ориентированном на коллекции многопользовательстве. Однако следует учитывать, что количество арендаторов коллекции не должно превышать максимальное количество разделов, которые может содержать коллекция.
Мультиарендаторство на основе ключей разделов
В Milvus 2.2.9 появилась новая функция под названием "ключ раздела". При создании коллекции назначьте поле арендатора и сделайте его полем ключа раздела. Milvus будет хранить сущности в разделе в соответствии с хэш-значением поля ключа раздела. При выполнении поиска по ANN Milvus будет искать только в том разделе, который содержит ключ раздела. Это значительно сокращает объем поиска и обеспечивает более высокую производительность по сравнению с поиском без ключа раздела.