{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Yuriy Gavrilov: posts tagged Rest Catalog",
    "_rss_description": "Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov",
    "_rss_language": "en",
    "_itunes_email": "yvgavrilov@gmail.com",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic-square@2x.jpg?1643451008",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/gavrilov.info\/tags\/rest-catalog\/",
    "feed_url": "https:\/\/gavrilov.info\/tags\/rest-catalog\/json\/",
    "icon": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008",
    "authors": [
        {
            "name": "Yuriy Gavrilov - B[u]g - for charity.gavrilov.eth",
            "url": "https:\/\/gavrilov.info\/",
            "avatar": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008"
        }
    ],
    "items": [
        {
            "id": "294",
            "url": "https:\/\/gavrilov.info\/all\/nimtable-edinaya-panel-upravleniya-dlya-zooparka-iceberg-katalog\/",
            "title": "Nimtable: Единая панель управления для зоопарка Iceberg-каталогов",
            "content_html": "<p>В современных компаниях, активно использующих данные, часто возникает проблема “зоопарка” технологий. Данные хранятся в озере данных (Data Lake), а метаданные об этих данных — в каталогах. Со временем таких каталогов становится много: один `Hive Metastore` для унаследованной аналитики, другой — `REST Catalog` для новой платформы на Trino, третий — `JDBC Catalog` для специфичного микросервиса, а где-то в среде разработки таблицы вообще создаются напрямую в S3. Каждая система решает свою задачу, но вместе они создают хаос.<\/p>\n<p><a href=\"https:\/\/github.com\/nimtable\/nimtable\">https:\/\/github.com\/nimtable\/nimtable<\/a><\/p>\n<p>Платформенным дата-командам становится сложно управлять этим разнообразием, отслеживать состояние таблиц, проводить оптимизацию и обеспечивать единые стандарты. Именно для решения этой проблемы и был создан open-source проект <b>Nimtable<\/b>. Это не просто очередной каталог для Iceberg, а полноценная платформа для наблюдения и управления (*observability platform*) существующими каталогами из одного окна.<\/p>\n<h4>Что такое Nimtable?<\/h4>\n<p><b>Nimtable<\/b> — это легковесная веб-платформа с открытым исходным кодом, предназначенная для исследования и управления каталогами и таблицами Apache Iceberg. Его ключевая идея — предоставить единый интерфейс для подключения к различным существующим каталогам, агрегируя метаданные и предоставляя инструменты для их анализа и обслуживания.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.18.11.png\" width=\"1376\" height=\"708\" alt=\"\" \/>\n<\/div>\n<p>Проект ориентирован на инженерные и платформенные команды, которые хотят получить контроль над своей Iceberg-инфраструктурой без привязки к конкретному вендору и без операционной сложности самостоятельного развертывания разрозненных инструментов.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/image-232.png.jpg\" width=\"2560\" height=\"1598\" alt=\"\" \/>\n<\/div>\n<h4>Ключевая функциональность<\/h4>\n<p>Nimtable предлагает набор функций, которые делают его мощным инструментом для управления озером данных.<\/p>\n<p>пы: картинки можно листать, если что) там много, почти все меню.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1856\" data-ratio=\"3.0032362459547\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.04.44.png\" width=\"1856\" height=\"618\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.28.36.png\" width=\"1946\" height=\"1784\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.40.39.png\" width=\"1894\" height=\"606\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.36.26.png\" width=\"1462\" height=\"324\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.36.06.png\" width=\"1470\" height=\"256\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.49.png\" width=\"834\" height=\"808\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.42.png\" width=\"1886\" height=\"600\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.34.png\" width=\"1948\" height=\"706\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.18.png\" width=\"1934\" height=\"1776\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.33.43.png\" width=\"1852\" height=\"1136\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.33.03.png\" width=\"1440\" height=\"1040\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.48.png\" width=\"1432\" height=\"806\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.23.png\" width=\"642\" height=\"408\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.03.png\" width=\"630\" height=\"388\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.31.45.png\" width=\"1926\" height=\"1760\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.31.05.png\" width=\"1944\" height=\"1784\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.46.png\" width=\"1950\" height=\"960\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.37.png\" width=\"1942\" height=\"630\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.29.png\" width=\"964\" height=\"626\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.08.png\" width=\"1944\" height=\"1780\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.51.png\" width=\"1928\" height=\"816\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.38.png\" width=\"1876\" height=\"950\" alt=\"\" \/>\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.29.png\" width=\"1938\" height=\"878\" alt=\"\" \/>\n<\/div>\n<\/div>\n<ol start=\"1\">\n<li><b>Агрегация каталогов<\/b>: Это главная особенность проекта. Nimtable позволяет в одном интерфейсе подключить и работать с несколькими типами каталогов Apache Iceberg, включая:\n<ul>\n  <li>`REST Catalog`<\/li>\n  <li>`AWS Glue`<\/li>\n  <li>`PostgreSQL` (через JDBC)<\/li>\n  <li>Каталоги на основе S3 (`S3 Tables`)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"2\">\n<li><b>Исследование и визуализация<\/b>: Платформа предоставляет удобный UI для навигации по метаданным:\n<ul>\n  <li>Просмотр каталогов, пространств имен (схем) и таблиц.<\/li>\n  <li>Анализ схемы таблиц, их партиций, снэпшотов и манифестов.<\/li>\n  <li>Визуализация распределения файлов и снэпшотов, что помогает быстро находить таблицы, требующие оптимизации (например, с большим количеством мелких файлов).<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"3\">\n<li><b>Управление оптимизацией<\/b>: Nimtable не просто показывает проблемы, но и помогает их решать. Он интегрируется с внешними вычислительными движками, такими как <b>Apache Spark<\/b> или <b>RisingWave<\/b>, позволяя запускать и отслеживать задачи по обслуживанию таблиц (например, `compaction` или `expire_snapshots`) прямо из веб-интерфейса.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li><b>Встроенный SQL-редактор<\/b>: Для быстрой проверки данных или метаданных в Nimtable встроен простой SQL-редактор, позволяющий выполнять запросы к таблицам напрямую из браузера.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li><b>Собственный REST API<\/b>: Помимо агрегации других каталогов, Nimtable сам может выступать в роли стандартного Iceberg REST-каталога. Это позволяет использовать его как единую точку входа для различных движков запросов (Trino, Spark, Flink).<\/li>\n<\/ol>\n<h3>Варианты использования в большой компании<\/h3>\n<p>Представим себе компанию, где исторически сложился разнородный ландшафт данных:<\/p>\n<ul>\n<li><b>Прод-кластер Hadoop<\/b> использует `Hive Metastore` для аналитических витрин.<\/li>\n<li><b>Аналитическая платформа<\/b> на Trino работает с <a href=\"https:\/\/docs.cedrusdata.ru\/latest\/cedrusdata-catalog.html\">CedrusData Catalog<\/a>, который реализует `Iceberg REST API` <a href=\"https:\/\/habr.com\/ru\/companies\/cedrusdata\/articles\/860356\">habr.com<\/a>.<\/li>\n<li><b>Команда разработки<\/b> для своих экспериментов использует таблицы, зарегистрированные напрямую в S3, чтобы не “загрязнять” общие каталоги.<\/li>\n<li>Какой-то <b>сервис<\/b> использует собственную `PostgreSQL` базу как JDBC-каталог.<\/li>\n<\/ul>\n<p>В такой среде Nimtable становится незаменимым инструментом:<\/p>\n<ul>\n<li><b>Единая точка входа<\/b>: Платформенная команда подключает все четыре каталога к Nimtable. Теперь для мониторинга состояния всех Iceberg-таблиц в компании достаточно зайти на один дашборд, не переключаясь между разными консолями и инструментами.<\/li>\n<li><b>Централизованная оптимизация<\/b>: Инженер замечает, что в одной из таблиц на прод-кластере накопилось тысячи мелких файлов. Прямо из интерфейса Nimtable он может запустить `compaction-job` на общем Spark-кластере, выбрав нужную таблицу, независимо от того, в каком каталоге она зарегистрирована.<\/li>\n<li><b>Упрощение доступа<\/b>: Вместо того чтобы объяснять новому аналитику, как настроить 4 разных подключения, ему можно дать доступ к Nimtable, где он сможет исследовать все доступные данные в едином, понятном интерфейсе.<\/li>\n<li><b>Контролируемая миграция<\/b>: Если команда решит перенести таблицы из `Hive Metastore` в новый `REST Catalog`, Nimtable позволит одновременно наблюдать за источником и приемником, контролируя процесс и сверяя метаданные.<\/li>\n<\/ul>\n<h4>Архитектура и развертывание<\/h4>\n<p>Архитектурно Nimtable располагается между конечными пользователями (или движками запросов) и нижележащими каталогами метаданных.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/image-231.png\" width=\"1443\" height=\"654\" alt=\"\" \/>\n<\/div>\n<p>Проект очень прост в развертывании. Самый быстрый способ начать работу — использовать Docker:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Переходим в директорию с docker-файлами в репозитории проекта\ncd docker\n# Запускаем сервисы в фоновом режиме\ndocker compose up -d<\/code><\/pre><p>После этого веб-интерфейс будет доступен по адресу `<a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a>`.<\/p>\n<h4>Сравнение с другими решениями<\/h4>\n<p>Чтобы понять нишу, которую занимает Nimtable, сравним его с другими популярными решениями для управления метаданными.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Параметр<\/td>\n<td style=\"text-align: center\">Nimtable<\/td>\n<td style=\"text-align: center\">Project Nessie<\/td>\n<td style=\"text-align: center\">Hive Metastore<\/td>\n<td style=\"text-align: center\">CedrusData Catalog<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Основное назначение<\/b><\/td>\n<td style=\"text-align: center\">Платформа для наблюдения и управления несколькими каталогами.<\/td>\n<td style=\"text-align: center\">Каталог с Git-подобным версионированием данных.<\/td>\n<td style=\"text-align: center\">Хранилище метаданных для экосистемы Hadoop.<\/td>\n<td style=\"text-align: center\">Высокопроизводительный Iceberg REST каталог.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Поддержка нескольких каталогов (агрегация)<\/b><\/td>\n<td style=\"text-align: center\"><b>Да (ключевая функция)<\/b><\/td>\n<td style=\"text-align: center\">Нет (является самостоятельным каталогом)<\/td>\n<td style=\"text-align: center\">Нет (является самостоятельным каталогом)<\/td>\n<td style=\"text-align: center\">Нет (является самостоятельным каталогом)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Встроенный UI для управления<\/b><\/td>\n<td style=\"text-align: center\">Да, с фокусом на агрегацию и оптимизацию.<\/td>\n<td style=\"text-align: center\">Да, с фокусом на ветки, теги и коммиты.<\/td>\n<td style=\"text-align: center\">Нет (обычно управляется через CLI или сторонние UI).<\/td>\n<td style=\"text-align: center\">Управляется через API; UI не является основной частью <a href=\"https:\/\/docs.cedrusdata.ru\/catalog\/458-14\">docs.cedrusdata.ru<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Управление оптимизацией (Compaction)<\/b><\/td>\n<td style=\"text-align: center\">Да, через интеграцию с внешними движками.<\/td>\n<td style=\"text-align: center\">Нет, это задача движков запросов.<\/td>\n<td style=\"text-align: center\">Нет, это задача движков запросов (Spark\/Hive).<\/td>\n<td style=\"text-align: center\">Нет, это задача движков запросов.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Git-подобные операции<\/b><\/td>\n<td style=\"text-align: center\">Нет<\/td>\n<td style=\"text-align: center\"><b>Да (ключевая функция)<\/b><\/td>\n<td style=\"text-align: center\">Нет<\/td>\n<td style=\"text-align: center\">Нет<\/td>\n<\/tr>\n<\/table>\n<p>Как видно из таблицы, Nimtable не конкурирует напрямую с каталогами вроде Nessie или Hive и другими, а дополняет их, выступая в роли “менеджера менеджеров”.<\/p>\n<h3>Заключение<\/h3>\n<p>Nimtable — это многообещающий проект, который пока не собрал много звёзд, но уже готов решать реальную боль платформенных дата-команд в крупных организациях. Вместо того чтобы создавать еще один стандарт каталога, он предлагает удобный слой абстракции для управления уже существующим “зоопарком”. Возможность в одном месте видеть, анализировать и оптимизировать таблицы из разных систем (`Hive`, `JDBC`, `REST`) делает его уникальным и крайне полезным инструментом для построения зрелой и управляемой платформы данных на базе Apache Iceberg.<\/p>\n<p>Кстати, у меня после запуска он сначала жутко тупил, а потом прочихался, на третий день работы в докере))) я уже даже не надеялся, а он смог. ниче не делал) оно само) Но, видимо, если таблиц очень много, то первый запуск надо как то отдельно планировать. В общем зверь интересный и полезный, а запускать не сложно. Ну почти не сложно и баги есть. вот эту нашел например?  <a href=\"https:\/\/github.com\/nimtable\/nimtable\/issues\/200\">https:\/\/github.com\/nimtable\/nimtable\/issues\/200<\/a> но это не критично.<\/p>\n<p>Видосик ниже, компакшен в онлайне не получился, но 5 минут ранее он прошел хорошо. вероятно, что моих локальных ресурсов не хватает для записи видео и этой операции.<\/p>\n<p><video controls style=\"width: 100%; max-width: 1200px; height: auto;\"><br \/>\n<source src=\"http:\/\/a.gavrilov.info\/data\/posts\/nimtable.mp4\" type=\"video\/mp4\"><br \/>\nВаш браузер не поддерживает видео.<br \/>\n<\/video><\/p>\n<p>Да точно, дело в ресурсах, теперь 16 файлов.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.47.50.png\" width=\"1392\" height=\"648\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.48.56.png\" width=\"1532\" height=\"1068\" alt=\"\" \/>\n<\/div>\n<p>Теперь кстати хочет оптимизации)), хороший тула, можно и сломать табличку им))<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.49.46.png\" width=\"1530\" height=\"1060\" alt=\"\" \/>\n<\/div>\n<p>Ранее писал о разных каталогах тут: <a href=\"https:\/\/gavrilov.info\/all\/rukovodstvo-po-rest-katalogam-dlya-trino-i-iceberg\/\">https:\/\/gavrilov.info\/all\/rukovodstvo-po-rest-katalogam-dlya-trino-i-iceberg\/<\/a><\/p>\n",
            "date_published": "2025-11-19T22:44:53+03:00",
            "date_modified": "2025-11-19T23:01:32+03:00",
            "tags": [
                "big data",
                "Data",
                "Rest Catalog"
            ],
            "image": "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.18.11.png",
            "_date_published_rfc2822": "Wed, 19 Nov 2025 22:44:53 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "294",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js",
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.18.11.png",
                    "https:\/\/gavrilov.info\/pictures\/image-232.png.jpg",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.04.44.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.28.36.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.40.39.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.36.26.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.36.06.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.49.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.42.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.34.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.34.18.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.33.43.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.33.03.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.48.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.23.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.32.03.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.31.45.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.31.05.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.46.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.37.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.29.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.30.08.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.51.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.38.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-21.29.29.png",
                    "https:\/\/gavrilov.info\/pictures\/image-231.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.47.50.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.48.56.png",
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-11-19-v-22.49.46.png"
                ]
            }
        },
        {
            "id": "263",
            "url": "https:\/\/gavrilov.info\/all\/rukovodstvo-po-rest-katalogam-dlya-trino-i-iceberg\/",
            "title": "Руководство по REST-каталогам для Trino и Iceberg",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-08-13-v-00.24.09.png\" width=\"1340\" height=\"494\" alt=\"\" \/>\n<div class=\"e2-text-caption\"><a href=\"https:\/\/docs.lakekeeper.io\">https:\/\/docs.lakekeeper.io<\/a> – картинка как у меня не грузится сайт лейкипера. <a href=\"https:\/\/github.com\/lakekeeper\/lakekeeper\/issues\/1119\">https:\/\/github.com\/lakekeeper\/lakekeeper\/issues\/1119<\/a><\/div>\n<\/div>\n<p>В мире современных озер данных (Data Lakehouse) связка Trino и Apache Iceberg стала синонимом производительности и гибкости. Но чтобы эта связка работала по-настоящему эффективно, необходим центральный элемент — каталог метаданных. И если раньше выбор был ограничен Hive Metastore или JDBC, то сегодня стандарт де-факто — это <b>REST Catalog API<\/b>.<\/p>\n<p>REST-каталог — это не просто технология, это идеология. Он отделяет движок запросов от хранилища метаданных, позволяя десяткам инструментов (Trino, Spark, Flink, dbt) работать с данными через единый, универсальный и не зависящий от вендора интерфейс.<\/p>\n<p>Это руководство — погружение во все доступные на рынке REST-каталоги ( почти все ). Мы оценим их готовность к продакшену в Kubernetes, уникальные преимущества и то, как они вписываются в современный стек данных.<\/p>\n<h4>Почему REST-каталог — это новый стандарт?<\/h4>\n<ol start=\"1\">\n<li><b>Централизация и универсальность<\/b>: Один каталог для всех. Trino, Spark и Flink видят одно и то же состояние данных. Атомарные коммиты для нескольких таблиц и серверное разрешение конфликтов становятся возможными.<\/li>\n<li><b>Гибкость развертывания<\/b>: REST-сервис — это независимый, stateless-компонент, идеально подходящий для Kubernetes. Его можно легко развернуть, масштабировать и обновлять.<\/li>\n<li><b>Безопасность на уровне каталога<\/b>: Вы можете централизованно управлять доступом, использовать OAuth2 и даже выдавать временные учетные данные для доступа к S3, не прописывая секреты в каждом движке.<\/li>\n<li><b>Поддержка всех функций Iceberg<\/b>: REST API спроектирован для поддержки самых передовых возможностей Iceberg, которые не всегда доступны в старых типах каталогов.<\/li>\n<\/ol>\n<h4>Обзор и рейтинг REST-каталогов: Битва титанов<\/h4>\n<p>Рассмотрим ключевых игроков, их сильные стороны и готовность к бою в продуктивной среде.<\/p>\n<h5>1. Project Nessie: Git для ваших данных<\/h5>\n<p>Nessie — это каталог, построенный вокруг концепции Git. Он позволяет создавать ветки, коммитить и сливать изменения данных так же, как вы это делаете с кодом.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Git-like операции<\/b>: Создавайте изолированные ветки для экспериментов (`dev`, `feature-branch`) и сливайте их в основную (`main`) атомарно. Идеально для CI\/CD пайплайнов данных.<\/li>\n  <li><b>Декларативные транзакции<\/b>: Гарантирует консистентность при одновременных операциях с несколькими таблицами.<\/li>\n  <li><b>Экосистема<\/b>: Отличная документация, интеграция с dbt и инструменты для миграции с Hive Metastore.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Высокая<\/b>. Nessie имеет официальный Helm chart, что значительно упрощает развертывание и управление в K8s. Требует отдельного процесса для сборки мусора (Garbage Collection).<\/li>\n<li><b>Кому подходит<\/b>: Командам, которые хотят внедрить DevOps-практики (DataOps) в работу с данными, обеспечивая изоляцию, воспроизводимость и безопасные обновления.<\/li>\n<li><b>GitHub<\/b>: <a href=\"https:\/\/github.com\/projectnessie\/nessie\">projectnessie\/nessie<\/a><\/li>\n<\/ul>\n<h5>2. Apache Gravitino (Incubating): Универсальный федеративный мета-каталог<\/h5>\n<p>Gravitino — это амбициозный проект под эгидой <b>Apache Foundation<\/b>, нацеленный на то, чтобы стать единым центром метаданных для всей компании.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Федерация<\/b>: Может выступать прокси для существующих каталогов (Hive, JDBC, REST), объединяя их под единым API.<\/li>\n  <li><b>Каскадные запросы в Trino<\/b>: Позволяет одному кластеру Trino запрашивать данные из каталогов другого кластера Trino.<\/li>\n  <li><b>Широчайшая экосистема<\/b>: Поддерживает не только Iceberg, но и реляционные СУБД, <b>ClickHouse<\/b>, и даже <b>каталог для Kafka<\/b>, позволяя управлять топиками. Есть планы по управлению метаданными <b>ИИ\/ML моделей<\/b>.<\/li>\n  <li><b>Безопасность<\/b>: Поддерживает OAuth2 и Kerberos для бэкенда Hive.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Средняя<\/b>. Проект активно развивается, но требует внимательной конфигурации. Необходимо учитывать требования к версиям Trino (например, 435-439 для некоторых функций).<\/li>\n<li><b>Кому подходит<\/b>: Крупным организациям со сложной, гетерогенной средой, которые стремятся унифицировать управление метаданными из разных источников (Data Lake, DWH, Streaming).<\/li>\n<li><b>GitHub<\/b>: <a href=\"https:\/\/github.com\/apache\/gravitino\">apache\/gravitino<\/a><\/li>\n<\/ul>\n<h5>3. Apache Amoro (Incubating, ранее Arctic): Самооптимизирующийся каталог<\/h5>\n<p>Amoro фокусируется на решении одной из главных проблем озер данных — оптимизации хранения.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Автоматическая оптимизация<\/b>: Встроенные механизмы для `compaction` (объединение мелких файлов) и `clustering` для поддержания высокой производительности запросов без ручного вмешательства.<\/li>\n  <li><b>Поддержка смешанных форматов<\/b>: Может управлять не только Iceberg, но и Paimon (Flink), а также таблицами смешанного формата.<\/li>\n  <li><b>Экосистема<\/b>: Есть интеграция с ClickHouse, Flink, Spark и Trino. Предлагается облачная версия Arctic Cloud.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Высокая<\/b>. Проект нацелен на облачные развертывания и предоставляет инструменты для автоматизации обслуживания.<\/li>\n<li><b>Кому подходит<\/b>: Компаниям с высоконагруженными озерами данных (high-throughput data lakes), где постоянно идет запись данных, и требуется автоматическое поддержание производительности.<\/li>\n<li><b>Сайт<\/b>: ((<a href=\"https:\/\/amoro.apache.org\/\">https:\/\/amoro.apache.org\/<\/a> amoro.apache.org)<\/li>\n<\/ul>\n<h5>4. Lakekeeper: Крепость безопасности на Rust<\/h5>\n<p>Lakekeeper — это новый игрок, написанный на Rust, с абсолютным фокусом на безопасности, управлении доступом и интеграции с облаками.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Безопасность во главе угла<\/b>: Использует <b>Vended-Credentials<\/b> для безопасного доступа к S3, интегрируется с OpenID для аутентификации и OpenFGA для детальной авторизации (Fine Grained Access).<\/li>\n  <li><b>Нативен для Kubernetes<\/b>: Развертывается через Helm chart, может аутентифицировать сервисные аккаунты Kubernetes. Оператор в разработке.<\/li>\n  <li><b>Событийная архитектура<\/b>: Генерирует события об изменениях (CloudEvents) в Kafka или NATS, что позволяет строить реактивные пайплайны.<\/li>\n  <li><b>Data Contracts<\/b>: Может проверять изменения по внешним системам контрактов данных, чтобы предотвратить нарушение схем.<\/li>\n  <li><b>Легковесность<\/b>: Единый бинарный файл без зависимостей от JVM или Python.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Очень высокая<\/b>. Это, возможно, самый “Kubernetes-native” каталог из всех, созданный с нуля для облачных сред.<\/li>\n<li><b>Кому подходит<\/b>: Организациям, для которых безопасность, управление доступом и аудит являются главным приоритетом. Идеален для мульти-облачных и мульти-тенантных сред.<\/li>\n<li><b>GitHub<\/b>: <a href=\"https:\/\/github.com\/lakekeeper\/lakekeeper\">lakekeeper\/lakekeeper<\/a><\/li>\n<\/ul>\n<h5>5. Denali: Минималистичная “зверюга” на Go<\/h5>\n<p>Denali от Bodo.ai — это антитеза сложным enterprise-системам. Его философия — максимальная простота и производительность.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Экстремальная легковесность<\/b>: Написан на Go, менее 5000 строк кода, развертывается как один бинарный файл на ~20MB.<\/li>\n  <li><b>Простота развертывания<\/b>: Минимальные зависимости (бэкендом может быть SQLite или PostgreSQL). Идеален для быстрых тестов и легковесных продакшен-сред.<\/li>\n  <li><b>Высокая производительность<\/b>: Отсутствие оверхеда JVM и компилируемая природа Go.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Высокая<\/b>. Благодаря своей простоте и отсутствию состояния, Denali легко упаковывается в контейнер и управляется в Kubernetes.<\/li>\n<li><b>Кому подходит<\/b>: Командам, которые ценят простоту, производительность и полный контроль над инфраструктурой. Отличный выбор для стартапов и проектов, где не нужна сложная федерация или enterprise-функции.<\/li>\n<li><b>GitHub<\/b>: [Bodo-inc\/denali](<a href=\"https:\/\/github.com\/Bodo-inc\/denali)\">https:\/\/github.com\/Bodo-inc\/denali)<\/a><\/li>\n<\/ul>\n<h5>6. Tabular: Управляемый сервис от создателей Iceberg<\/h5>\n<p>Tabular — это не open-source проект, а полностью управляемый SaaS-продукт от сооснователей Apache Iceberg.<\/p>\n<ul>\n<li><b>Ключевые преимущества<\/b>:\n<ul>\n  <li><b>Нулевое администрирование<\/b>: Вы просто получаете эндпоинт REST-каталога и используете его. Вся инфраструктура, обновления и безопасность — на стороне Tabular.<\/li>\n  <li><b>Надежность и поддержка<\/b>: Коммерческая поддержка от экспертов, которые создали Iceberg.<\/li>\n  <li><b>Интеграции<\/b>: Глубокая интеграция с dbt, Confluent\/Kafka.<\/li>\n<\/ul>\n<\/li>\n<li><b>Готовность к Kubernetes<\/b>: <b>Неприменимо<\/b>. Это SaaS-решение, вы не развертываете его самостоятельно.<\/li>\n<li><b>Кому подходит<\/b>: Компаниям любого размера, которые хотят сфокусироваться на аналитике, а не на управлении инфраструктурой.<\/li>\n<\/ul>\n<h5>Другие важные игроки<\/h5>\n<ul>\n<li><b>Apache Polaris (Incubating)<\/b>: Официальная реализация REST-каталога от Apache. Цель — стать эталонной. Имеет роли, неймспейсы и документацию для продакшена, но пока менее зрелый, чем конкуренты. [polaris.apache.org](<a href=\"https:\/\/polaris.apache.org\/)\">https:\/\/polaris.apache.org\/)<\/a><\/li>\n<li><b>Databricks Unity Catalog<\/b>: Мощнейший каталог, но тесно интегрированный в экосистему Databricks. Поддерживает REST API и уникальную технологию <b>Delta Sharing<\/b> для безопасного обмена данными. “Модный, молодежный” выбор для тех, кто уже живет в мире Databricks.<\/li>\n<\/ul>\n<h4>Сводная таблица<\/h4>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Каталог<\/td>\n<td style=\"text-align: center\">Стек<\/td>\n<td style=\"text-align: center\">Ключевое преимущество<\/td>\n<td style=\"text-align: center\">Готовность к PROD в K8s<\/td>\n<td style=\"text-align: center\">Лучше всего для...<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">:---<\/td>\n<td style=\"text-align: center\">:---<\/td>\n<td style=\"text-align: center\">:---<\/td>\n<td style=\"text-align: center\">:---<\/td>\n<td style=\"text-align: center\">:---<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Project Nessie<\/b><\/td>\n<td style=\"text-align: center\">Java<\/td>\n<td style=\"text-align: center\"><b>Git-версионирование данных<\/b><\/td>\n<td style=\"text-align: center\">✅ Высокая (Helm Chart)<\/td>\n<td style=\"text-align: center\">Команд, внедряющих DataOps и CI\/CD для данных.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Apache Gravitino<\/b><\/td>\n<td style=\"text-align: center\">Java<\/td>\n<td style=\"text-align: center\"><b>Федерация и универсальность<\/b> (ClickHouse, Kafka)<\/td>\n<td style=\"text-align: center\">✅ Средняя (требует настройки)<\/td>\n<td style=\"text-align: center\">Сложных гетерогенных enterprise-сред.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Apache Amoro<\/b><\/td>\n<td style=\"text-align: center\">Java<\/td>\n<td style=\"text-align: center\"><b>Автоматическая оптимизация<\/b><\/td>\n<td style=\"text-align: center\">✅ Высокая<\/td>\n<td style=\"text-align: center\">Высоконагруженных озер данных с постоянной записью.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Lakekeeper<\/b><\/td>\n<td style=\"text-align: center\">Rust<\/td>\n<td style=\"text-align: center\"><b>Безопасность и Governance<\/b> (Vended Credentials)<\/td>\n<td style=\"text-align: center\">✅✅ Очень высокая (Native K8s)<\/td>\n<td style=\"text-align: center\">Компаний с высокими требованиями к безопасности.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\"><b>Denali<\/b><\/td>\n<td style=\"text-align: center\">Go<\/td>\n<td style=\"text-align: center\"><b>Простота и производительность<\/b><\/td>\n<td style=\"text-align: center\">✅ Высокая (легковесный контейнер)<\/td>\n<td style=\"text-align: center\">Гибких команд, ценящих минимализм и скорость.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\"><b>Tabular<\/b><\/td>\n<td style=\"text-align: center\">SaaS<\/td>\n<td style=\"text-align: center\"><b>Нулевое администрирование<\/b><\/td>\n<td style=\"text-align: center\">N\/A (SaaS)<\/td>\n<td style=\"text-align: center\">Всех, кто хочет готовое решение “под ключ”.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\"><b>Apache Polaris<\/b><\/td>\n<td style=\"text-align: center\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\"><b>Databricks Unity Catalog<\/b><\/td>\n<td style=\"text-align: left\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<td style=\"text-align: left\">---<\/td>\n<\/tr>\n<\/table>\n<h4>Пример конфигурации Trino<\/h4>\n<p>Независимо от выбора каталога, конфигурация Trino остается простой и декларативной.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># etc\/catalog\/my_iceberg_catalog.properties\nconnector.name=iceberg\niceberg.catalog.type=rest\n# URI вашего REST-сервиса\niceberg.rest-catalog.uri=http:\/\/lakekeeper-service.default.svc.cluster.local:8181\/catalog\n# Путь к хранилищу по умолчанию\niceberg.rest-catalog.warehouse=s3:\/\/my-warehouse\/\n# Настройки безопасности (пример для OAuth2)\niceberg.rest-catalog.security=OAUTH2\niceberg.rest-catalog.oauth2.token=&lt;your-token&gt;<\/code><\/pre><h4>Заключение: Как сделать правильный выбор?<\/h4>\n<p>Выбор REST-каталога — это стратегическое решение, которое определит гибкость и масштабируемость вашей платформы данных.<\/p>\n<ul>\n<li>🥇 <b>Для Enterprise с фокусом на безопасность и Kubernetes<\/b>: <b>Lakekeeper<\/b> — очевидный лидер благодаря нативным K8s-интеграциям и мощным функциям безопасности.<\/li>\n<li>🥈 <b>Для сложных сред и федерации<\/b>: <b>Apache Gravitino<\/b> предлагает уникальные возможности по объединению разрозненных источников метаданных.<\/li>\n<li>🥉 <b>Для чистого DataOps<\/b>: <b>Project Nessie<\/b> остается лучшим в своем классе для реализации Git-подобных рабочих процессов.<\/li>\n<li>🚀 <b>Для быстрого старта и простоты<\/b>: <b>Denali<\/b> позволяет запустить производительный каталог с минимальными усилиями.<\/li>\n<li>💸 <b>Когда время дороже денег<\/b>: <b>Tabular<\/b> снимает всю головную боль по администрированию.<\/li>\n<\/ul>\n<p>Эпоха привязки к одному инструменту прошла, поэтому ждем Cedrus Catalog с батарейками и свистелками 🤪REST-каталоги дают свободу, а Trino, и не только — возможность этой свободой воспользоваться. Выбирайте оружие по своей задаче и стройте по-настоящему открытый и мощный Data Lakehouse 🏡<\/p>\n<p>ps: Конечно печатала ИИ, может не очень объективно давать оценки, но список хороший. Я ей помогал, как мог.<\/p>\n<p>Ссылки:<br \/>\n<a href=\"https:\/\/github.com\/projectnessie\/nessie\">https:\/\/github.com\/projectnessie\/nessie<\/a> – <a href=\"https:\/\/projectnessie.org\">https:\/\/projectnessie.org<\/a><br \/>\n<a href=\"https:\/\/github.com\/apache\/gravitino\">https:\/\/github.com\/apache\/gravitino<\/a> – <a href=\"https:\/\/gravitino.apache.org\">https:\/\/gravitino.apache.org<\/a><br \/>\n<a href=\"https:\/\/github.com\/apache\/amoro\">https:\/\/github.com\/apache\/amoro<\/a> – <a href=\"https:\/\/amoro.apache.org\">https:\/\/amoro.apache.org<\/a><br \/>\n<a href=\"https:\/\/github.com\/lakekeeper\/lakekeeper\">https:\/\/github.com\/lakekeeper\/lakekeeper<\/a> – <a href=\"https:\/\/docs.lakekeeper.io\">https:\/\/docs.lakekeeper.io<\/a><br \/>\n<a href=\"https:\/\/github.com\/apache\/polaris\">https:\/\/github.com\/apache\/polaris<\/a> – <a href=\"https:\/\/polaris.apache.org\">https:\/\/polaris.apache.org<\/a><br \/>\n<a href=\"https:\/\/github.com\/unitycatalog\/unitycatalog\">https:\/\/github.com\/unitycatalog\/unitycatalog<\/a> – <a href=\"https:\/\/unitycatalog.io\">https:\/\/unitycatalog.io<\/a><\/p>\n",
            "date_published": "2025-08-13T00:31:21+03:00",
            "date_modified": "2025-08-13T22:35:24+03:00",
            "tags": [
                "Data",
                "Programming",
                "Rest Catalog",
                "Trino"
            ],
            "image": "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-08-13-v-00.24.09.png",
            "_date_published_rfc2822": "Wed, 13 Aug 2025 00:31:21 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "263",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2025-08-13-v-00.24.09.png"
                ]
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171e)"
}