关于graph:GraphQL-快速入门4GraphQL-组件

【注】本文译自: GraphQL - Quick Guide (tutorialspoint.com)    本章探讨不同的 GraphQL 组件以及它们互相通信的形式。整个应用程序组件能够辨别如下: 服务器端组件客户器端组件 服务端组件    GraphQL 服务器形成了服务器端的外围组件,并容许解析来自 GraphQL 客户端应用程序的查问。Apollo Server 是最罕用的 GraphQL 标准实现。其余服务器编程组件包含以下内容: 序号服务器要点和形容1模式(Schema) GraphQL 模式是任何 GraphQL 服务器实现的核心,它形容了连贯到它的客户端可用的性能。2查问(Query) GraphQL 查问是从数据库或遗留 API 检索数据的客户端利用申请。3解析器(Resolver) 解析器提供了将 GraphQL 操作转换为数据的指令。他们通过定义解析器函数将查问解析为数据。客户端组件    上面给出的是客户端组件: 序号工具和形容1GraphiQL 基于浏览器的界面,用于编辑和测试。2ApolloClient 构建 GraphQL 客户端应用程序的最佳工具。1GraphiQL基于浏览器的界面,用于编辑和测试 GraphQL 查问和变更。2ApolloClient构建 GraphQL 客户端应用程序的最佳工具。与所有 javascript 前端集成良好。     下图显示了客户端-服务器架构。Web 服务器建设在 NodeJs 和 Express 框架之上。ReactJS 应用程序(应用 Apollo 客户端库构建)或 GraphiQL 浏览器应用程序向 Apollo GraphQL 服务器发出请求。查问将依据服务器中定义的模式进行解析和验证。如果申请模式通过验证,则将执行关联的解析器函数。解析器将蕴含从 API 或数据库获取数据的代码。

September 28, 2021 · 1 min · jiezi

关于graph:深入The-Graph数据库

The Graph网络对Web3的查问层和API层进行了去中心化,打消了DApp开发者目前面临的取舍难题:到底是开发一个高性能利用,还是开发一个齐全去中心化的利用。目前,开发者能够在本人的基础架构上运行一个Graph节点,也能够在咱们的托管服务上开发一个。其中,开发者构建和部署从Web3数据源提取数据并为其编制索引的子图。目前曾经有许多当先的以太坊我的项目创立了子图,包含Uniswap、ENS、DAOstack、Synthetix和Moloch等。在The Graph网络中,任何索引器都可能通过抵押Graph代币(GRT)参加到网络中,并在提供查问服务的过程赚取费用和通货膨胀处分。用户则依照应用次数进行付费,应用日益增长的索引器,此做法证实了供需法则也实用于该协定提供的服务。 The Graph 简略了解相当于是区块链下面的搜索引擎,爬取区块链上的区块数据, 而后依据用户制订的规定进行搜寻,不便各个DApp查问。 本文将深刻The Graph的数据库,看看The Graph是怎么实现数据存储的。 The Graph表构造 下面是The Graph的数据库构造。 subgraph是个外围数据库,外面寄存着所有子图的根底信息;每当创立一个新的子图的时候, 就会有一个新的数据库产生,比方上图中sgd1是給第一个子图的数据库, 数据库名字按序号递增。Subgraph数据库存储每次新创建的subgraph会寄存在上面表中 新创建subgraph的时候会有些的数据库生成, 专门用来寄存该subgraph外面定义的schema。 如果上传的subgraph的文件没有发生变化, 则不会从新生成新的数据库。 以下是一些外围的表: subgraph: 寄存subgraph的根本信息,比方名字,创立工夫, block range等;subgraph_deployment:寄存subgraph的布署信息以及和区块链的同步信息, 比方最早和最迟的区块号等;subgraph_error: 子图在布署过程中碰到的一些谬误。每个subgraph的存储 每个subgraph本人的数据库外面,寄存着子图外面schema entity对应的表。 每个子图定义的entity对应一张表,表构造对应entity的构造。 比方上面这个entity的定义: type Token @entity { # token address id: ID! # mirrored from the smart contract symbol: String! name: String! decimals: BigInt! # used for other stats like marketcap totalSupply: BigInt! # token specific volume tradeVolume: BigDecimal! tradeVolumeUSD: BigDecimal! untrackedVolumeUSD: BigDecimal! # transactions across all pairs txCount: BigInt! # liquidity across all pairs totalLiquidity: BigDecimal! # derived prices derivedETH: BigDecimal # derived fields tokenDayData: [TokenDayData!]! @derivedFrom(field: "token") pairDayDataBase: [PairDayData!]! @derivedFrom(field: "token0") pairDayDataQuote: [PairDayData!]! @derivedFrom(field: "token1") pairBase: [Pair!]! @derivedFrom(field: "token0") pairQuote: [Pair!]! @derivedFrom(field: "token1")}对应的表构造 ...

August 31, 2021 · 1 min · jiezi