Многотенантность для поиска векторов в Azure Cosmos DB
"OpenAI использует Cosmos DB для динамического масштабирования своей службы ChatGPT - одного из самых быстрорастущих потребительских приложений когда-либо - обеспечения высокой надежности и низкого обслуживания" — Сатья Наделла.
Azure Cosmos DB выделяется как первая в мире полнофункциональный бессерверная операционная база данных с векторным поиском, предлагающая непарабельную масштабируемость и производительность. С помощью Azure Cosmos DB пользователи могут улучшить возможности поиска векторов, обеспечивая высокую надежность и низкое обслуживание мультитенантных приложений.
Мультитенантность позволяет одному экземпляру базы данных одновременно обслуживать несколько клиентов или клиентов. Этот подход эффективно разделяет инфраструктуру и операционные издержки, что приводит к экономии затрат и упрощенному управлению. Это важное проектирование приложений SaaS и некоторых внутренних корпоративных решений.
Мультитенантность представляет сложность. Система должна эффективно масштабироваться, чтобы обеспечить высокую производительность для всех клиентов, которые могут иметь уникальные рабочие нагрузки, требования и соглашения об уровне обслуживания (соглашения об уровне обслуживания).
Представьте себе вымышленную платформу исследований с поддержкой ИИ под названием ResearchHub. Обслуживание тысяч компаний и отдельных исследователей, ResearchHub управляет различными пользовательскими базами, масштабами данных и соглашениями об уровне обслуживания. Обеспечение низкой задержки запросов и высокой производительности крайне важно для обеспечения отличного взаимодействия с пользователем.
Azure Cosmos DB с возможностью векторного индекса DiskANN упрощает мультитенантную структуру, обеспечивая эффективное хранилище данных и механизмы доступа для высокопроизводительных приложений.
Модели многотенантности в Azure Cosmos DB
В Azure Cosmos DB рекомендуется использовать два основных подхода к управлению несколькими клиентами: секционирование ключа на клиент или учетную запись на клиент с собственным набором преимуществ и компромиссов.
1. Секционирование ключа на клиент
Для более высокой плотности клиентов и более низкой изоляции модель секции для каждого клиента эффективна. Каждому клиенту назначается уникальный ключ секции в определенном контейнере, что позволяет логическое разделение данных. Эта стратегия лучше всего работает, если каждый клиент имеет примерно один и тот же объем рабочей нагрузки. Если существует значительное отклонение, клиенты должны рассмотреть возможность изоляции этих клиентов в собственной учетной записи. Кроме того, если один клиент имеет более 20 ГБ данных, следует использовать иерархические ключи секций (HPK ). В частности, для векторного поиска индекс quantizedFlat может выполняться очень хорошо, если запросы векторного поиска могут быть сосредоточены на определенной секции или наборах секций.
Преимущества:
- Экономичность. Совместное использование одной учетной записи Cosmos DB между несколькими клиентами снижает затраты.
- Масштабируемость. Может управлять большим количеством клиентов, каждый из которых изолирован в ключе секции.
- Упрощенное управление: меньше учетных записей Cosmos DB для управления.
- Иерархические ключи секций (HPK): оптимизирует организацию данных и производительность запросов в мультитенантных приложениях с большим количеством клиентов.
Недостатки:
- Состязание ресурсов: общие ресурсы могут привести к возникновению спорных вопросов во время пикового использования.
- Ограниченная изоляция: логическая, но не физическая изоляция, которая может не соответствовать строгим требованиям к изоляции.
- Меньше гибкости: снижение гибкости для каждого клиента для включения функций на уровне учетной записи, таких как георепликация, восстановление на определенный момент времени (PITR) и управляемые клиентом ключи (CMK).
Иерархическая секционирование: расширенная организация данных
Иерархическое секционирование основывается на модели секционирования на клиент, добавляя более глубокие уровни организации данных. Этот метод включает создание нескольких уровней ключей секций для более детального управления данными. Самый низкий уровень иерархической секционирования должен иметь высокий кратность. Как правило, рекомендуется использовать идентификатор и guid для этого уровня, чтобы обеспечить непрерывную масштабируемость за пределами 20 ГБ на клиент.
Преимущества.
- Оптимизированные запросы: более точное назначение подпартий на родительском уровне секций снижает задержку запросов.
- Улучшенная масштабируемость: упрощает более глубокую сегментацию данных для упрощения масштабирования.
- Лучшее распределение ресурсов: равномерно распределяет рабочие нагрузки, минимизируя узкие места для высокого количества клиентов.
Соображения.
- Если приложения имеют очень мало клиентов и используют иерархическую секционирование, это может привести к узким местам, так как все документы с одним ключом первого уровня будут записываться в одни и те же физические секции.
Пример. ResearchHub может стратифицировать данные в разделе каждого клиента, упорядочив его на различных уровнях, таких как DepartmentId и ResearchId, что упрощает эффективное управление и запросы.
2. Учетная запись на клиент
Для максимальной изоляции модель учетной записи на клиент предпочтительнее. Каждый клиент получает выделенную учетную запись Cosmos DB, обеспечивая полное разделение ресурсов.
Преимущества:
- Высокая изоляция: из-за выделенных ресурсов не возникает никаких сомнений или помех.
- Пользовательские соглашения об уровне обслуживания: ресурсы и соглашения об уровне обслуживания можно адаптировать для отдельных клиентов.
- Расширенная безопасность: изоляция физических данных обеспечивает надежную безопасность.
- Гибкость. Клиенты могут включать функции уровня учетной записи, такие как георепликация, восстановление на определенный момент времени (PITR) и ключи, управляемые клиентом (CMK), по мере необходимости.
Недостатки:
- Повышение уровня управления: более сложная работа с несколькими учетными записями Cosmos DB.
- Более высокие затраты: больше учетных записей означает более высокие затраты на инфраструктуру.
Изоляция безопасности с помощью ключей, управляемых клиентом
Azure Cosmos DB включает управляемые клиентом ключи для шифрования данных, добавляя дополнительный уровень безопасности для мультитенантных сред.
Действия по реализации:
- Настройте Azure Key Vault: безопасно храните ключи шифрования.
- Ссылка на Cosmos DB: свяжите хранилище ключей с учетной записью Cosmos DB.
- Регулярно поворачивайте ключи: повышайте безопасность, регулярно обновляя ключи.
Использование ключей, управляемых клиентом, гарантирует, что данные каждого клиента шифруются уникально, обеспечивая надежную безопасность и соответствие требованиям.
Другие модели изоляции
Изоляция контейнеров и баз данных
Помимо моделей секционирования для каждого клиента и учетной записи, Azure Cosmos DB предоставляет другие методы изоляции, такие как изоляция контейнеров и изоляция базы данных. Эти подходы обеспечивают различные степени изоляции производительности, хотя они не обеспечивают тот же уровень изоляции безопасности, что и модель учетной записи для каждого клиента.
Изоляция контейнеров
В модели изоляции контейнеров каждый клиент назначает отдельный контейнер в общей учетной записи Cosmos DB. Эта модель обеспечивает некоторый уровень изоляции с точки зрения производительности и распределения ресурсов.
Преимущества:
- Улучшенная изоляция производительности. Контейнеры можно выделить определенные ресурсы производительности, минимизируя влияние рабочей нагрузки одного клиента на другую.
- Упрощенное управление. Управление несколькими контейнерами в одной учетной записи обычно проще, чем управление несколькими учетными записями.
- Экономичность. Аналогично модели секции на клиент, этот метод уменьшает затраты на несколько учетных записей.
Недостатки:
- Ограниченная изоляция безопасности. В отличие от отдельных учетных записей контейнеры в одной учетной записи не обеспечивают изоляцию физических данных. Таким образом, эта модель может не соответствовать строгим требованиям к безопасности.
- Состязание ресурсов. Тяжелые рабочие нагрузки в одном контейнере по-прежнему могут повлиять на другие, если ограничения ресурсов нарушаются.
Изоляция базы данных
Модель изоляции базы данных назначает каждому клиенту отдельную базу данных в общей учетной записи Cosmos DB. Это обеспечивает расширенную изоляцию с точки зрения выделения ресурсов и управления.
Преимущества:
- Улучшенная производительность. Отдельные базы данных снижают риск возникновения проблемы с ресурсами, обеспечивая более высокую изоляцию производительности.
- Гибкое выделение ресурсов: ресурсы можно выделить и управлять на уровне базы данных, обеспечивая специализированные возможности производительности.
- Централизованное управление: проще управлять по сравнению с несколькими учетными записями, но обеспечивает большую изоляцию, чем разделение на уровне контейнера.
Недостатки:
- Ограниченная изоляция безопасности. Аналогично изоляции контейнеров, наличие отдельных баз данных в одной учетной записи не обеспечивает изоляцию физических данных.
- Сложность. Управление несколькими базами данных может быть более сложным, чем управление контейнерами, особенно по мере роста числа клиентов.
Хотя модели изоляции контейнеров и баз данных не обеспечивают тот же уровень изоляции безопасности, что и модель учетной записи для каждого клиента, они по-прежнему могут быть полезны для обеспечения изоляции производительности и гибкого управления ресурсами. Эти методы полезны для сценариев, когда экономичность и упрощенное управление являются приоритетами, и жесткая изоляция безопасности не является критически важным требованием.
Тщательно оценивая конкретные потребности и ограничения мультитенантного приложения, вы можете выбрать наиболее подходящую модель изоляции в Azure Cosmos DB, балансировку производительности, безопасности и затрат для достижения наилучших результатов для клиентов.
Рекомендации по реализации в реальном мире
При проектировании мультитенантной системы с помощью Cosmos DB следует учитывать следующие факторы:
- Рабочая нагрузка клиента: оцените размер и действие данных, чтобы выбрать соответствующую модель изоляции.
- Требования к производительности. Выравнивание архитектуры с определенными соглашениями об уровне обслуживания и метрик производительности.
- Управление затратами: балансируйте затраты на инфраструктуру с учетом необходимости изоляции и производительности.
- Масштабируемость: планирование роста путем выбора масштабируемых моделей.
Практическая реализация в Azure Cosmos DB
Ключ секции для каждого клиента:
- Назначение ключей секций: уникальные ключи для каждого клиента обеспечивают логическое разделение.
- Хранение данных: данные клиента ограничены соответствующими ключами секций.
- Оптимизация запросов. Используйте ключи секций для эффективных целевых запросов.
Иерархическое секционирование:
- Создание многоуровневых ключей: дальнейшее упорядочение данных в разделах клиента.
- Целевые запросы: повышение производительности с помощью точного целевого объекта подсеть.
- Управление ресурсами: равномерно распределяйте рабочие нагрузки, чтобы предотвратить узкие места.
Учетная запись на клиент:
- Укажите отдельные учетные записи: каждый клиент получает выделенную учетную запись Cosmos DB.
- Настройка ресурсов. Настройте производительность и соглашения об уровне обслуживания для требований клиента.
- Обеспечение безопасности: изоляция физических данных обеспечивает надежную безопасность и соответствие требованиям.
Рекомендации по использованию Azure Cosmos DB с векторным поиском
Поддержка векторного индекса DiskANN Azure Cosmos DB обеспечивает отличный выбор для приложений, требующих быстрых, высокомерных поисковых запросов, таких как платформы исследований с поддержкой ИИ, такие как ResearchHub. Вот как можно использовать следующие возможности:
Эффективное хранилище и извлечение:
- Индексирование векторов. Используйте индекс вектора DiskANN для эффективного хранения и получения высокомерных векторов. Это полезно для приложений, включающих поиск сходства в больших наборах данных, таких как распознавание изображений или сходство документов.
- Оптимизация производительности: возможности векторного поиска DiskANN обеспечивают быстрый, точный поиск, обеспечивая низкую задержку и высокую производительность, что крайне важно для поддержания хорошего взаимодействия с пользователем.
Масштабирование между клиентами:
- Ключ секции на клиент. Использование ключей секций для логического изоляции данных клиента при использовании масштабируемой инфраструктуры Cosmos DB.
- Иерархическая секционирование. Реализация иерархической секционирования для дальнейшего сегментирования данных в рамках секции каждого клиента, повышение производительности запросов и распределения ресурсов.
Безопасность и соответствие требованиям:
- Управляемые клиентом ключи: реализуйте ключи, управляемые клиентом, для шифрования неактивных данных, обеспечивая безопасное изоляцию данных каждого клиента.
- Обычная смена ключей. Повышение безопасности путем регулярного поворота ключей шифрования, хранящихся в Azure Key Vault.
Пример реального мира: реализация ResearchHub
Ключ секции для каждого клиента:
- Назначение ключей секций. Каждая организация (клиент) назначается уникальный ключ секции.
- Хранилище данных: все данные исследователей для клиента хранятся в своей секции, обеспечивая логическое разделение.
- Оптимизация запросов. Запросы выполняются с помощью ключа секции клиента, повышая производительность путем изоляции доступа к данным.
Иерархическое секционирование:
- Ключи секции с несколькими уровнями: данные в секции клиента дополнительно сегментируются по "DepartmentId" и "Исследователю" или другим соответствующим атрибутам.
- Детализированный Управление данными. Этот иерархический подход позволяет ResearchHub управлять и запрашивать данные более эффективно, уменьшать задержку и улучшать время отклика.
Учетная запись на клиент:
- Отдельные учетные записи Cosmos DB: клиенты высокого профиля или конфиденциальные данные предоставляются отдельными учетными записями Cosmos DB.
- Пользовательские конфигурации: ресурсы и соглашения об уровне обслуживания предназначены для удовлетворения конкретных потребностей каждого клиента, обеспечивая оптимальную производительность и безопасность.
- Расширенная безопасность данных. Физическое разделение данных с ключами шифрования, управляемыми клиентом, обеспечивает надежное соответствие безопасности.
Заключение
Многотенантность в Azure Cosmos DB, особенно с возможностью векторного индекса DiskANN, предлагает мощное решение для создания масштабируемых высокопроизводительных приложений ИИ. Независимо от того, выбираете ли вы ключ секционирования на клиент, иерархическую секционирование или модели учетной записи на клиент, вы можете эффективно сбалансировать затраты, безопасность и производительность. Используя эти модели и рекомендации, вы можете убедиться, что мультитенантное приложение соответствует разнообразным потребностям клиентов, обеспечивая исключительный пользовательский интерфейс.
Azure Cosmos DB предоставляет средства, необходимые для создания надежной, безопасной и масштабируемой мультитенантной среды. Благодаря использованию индексирования векторов DiskANN можно обеспечить быстрые и высокомерные поиски, которые управляют приложениями ИИ.
Решения для векторной базы данных
Расширение pgvector сервера Azure PostgreSQL