Docs
Поиск⌘ K
  • Главная страница
  • О The Graph
  • Поддерживаемые сети
  • Protocol Contracts
  • Субграфы
    • Субпотоки
      • Token API
        • Hypergraph
          • AI Suite
            • Индексирование
              • Ресурсы
                Субграфы > How-to Guides

                5 минуты

                Агрегируйте данные с помощью композиции субграфов

                Используйте композицию субграфов для ускорения разработки. Создайте базовый субграф с основными данными, а затем разрабатывайте дополнительные субграфы на его основе.

                Optimize your Subgraph by merging data from independent, source Subgraphs into a single composable Subgraph to enhance data aggregation.

                Введение

                Composable Subgraphs enable you to combine multiple Subgraphs’ data sources into a new Subgraph, facilitating faster and more flexible Subgraph development. Subgraph composition empowers you to create and maintain smaller, focused Subgraphs that collectively form a larger, interconnected dataset.

                Преимущества композиции

                Композиция субграфов — это мощная функция для масштабирования, позволяющая вам:

                • Повторно использовать, смешивать и комбинировать существующие данные
                • Оптимизировать разработку и запросы
                • Использовать несколько источников данных (до пяти исходных субграфов)
                • Ускорить синхронизацию вашего субграфа
                • Обрабатывать ошибки и оптимизировать повторную синхронизацию

                Обзор архитектуры

                Настройка для этого примера включает два субграфа:

                1. Исходный субграф: отслеживает данные событий как объекты.
                2. Зависимый субграф: использует исходный субграф в качестве источника данных.

                Вы можете найти их в директориях source и dependent.

                • Исходный субграф — это базовый субграф для отслеживания событий, который записывает события, генерируемые соответствующими контрактами.
                • Зависимый субграф ссылается на источник субграфа как на источник данных, используя объекты из источника в качестве триггеров.

                В то время как исходный субграф является стандартным субграфом, зависимый субграф использует функцию композиции субграфов.

                Предварительные требования

                Source Subgraphs

                • All Subgraphs need to be published with a specVersion 1.3.0 or later (Use the latest graph-cli version to be able to deploy composable Subgraphs)
                • See notes here: https://github.com/graphprotocol/graph-node/releases/tag/v0.37.0⁠
                • Immutable entities only: All Subgraphs must have immutable entities when the Subgraph is deployed
                • Pruning can be used in the source Subgraphs, but only entities that are immutable can be composed on top of
                • Source Subgraphs cannot use grafting on top of existing entities
                • Aggregated entities can be used in composition, but entities that are composed from them cannot performed additional aggregations directly

                Composed Subgraphs

                • You can only compose up to a maximum of 5 source Subgraphs
                • Composed Subgraphs can only use datasources from the same chain
                • Nested composition is not yet supported: Composing on top of another composed Subgraph isn’t allowed at this time
                • Aggregated entities can be used in composition, but the composed entities on them cannot also use aggregations directly
                • Developers cannot compose an onchain datasource with a Subgraph datasource (i.e. you can’t do normal event handlers and call handlers and block handlers in a composed Subgraph)

                Additionally, you can explore the example-composable-subgraph⁠ repository for a working implementation of composable Subgraphs

                Начнем

                The following guide provides examples for defining 3 source Subgraphs to create one powerful composed Subgraph.

                Специфические особенности

                • Чтобы сделать этот пример простым, все исходные субграфы используют только блок-обработчики. Однако в реальной среде каждый исходный субграф будет использовать данные из разных смарт-контрактов.
                • Приведенные ниже примеры показывают, как импортировать и расширять схему другого субграфа для улучшения его функциональности.
                • Каждый исходный субграф оптимизирован для работы с конкретным объектом.
                • Все перечисленные команды устанавливают необходимые зависимости, генерируют код на основе схемы GraphQL, строят субграф и деплоят его на ваш локальный экземпляр Graph Node.

                Шаг 1. Развертывание исходного субграфа для времени блока

                Этот первый исходный субграф вычисляет время блока для каждого блока.

                • Он импортирует схемы из других субграфов и добавляет объект block с полем timestamp, представляющим время, когда был добыт каждый блок.
                • Он слушает события блокчейна, связанные с временем (например, метки времени блоков), и обрабатывает эти данные для обновления объектов субграфа соответствующим образом.

                Чтобы развернуть этот субграф локально, выполните следующие команды:

                1npm install2npm run codegen3npm run build4npm run create-local5npm run deploy-local

                Шаг 2. Развертывание исходного субграфа для стоимости блока

                Этот второй исходный субграф индексирует стоимость каждого блока.

                Ключевые функции

                • Он импортирует схемы из других субграфов и добавляет объект block с полями, связанными со стоимостью.
                • Он отслеживает события блокчейна, связанные с затратами (например, плата за газ, стоимость транзакций), и обрабатывает эти данные для соотвествующего обновления объектов субграфа.

                Чтобы развернуть этот субграф локально, выполните те же команды, что и выше.

                Шаг 3. Определите размер блока в исходном субграфе

                Этот третий исходный субграф индексирует размер каждого блока. Чтобы развернуть этот субграф локально, выполните те же команды, что и выше.

                Ключевые функции

                • Он импортирует существующие схемы из других субграфов и добавляет объект block с полем size, представляющим размер каждого блока.
                • Он слушает события блокчейна, связанные с размерами блоков (например, хранение данных или объем), и обрабатывает эти данные для обновления объектов суграфа соответствующим образом.

                Шаг 4. Объединение в субграфе для статистики блоков

                This composed Subgraph combines and aggregates the information from the source Subgraphs above, providing a unified view of block statistics. To deploy this Subgraph locally, run the same commands as above.

                Примечание:

                • Любое изменение в исходном субграфе, скорее всего, приведет к созданию нового идентификатора развертывания.
                • Обязательно обновите идентификатор развертывания в адресе источника данных в манифесте субграфа, чтобы воспользоваться последними изменениями.
                • Все исходные субграфы должны быть развернуты до того, как будет развернут композиционный субграф.

                Ключевые функции

                • Он предоставляет объединенную модель данных, которая охватывает все соответствующие метрики блоков.
                • It combines data from 3 source Subgraphs, and provides a comprehensive view of block statistics, enabling more complex queries and analyses.

                Основные выводы

                • Этот мощный инструмент масштабирует разработку ваших субграфов и позволяет комбинировать несколько субграфов.
                • The setup includes the deployment of 3 source Subgraphs and one final deployment of the composed Subgraph.
                • Эта функция открывает возможности масштабируемости, упрощая как разработку, так и эффективность обслуживания.

                Дополнительные ресурсы

                • Check out all the code for this example in this GitHub repo⁠.
                • Чтобы добавить продвинутые функции в ваш субграф, ознакомьтесь с продвинутыми функциями субграфа.
                • Чтобы узнать больше об агрегациях, ознакомьтесь с разделом Временные ряды и агрегации.
                ⁠Редактировать на GitHub⁠

                Выставление счетовБыстрая и простая отладка субграфа с использованием форков
                На этой странице
                • Введение
                • Преимущества композиции
                • Обзор архитектуры
                • Предварительные требования
                • Source Subgraphs
                • Composed Subgraphs
                • Начнем
                • Специфические особенности
                • Шаг 1. Развертывание исходного субграфа для времени блока
                • Шаг 2. Развертывание исходного субграфа для стоимости блока
                • Шаг 3. Определите размер блока в исходном субграфе
                • Шаг 4. Объединение в субграфе для статистики блоков
                • Основные выводы
                • Дополнительные ресурсы
                The GraphСтатусТестовая сетьБрундовые ресурсыФорумБезопасностьПолитика конфиденциальностиУсловия обслуживания