Русский
Data mesh для знаний
Коротко. trip2g публикует Obsidian-хранилища как сайты и даёт AI-агентам искать по многим базам знаний через MCP. Проблема, с которой он работает, — одна общая куча, у которой нет хозяина. Инженеры данных упёрлись в ту же проблему с центральным озером данных на несколько лет раньше остальных. Их ответ называется data mesh: не сливать всё в одно озеро, а оставить данные у тех доменов, которые их производят, и пусть они сами их публикуют. Держится это на общей платформе и паре стандартов, обязательных для всех. Распределённая база знаний — тот же ход, только для документации и заметок. Ниже четыре принципа data mesh простыми словами, как каждый выглядит в trip2g сегодня, критика, которую data mesh заработал, и места, где аналогия льстит trip2g.
Откуда взялся data mesh
Жамак Дегани, тогда в Thoughtworks, опубликовала на martinfowler.com в мае 2019 года статью How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. Диагноз центральному озеру данных она поставила жёсткий: «наобещали много, сделали мало». Центральная команда владела пайплайнами и сидела далеко от доменов, которые производили данные, так что те, кто знал данные, и те, кто за ними следил, оказывались разными людьми.
В декабре 2020-го она сформулировала четыре принципа, а в 2022-м в O'Reilly вышла её книга Data Mesh: Delivering Data-Driven Value at Scale. Замените в первой статье «датасет» на «базу знаний», и многие абзацы читаются как описание корпоративной вики.
Четыре принципа простыми словами
1. Владение по доменам. У Дегани: «децентрализация и передача ответственности тем, кто ближе всего к данным». Кто производит, тот и следит. Не центральная команда данных и не садовник вики.
2. Данные как продукт. К данным относятся «как к продукту, а к их потребителям — как к клиентам». В статье 2019 года перечислено, что это значит: продукт данных можно найти, у него есть адрес, ему можно доверять, он сам себя описывает, совместим с другими и защищён.
3. Платформа самообслуживания. Общая платформа даёт каждому домену «высокоуровневую абстракцию инфраструктуры», чтобы команда могла опубликовать продукт данных, не строя хранилище и пайплайны с нуля.
4. Федеративное вычислительное управление. Часть решений остаётся за доменом, часть общая. Общие согласует группа управления из людей доменов и платформы, а исполняет их платформа автоматически, не надеясь, что все будут помнить. Смысл общей части — «совместимость и нарастающий сетевой эффект за счёт поиска и сборки продуктов данных».
Те же четыре, но для баз знаний
Владение — это правило из ru/thoughts/one-writer-per-base: у каждой базы один автор, тот, кто реально знает предмет. Платформенная команда пишет платформенную базу, HR пишет свою. Почему это важно, в цифрах показывает эссе про цепочку поставок: на одной слитой куче модели находили нужные мысли и приписывали их не тому автору.
Знание как продукт. Сверю список Дегани с тем, что trip2g уже умеет:
- Находимость. База попадает в список через KB-заметку: обычную заметку, в тексте которой агенту сказано «Use when: … Don't use when: …». Агент видит это в выдаче и решает, идти ли туда. Публичный хаб — это страница таких заметок.
- Адресуемость. У каждой базы один адрес,
/_system/mcp, и короткийkb_id, на который можно нацелить запрос. - Самоописание. База может отдавать авторские инструкции (
instructions(), а с другой стороныfederated_instructions(kb_id)), а у каждого подграфа есть одна строка «что это за подграф», которую пир видит рядом с именем. - Совместимость. Один протокол, MCP, с одним и тем же набором методов на каждой базе. Что за ним работает, дело владельца: пиру достаточно отвечать на эти методы, так что это может быть другой инстанс trip2g, адаптер перед чужим хранилищем или вообще другой поисковый движок.
- Защищённость. Ключ пира поначалу не видит ничего, владелец выдаёт ему подграфы, отзыв — одна кнопка.
- Доверие. Это слабое место, о нём ниже.
Слово «продукт» тут ещё и буквальное: базу можно продавать по подписке, это идея ru/thoughts/knowledge-as-a-service.
Платформа самообслуживания. Один инстанс trip2g — вся платформа для одной базы: один бинарник на SQLite, синхронизация из Obsidian или через git push, гибридный поиск, MCP-эндпоинт и сайт из коробки. Команде не надо просить пайплайн у центральной группы. Она поднимает инстанс, или его поднимают для неё.
Федеративное управление. Общее — то, что код проверяет при каждом вызове между базами. Набор федеративных методов, и все они только читают. Подписанные запросы с общим ключом. Одинаковое «not configured» и для несуществующей базы, и для той, куда вас не пустили. Ротация ключа с пятиминутным окном. И пара значений по умолчанию, которые каждый инстанс может поменять: глубина веерного запроса не больше трёх, чтобы пиры с пирами не зацикливались, и две секунды на ответ пира. Локальное — всё остальное: что лежит в базе, как устроены заметки, какие есть подграфы, кому какие выданы.
Отличие от версии Дегани в том, кто устанавливает общие правила. В data mesh их решает группа управления от доменов. Здесь правила — это то, что делает код федерации, и решал их тот, кто этот код писал, то есть я. Для протокола между незнакомыми людьми это, наверное, правильно. Для компании это значит, что общие правила заканчиваются на доступе и маршрутизации; к этому я вернусь ниже.
Пример из документации: Backstage TechDocs
Data mesh про данные, поэтому вот пример из самой документации. (Пример постарше, Federated Wiki Уорда Каннингема, разобран в ru/thoughts/one-writer-per-base.) TechDocs от Spotify, встроенный в Backstage, устроен как «docs-like-code»: инженеры пишут Markdown в том же репозитории, что и сервис, а Backstage его рендерит и даёт найти со страницы сервиса в каталоге. По данным Spotify, на нём больше 5000 сайтов документации.
Это владение плюс портал. Команда владеет своей документацией, потому что та лежит в её репозитории, а портал собирает всё для читателя. trip2g умеет ровно это внутри одного инстанса: несколько репозиториев синхронизируются в один сайт, каждый со своим подграфом через --meta subgraph=… (документация).
Федерация отличается тем, где происходит сборка. TechDocs собирает документацию всех команд в один портал. Хаб trip2g ничего не копирует: он держит заметки-маршруты, рассылает вопрос в момент чтения, и каждый ответ приходит из базы, которая им владеет. В портале проще искать, и его проще оформить. Федерация оставляет каждую базу на сервере владельца с его правилами доступа, а это становится важно, как только одна из баз принадлежит другой компании.
Критика, которая касается и нас
Последние годы у data mesh выдались тяжёлыми. В Hype Cycle for Data Management 2022 года Gartner поставил его на стадию «технологического триггера» с пометкой «устареет до выхода на плато» и низким проникновением на рынок. Отчёт платный, я опираюсь на пересказ Atlan, где приведена и цифра из опроса Gartner по управлению данными 2021 года: зрелости для такого перехода хватало лишь 18% организаций. Дегани с этим вердиктом спорила, и в том же пересказе это тоже есть. Типичные претензии: каждой команде нужны навыки работы с данными, которых у неё может не быть, границы доменов в живой организации трудно провести, а нужная платформа сама по себе большой проект.
Если пересказать это своими словами: без сильной платформы и общих стандартов mesh — это центральное болото, разрезанное на двадцать болот поменьше. На знания это переносится без правок. Дайте каждой команде свою базу без привычки её описывать, и получите двадцать маленьких вики, которые гниют параллельно, а общего поиска, чтобы эту гниль найти, больше нет. Описание в KB-заметке — защита тонкая. Она работает, только если кто-то честно пишет «Use when / Don't use when» и обновляет это, когда база меняется.
Где аналогия нам льстит
Data mesh придумывали для организаций с десятками доменов и платформенной командой, которая строит слой самообслуживания. trip2g сегодня работает в основном на моих собственных базах и небольшом публичном хабе. Когда я пишу здесь «домены», имею в виду несколько баз, а не оргструктуру компании.
Доверие на уровне платформы не решено никак. Дегани требует от продукта данных целевого уровня обслуживания по достоверности. У trip2g ничего подобного нет. Одна база в хабе помечает каждую цитату статусом подлинности (это описано в ru/thoughts/federation-supply-chain), но это практика одного владельца, а не правило платформы. Свежесть между базами тоже не отслеживается: пир, который перестал обновляться год назад, выглядит точно так же, как обновлённый сегодня утром.
Управление узкое. «Вычислительная» часть покрывает доступ, протокол и маршрутизацию. Про содержимое она молчит: нет общего глоссария, нет общей схемы заметок, нет проверки качества, которая шла бы через все базы. В data mesh совместимость живёт как раз в этом слое. Здесь он оставлен владельцам.
Каталог пишется руками. Data mesh предполагает каталог продуктов данных с метаданными и поиском. В trip2g база становится находимой, когда кто-то пишет про неё KB-заметку, и только для тех, у кого эта заметка есть.
И в одном месте сбой тихий. Пир, не ответивший за две секунды, пропускается, и вы получаете результаты от остальных. Поиск от этого быстрый, а медленная база становится невидимой, а не сломанной, о чём с другой стороны предупреждает мембрана.
Аналогию это не убивает. Это показывает, какую половину data mesh trip2g построил: владение, адресацию, доступ и протокол, на котором говорят все. Вторая половина, общие стандарты того, что внутри базы и насколько оно хорошо, пока на владельцах. Кто возьмёт этот подход, тому эту половину делать самому.