data-infra
Словарь ↗Пространство имён (Namespace)
Пространство имён — это логическое разбиение в рамках общей системы, которое изолирует одну группу данных от другой, позволяя одинаковым идентификаторам, ключам или именам ресурсов существовать независимо в разных пространствах имён без конфликтов. Эта концепция повторяется на многих уровнях программной инфраструктуры — языки программирования используют пространства имён, чтобы избежать конфликтов имён функций, Kubernetes использует пространства имён для изоляции групп ресурсов внутри кластера, — но конкретно в контексте AI/инфраструктуры данных это чаще всего означает логические разделы внутри индекса векторной базы данных, используемые для разделения различных подмножеств векторов, которые никогда не должны участвовать в поиске вместе. Почему это важно для разработчиков AI/SaaS: пространства имён — стандартный, малозатратный механизм изоляции данных многотенантности в векторном хранилище. Вместо создания отдельного, полностью независимого векторного индекса для каждого клиента (операционно дорого и медленно разворачивается) или смешивания векторов всех клиентов в одном огромном непартиционированном индексе, полностью полагаясь на фильтрацию по метаданным для их разделения (это работает, но добавляет накладные расходы фильтрации к каждому запросу и создаёт реальный риск того, что отсутствующее условие фильтра допустит утечку данных между тенантами), большинство векторных баз данных позволяют создать одно пространство имён на тенанта в рамках одного индекса — запросы ограничиваются пространством имён на уровне API, так что случайно выполнить поиск через границы тенантов невозможно, даже если в коде приложения есть баг в другом месте. Как это работает: конкретно в Pinecone каждая операция запроса и upsert принимает параметр `namespace`; векторы, добавленные в `namespace="tenant_A"`, полностью невидимы для запроса, выполненного к `namespace="tenant_B"`, даже если оба живут в одном физическом индексе и даже при идентичных ID векторов. Это архитектурно дешевле, чем полностью раздельные индексы, потому что пространства имён внутри одного индекса обычно совместно используют одну и ту же базовую инфраструктуру и конфигурацию (размерность, метрику), при этом обеспечивая жёсткую изоляцию для запросов. Другие векторные базы данных реализуют ту же концепцию под другими названиями — Weaviate использует «классы» (classes), Qdrant использует «коллекции» (collections) для паттернов на тенанта, Chroma использует «коллекции». Практический пример: AI SaaS для базы знаний, обслуживающий 500 B2B-клиентов, хранит внутренние документы каждого клиента в одном индексе Pinecone, но с `namespace = f"tenant_{customer_id}"` для каждого upsert и запроса. Когда сотрудник Тенанта A ищет по своей внутренней вики, запрос выглядит как `index.query(vector=q, namespace="tenant_4471", top_k=5)` — структурно неспособный вернуть хотя бы один вектор, принадлежащий Тенанту B, потому что граница пространства имён обеспечивается самим Pinecone, а не фильтром на уровне приложения, который будущее изменение кода могло бы случайно пропустить. Это важно настолько, что команды, заботящиеся о безопасности, рассматривают изоляцию пространств имён как первоочередное архитектурное решение при обзоре архитектуры, а не как запоздалую надстройку, добавленную только когда первый корпоративный клиент задаёт острый вопрос об изоляции данных в ходе due diligence при закупке.
Похожие термины