装饰公司做网站宣传的是个好处,哪家装修公司比较好的,最新免费网站收录提交入口,自己做网站平台背景
Hasura 是一个开源的 GraphQL 引擎#xff0c;它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API #xff0c;可以直接连接到现有的数据库#xff0c;并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。
下载安装
脚本…背景
Hasura 是一个开源的 GraphQL 引擎它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API 可以直接连接到现有的数据库并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。
下载安装
脚本地址https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml
[rootgraphql ~]# cd /opt/hasura/# 下载docker-compose.yml的编排脚本
[rootgraphql hasura]# curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml# 启动容器
[rootgraphql hasura]# docker compose up -d
[] Running 3/3✘ Container hasura-data-connector-agent-1 Error 0.1s ✔ Container hasura-postgres-1 Running 0.0s ✔ Container hasura-graphql-engine-1 Created 0.1s
dependency failed to start: container hasura-data-connector-agent-1 is unhealthy遇到的问题CPU does not support x86-64-v2
正常情况下经过上述的安装之后就可以正常使用Hasura了但是显然 docker compose 启动容器后显示了一条错误信息 dependency failed to start: container hasura-data-connector-agent-1 is unhealthy # 查看进程
[rootgraphql hasura]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48055c1c2732 hasura/graphql-data-connector:v2.33.0 /app/run-java.sh 29 seconds ago Restarting (127) 13 seconds ago hasura-data-connector-agent-1
8e5e0f4d8cd5 postgres:15 docker-entrypoint.s… 13 hours ago Up 13 hours 5432/tcp hasura-postgres-1# 查看报错容器的日志信息
[rootgraphql hasura]# docker logs 48055c1c2732
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2原因分析 日志里说明了错误的原因由于 CPU 架构问题。。 解决方法 那么就换个不同的版本吧但是从官方的发布日志里并没有找到需要的版本换个思路 data-connector-agent 似乎是新版本才加入的核心的 graphql-engine 能用就行就从网络博客中找到了以下 docker-compose.yml 的编排脚本
version: 3.6
services:postgres:image: postgres:15restart: alwaysvolumes:- db_data:/var/lib/postgresql/dataports:- 5432:5432environment:POSTGRES_PASSWORD: postgrespasswordgraphql-engine:image: hasura/graphql-engine:v2.24.0ports:- 8080:8080depends_on:- postgresrestart: alwaysenvironment:## postgres database to store Hasura metadataHASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespasswordpostgres:5432/postgres## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needsPG_DATABASE_URL: postgres://postgres:postgrespasswordpostgres:5432/postgres## enable the console served by serverHASURA_GRAPHQL_ENABLE_CONSOLE: true # set to false to disable console## enable debugging mode. It is recommended to disable this in productionHASURA_GRAPHQL_DEV_MODE: trueHASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log## uncomment next line to run console offline (i.e load console assets from server instead of CDN)# HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets## uncomment next line to set an admin secret# HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:db_data:遇到的问题不同版本的PostgreSQL数据目录不兼容
如果一开始用的是 PostgreSQL 15 而重新换新的 docker-compose.yml 的编排脚本里面是 PostgreSQL 14.X 执行时便会报出以下错误。 The data directory was initialized by PostgreSQL version 15, which is not compatible with this version 14.9 (Debian 14.9-1.pgdg1201). 原因分析 docker compose 会按名称重用卷这样就不会丢失数据。在更换 PostgreSQL 大版本时必须将数据迁移到新卷如果没有任何有用的数据则删除旧的卷。 解决方法 先删除容器再删除未被任何容器使用的本地卷 docker volume ls # 查看本地所有的卷 docker volume prune # 删除未被任何容器使用的本地卷
[rootgraphql hasura]# docker volume ls
DRIVER VOLUME NAME
local hasura_db_data# 这条命令并没有删除卷接着就用下一条语句直接删除
[rootgraphql hasura]# docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B[rootgraphql hasura]# docker volume rm hasura_db_data
hasura_db_data
/var/lib/docker/volumes# 再次尝试启动
[rootgraphql hasura]# docker compose up -d# 启动成功
[rootgraphql hasura]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5709437e2127 hasura/graphql-engine:v2.24.0 /bin/sh -c \${HGE_… About a minute ago Up About a minute (healthy) 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp hasura-graphql-engine-1
a41ec5127932 postgres:15 docker-entrypoint.s… About a minute ago Up About a minute 0.0.0.0:5432-5432/tcp, :::5432-5432/tcp hasura-postgres-1连接数据源
安装启动成功后可以打开浏览器访问控制台http://your-host:8080/console。
可以直接使用 Hasura 自带的 PostgreSQL 作为数据源进行操作。 Hasura 本身就是基于 PostgreSQL 进行开发的目前对其他的数据库也在做适配中不过如果要连接 MySQL 则需要使用其企业版。。 因此如果确实有连接 MySQL 的强需求则可以尝试下国产版的 Hasura 飞布。 GraphQL基本操作
关于 GraphQL 可以结合以下两个网址极速入门~~
GraphQL入门Countries GraphQL API 基本查询
query {countries{name,codephones}
}嵌套查询
query {countries{name,codephone,languages{code,name,native,rtl}}
}条件查询
{countries(filter : {code:{eq: AU} }) {namecodephonelanguages {codenamenativertl}}
}query getCountry {country(code: CN){name,codephones}
}别名
{countries(filter : {code:{eq: AU} }) {namecodephonelan: languages {codenamenativertl}}
}片段
{conflictOne: countries(filter: {code: {eq: PS}}) {...sameField}conflictTwo: countries(filter: {code: {eq: IL}}) {...sameField}
}fragment sameField on Country {codenamenativelan: languages {codenamenative}
}操作名称query
query getCounty {countries(filter : {code:{eq: CN} }) {namecodephonelanguages {codenamenativertl}}
}变量
query getCounty($code: String) {countries(filter: {code: {eq: $code}}) {namecodephonelanguages {codenamenativertl}}
}{code: AU
}默认变量
query getCounty($code: String CN) {countries(filter: {code: {eq: $code}}) {namecodephonelanguages {codenamenativertl}}
}指令includeskip
query getCounty($code: String, $withLanguages: Boolean!) {countries(filter: {code: {eq: $code}}) {namecodephonelanguages include(if: $withLanguages){codenamenativertl}states skip(if: $withLanguages){codename}}
}{code: CN,withLanguages: false
}小总结
Hasura 是一个强大的工具可以帮助开发人员快速构建现代应用程序的后端并提供实时数据推送和安全性其特性如下
快速开发Hasura提供了一个简单易用的界面可以快速定义和管理数据模型并自动生成GraphQL API。这样可以大大减少开发时间和工作量。实时数据推送Hasura支持实时数据推送和订阅功能可以实时更新客户端应用程序的数据。这对于需要实时更新的应用程序非常有用如聊天应用、实时博客等。安全性Hasura提供了强大的身份验证和授权功能可以轻松管理用户权限和访问控制。这样可以确保数据的安全性和保护用户隐私。扩展性Hasura可以轻松扩展以处理高负载和大规模应用程序。它支持水平扩展和负载均衡可以根据需要增加或减少资源。
当然作为一款后端低代码平台也推荐使用对标 Hasura 的国产替代产品飞布 飞布是可视化API开发平台对标 hasura 灵活开放、多语言兼容、简单易学能构建生产级 WEB API 让前端变全栈让后端不搬砖。 Reference
Hasura官方文档Hasura安装脚本Countries GraphQL API 源码Countries 数据集