Современные стартапы по индексации данных блокчейна сталкиваются с рядом задач, среди которых:
С распространением блокчейн-технологий объем данных в блокчейне существенно вырос. Причина — рост числа пользователей, ведь каждая транзакция добавляет новые данные. Кроме того, сфера применения блокчейна расширилась: от простых переводов, как в случае с биткоином, до сложных решений с бизнес-логикой в смарт-контрактах. Такие контракты генерируют большие объемы данных, что усложняет и увеличивает блокчейн. Со временем это приводит к еще большей сложности и масштабам блокчейна.
В этой статье мы рассмотрим поэтапную эволюцию архитектуры Footprint Analytics, чтобы показать, как стек Iceberg-Trino решает задачи работы с ончейн-данными.
Footprint Analytics индексировал данные 22 публичных блокчейнов, 17 NFT-маркетплейсов, 1900 GameFi-проектов и более 100 000 NFT-коллекций в слой семантической абстракции данных. Это самое комплексное хранилище данных блокчейна в мире.
Блокчейн-данные включают более 20 миллиардов строк записей финансовых транзакций, которые часто запрашиваются аналитиками. Это отличается от логов поступления в традиционных хранилищах данных.
За последние месяцы мы провели три крупных обновления, чтобы соответствовать растущим бизнес-требованиям:
На старте Footprint Analytics мы использовали Google Bigquery как движок хранения и обработки запросов. Bigquery — высокоэффективный продукт: он очень быстрый, удобный в использовании, поддерживает динамические вычисления и гибкий синтаксис UDF, что позволяет решать задачи максимально оперативно.
Однако у Bigquery есть ряд недостатков.
Поэтому мы решили рассмотреть альтернативные архитектурные решения.
Мы заинтересовались OLAP-решениями, которые стали очень популярны. Главное преимущество OLAP — быстрый отклик на запросы: результаты по большим объемам данных возвращаются за доли секунды, а также поддерживаются тысячи параллельных запросов.
Для тестирования мы выбрали одну из лучших OLAP-баз данных — Doris. Движок показал хорошие результаты, но вскоре появились новые проблемы:
В результате Doris не подошел для всей цепочки обработки данных в продакшене. Мы использовали Doris как OLAP-базу данных для решения части задач, предоставляя быстрый и масштабируемый движок запросов.
Однако заменить Bigquery на Doris полностью не удалось, поэтому мы периодически синхронизировали данные из Bigquery в Doris, используя Doris только как движок запросов. Этот процесс сопровождался рядом проблем: при высокой нагрузке на OLAP-движок запросы на запись накапливались, что замедляло процесс и иногда делало синхронизацию невозможной.
Мы пришли к выводу, что OLAP решает только часть задач, но не может быть универсальным решением для Footprint Analytics, особенно в части обработки данных. Наша задача оказалась сложнее, и OLAP как отдельный движок запросов не был достаточен.
В архитектуре Footprint Analytics 3.0 мы полностью обновили базовую структуру. Вся архитектура была переработана: хранение, вычисления и запросы разделены на три независимых компонента. Мы учли опыт предыдущих версий Footprint Analytics и лучшие практики крупных data-проектов — Uber, Netflix, Databricks.
Мы сфокусировались на data lake — новом типе хранилища для структурированных и неструктурированных данных. Data lake идеально подходит для хранения ончейн-данных, так как их форматы варьируются от неструктурированных до структурированных, что характерно для Footprint Analytics. Мы рассчитывали, что data lake решит задачу хранения и будет поддерживать ведущие вычислительные движки (Spark, Flink), чтобы интеграция с разными обработчиками была простой по мере развития Footprint Analytics.
Iceberg интегрируется со Spark, Flink, Trino и другими вычислительными движками, позволяя выбирать оптимальный инструмент для каждой задачи. Например:
С помощью Iceberg мы решили вопросы хранения и вычислений, после чего перешли к выбору движка запросов. Вариантов было немного, мы рассматривали:
Ключевым требованием была совместимость будущего движка запросов с нашей архитектурой.
Мы выбрали Trino, который отлично поддерживает Iceberg, а команда оперативно реагирует на обращения: после обращения баг был исправлен на следующий день и вошел в релиз на следующей неделе. Это был оптимальный выбор для Footprint, где важна скорость внедрения изменений.
Определившись с выбором, мы протестировали связку Trino + Iceberg, чтобы убедиться, что она соответствует нашим требованиям. Результаты превзошли ожидания — запросы выполнялись очень быстро.
Учитывая, что Presto + Hive долгое время считались наименее эффективным вариантом среди OLAP-решений, связка Trino + Iceberg показала себя с лучшей стороны.
Результаты наших тестов:
Кейс 1: объединение больших наборов данных
Таблица 800 ГБ (table1) объединяется с таблицей 50 ГБ (table2), выполняются сложные бизнес-вычисления
Кейс 2: distinct-запрос по большой таблице
Тестовый SQL: select distinct(address) from table group by day

Связка Trino+Iceberg примерно в 3 раза быстрее Doris при одинаковой конфигурации.
Кроме того, Iceberg поддерживает такие форматы, как Parquet, ORC и другие, что позволяет эффективно сжимать и хранить данные. Таблицы в Iceberg занимают около 1/5 места по сравнению с другими хранилищами. Размер таблицы в трех базах данных следующий:

Примечание: приведенные тесты — отдельные примеры из реального продакшена и приведены для справки.
・Результаты обновления
Тесты производительности подтвердили эффективность архитектуры, и на миграцию ушло около двух месяцев. Вот схема архитектуры после обновления.

С момента запуска в августе 2021 года команда Footprint Analytics провела три архитектурных обновления менее чем за полтора года — благодаря стремлению внедрять лучшие технологии баз данных для крипто-сообщества и последовательной реализации обновлений инфраструктуры и архитектуры.
Обновление архитектуры Footprint Analytics 3.0 дало пользователям новый опыт и позволило получать инсайты в различных сценариях и областях применения: