Nessie — сервис для отслеживания изменений и управления версиями данных. Разработан на базе решения с открытым исходным кодом Project Nessie от Apache Software Foundation и включает интеграцию с форматом таблиц Iceberg.
В Nessie используются операции, аналогичные методам Git: ветвление, тегирование, атомарные коммиты.
Метаданные Nessie включают данные о таблицах, схемах, партициях, манифесты файлов, версии метаданных (снапшоты).
Преимущества Nessie
Масштабируемость: поддержка миллионов таблиц, тысяч коммитов в секунду благодаря реализации в распределенных хранилищах. Каждая таблица, в свою очередь, может содержать миллионы файлов.
Контроль версий: журнал коммитов фиксирует каждый коммит, поддерживает ветки и теги, обеспечивает полную трассируемость и возможность мгновенного отката к предыдущей версии без копирования файлов.
Разделение ответственности: Nessie управляет транзакциями и историей изменений и хранит только ссылки на версии таблиц Iceberg, а сами метаданные таблиц остаются в объектном хранилище. Это позволяет масштабировать журнал коммитов независимо от объема файлов.
Основные понятия Nessie
Основные понятия Nessie аналогичны тем, что используются в системах управления версиями кода, например в Git.
- Коммит (commit)
- Хэш (hash)
- Мультитабличная транзакция (multi-table transaction)
- Ветка (branch)
- Тег (tag)
- Мердж (merge)
Атомарное изменение группы файлов с данными.
Идентификатор коммита.
Коммит, который включает изменения файлов с данными, содержащихся во множестве таблиц.
Обозначенное именем указание на коммит. Новый коммит в ветку автоматически обновляет ее до нового коммита.
Обозначенное именем указание на коммит. Не обновляется автоматически.
Объединение двух коммитов. Как правило, означает применение изменений из ветки-источника к другой ветке.
Больше информации на сайте проекта Nessie