Subsquid
Что такое Subsquid?
Subsquid — это структура узлов запросов для блокчейнов на основе субстрата. Проще говоря, Subsquid можно рассматривать как инструмент ETL с включенным сервером GraphQL.
Многоуровневый подход Subsquid направлен на предварительную обработку и декодирование необработанных данных цепочки и их сохранение для облегчения доступа узлам запроса, обеспечивая повышенную производительность по сравнению с прямыми вызовами RPC.
Архив Squid может постоянно синхронизировать необработанные данные с цепочкой, и, просто определив пользовательскую модель данных и обработчики событий в проекте Squid, можно выполнять сложные запросы поверх нее.
Например , предложения расходов Kusama Treasury с истекшим сроком действия удаляются из состояния блокчейна Kusama, поэтому запрос предложений годовой давности будет проблематичным. При традиционном подходе необходимо было бы отслеживать эволюцию состояния, последовательно применяя казначейские события и внешние факторы в каждом историческом блоке.
Обзор
Subsquid использует многоуровневый подход, который отделяет прием необработанных данных от обработки и представления данных.
Это очень полезно для подавляющего большинства разработчиков, поскольку добавляет уровень абстракции, заботясь о приеме и синхронизации данных, а также предоставляя разработчикам для обработки декодированные сущности цепочки субстратов (события и внешние элементы, а также целые блоки).
Конвейер данных Squid состоит из двух основных компонентов:
- Архив: источник данных, может совместно использоваться несколькими узлами запроса.
- Squid: часть процесса преобразования данных
Архив можно рассматривать как краулер блокчейна, конвейер данных, который систематически просматривает блокчейны и управляется децентрализованной сетью операторов архивных узлов Squid с целью индексации блокчейна.
В контексте узла запроса Squid процессор отвечает за получение данных из архива, их преобразование и сохранение в базе данных.
Сервер GraphQL — это отдельный веб-сервер, предоставляющий API GraphQL для сущностей в хранилище данных.
Архивы не следует путать с узлами архива, хотя концепция отчасти похожа, поскольку оба сохраняют полную историю блокчейна без какой-либо обрезки. Разница в том, что наши Архивы — это специальные сервисы с конкретными конечными точками, предназначенные для извлечения данных.
Архив отвечает за непрерывный прием необработанных данных из блокчейна, обработку блоков и сохранение их в базе данных вместе с событиями и внешними данными для упрощения доступа через API-интерфейсы GraphQL. Его основная цель — предоставлять услуги, быть высокопроизводительным источником данных более высокого уровня для Squid(ов).
Get AMBASSADOR’s stories in your inbox
Join Medium for free to get updates from this writer.
Архив включает в себя следующие компоненты и сервисы:
- Архив субстрата
- База данных Postgres
- Хранилище данных Redis
- Служба статуса
- Шлюз GraphQL
В конечном счете, Substrate Archive извлекает информацию о блоках, событиях и внешних элементах, а затем записывает их в базу данных Postgres, а обновления состояния сохраняются в базе данных Redis «ключ-значение». Архивные данные доступны для клиентских запросов благодаря серверу GraphQL, работающему как часть каждого узла Squid Archive.
Архив может совместно использоваться несколькими Squid, что означает возможность сегментировать способ представления данных в зависимости от потребностей пользователя без необходимости дублировать источник данных.
Чтобы запустить свой собственный архив для определенного блокчейна, перейдите на нашу специальную страницу по этой теме.
Squid — это конвейер для преобразования и представления данных блокчейна Substrate. Это состоит из:
- Процессор: каждый узел имеет один процессор, но может иметь несколько, если он подключен к нескольким цепочкам .
- База данных: база данных PostgreSQL, в которой хранятся обработанные данные .
- Сервер GraphQL: каждый узел запросов имеет шлюз для представления обработанных данных .
Squid заменяет прямой доступ к узлу gRPC более производительными вызовами API к шлюзам архива, позволяя сократить пропускную способность и быстро синхронизировать API с историческими данными в сети. Его можно запустить локально, на сервере или развернуть в облаке с помощью нашего решения SaaS.
Благодаря фреймворку Subsquid можно:
- определить схему базы данных, тип данных и определения сущностей
- эффективно преобразовывать и хранить данные цепочки
- представить его благодаря включенному серверу GraphQL
Subsquid предоставляет разработчикам высокоуровневую схему, подобную GraphQL, и инструменты codegen для моделирования данных блокчейна с помощью Entities. Одним из преимуществ здесь является удаление стандартного кода для распаковки. Более значительным преимуществом, безусловно, является устранение некорректных типов данных из-за неправильного декодирования и отсутствия параметров.
Что еще более важно, при обработке неструктурированных данных из событий формат данных может меняться от одного блока к другому из-за обновлений во время выполнения. Без безопасности типов и автоматизации, гарантированных генератором типов, управление этими изменениями было бы кошмаром.
Процессор извлекает данные из конечной точки архива и выполняет операции преобразования-загрузки, сохраняя их в базе данных. Логика преобразования-загрузки полностью настраиваема и определяется разработчиком.
Как только схема и сопоставления настроены, а узел запущен, он начнет непрерывное сканирование блокчейна, обрабатывая события с помощью обработчиков событий и обновляя объекты в базе данных.
Запросы API обрабатываются сервером GraphQL путем получения данных из базы данных процессора. Фильтрация OpenCRUD, отношения сущностей, разбиение на страницы и текстовые запросы поддерживаются API по умолчанию.







