建立强大的后端通常涉及对CRUD操作,授权和业务逻辑的广泛编码,这是一个耗时的过程。 本文探讨了Hasura和PostgreSQL流线后端开发如何以最少的编码工作启动更快的应用程序。
> Hasura,一种开源GraphQl引擎,会自动从数据库架构中生成GraphQL和REST API。 它支持数据建模,实时查询,事件编程,基于角色的授权以及通过GraphQl Action的自定义业务逻辑执行。
强大的开源关系数据库
> PostgreSQL提供与Oracle和Microsoft SQL Server相当的企业级功能,这使其成为大型应用程序的可靠选择。 Netflix和Spotify等公司的使用强调了其功能。尽管Hasura支持其他数据库,但由于其可访问性和开源性质,本文侧重于PostgreSQL。 MySQL支持是计划的。
本指南重点介绍了Hasura为Web和移动应用程序构建可扩展后端的功能。 它还展示了通过SQL访问的PostgreSQL的功能如何执行复杂的计算和分析,从而减少了自定义服务器端代码的需求。
>
键优点:
-
快速的后端开发: hasura的自动生成的API大大减少了编码时间。
- PostgreSQL功率:利用PostgreSQL的高级功能(表继承,并发控制,JSON/空间数据类型),以增强数据完整性和性能。
- 实时功能: Hasura的实时查询,事件编程和基于角色的授权创建高度响应的应用程序。
>
>易于部署:- >使用Docker进行本地开发或Hasura Cloud的部署,用于可扩展,安全,全球分布式应用程序,具有监视和缓存等功能。>
全面的Web控制台:- 在Hasura的直觉Web控制台中管理数据建模,CRUD操作和复杂的查询。 与身份验证和文件存储提供商集成。
>简化的工作流程:- 利用Hasura的迁移工具和环境分期进行开发与生产之间的无缝过渡,支持CI/CD。
为什么选择postgresql?
>
PostgreSQL(例如PostgreSQL)等关系数据库提供的优势比其他数据库类型(包括模式建模,加入操作和酸性交易)具有优势,这对数据完整性至关重要。 PostgreSQL进一步擅长:
-
表继承:有效的数据建模。
>
- 高级并发控制:处理高量数据在多用户环境中有效写入。
- 容忍和数据完整性:降低数据损坏风险。
>- 唯一的数据类型:支持JSON和空间数据类型,对各种应用程序有益。
> PostgreSQL还充当计算服务器,执行自定义功能和用于分析任务的触发器,从而消除了对单独的服务器端代码的需求。 这是使用以下方式实现的:
>视图:- 简化复杂的查询。>
函数和运算符:- >执行日期格式格式,模式匹配和算术操作。
>扩展:- 扩展了PostgreSQL的功能(例如,PostGis)。>
程序语言:- 写入用户定义的功能和存储过程(例如,PL/PGSQL)。
hasura通过GraphQl公开了此PostgreSQL逻辑,使其很容易访问前端应用程序。
> postgresql示例:
>>示例1(在线用户查看):>检索当前活动用户的视图:
>在1000米半径内查找商店:CREATE OR REPLACE VIEW "public"."online_users" AS
SELECT users.id, users.last_seen
FROM users
WHERE (users.last_seen >= (now() - '00:00:30'::interval));
登录后复制
Hasura是一种开源的实时GraphQl引擎,为您的数据库生成API。它的Web控制台允许:SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);
登录后复制
模型建模:
创建表格,定义关系并管理数据。
crud操作:- 执行创建,读取,更新和删除操作。>
基于角色的访问控制:>
- graphql/ret ensentpoint创建:为您的数据生成API。
- sql execution:运行自定义SQL查询。
- 操作和触发定义:自动化任务并处理事件。
-
注意:Hasura需要与单独的身份验证提供商(例如Auth0,Firebase)和文件存储服务集成。 NHOST提供了一个集成的解决方案。-
>启动hasura:>
-
> docker:建议用于本地开发,提供简单的设置和无速率限制。
>
-
> hasura cloud:用可扩展性,安全性和全局分布(包括监视和缓存功能)简化了部署。 有限制的免费层。
> hasura功能(详细概述):>
- 数据管理器: Visual模式设计器,用于创建表,定义关系和管理数据类型(包括JSON和自定义类型)。
授权:- 基于角色的访问控制,具有插入,选择,更新和删除操作的粒状权限。
查询:- 直接在控制台内执行各种GraphQl查询(简单,嵌套,聚合,过滤)。
突变:- 执行插入,UPSERT,更新和删除操作,并支持交易。
订阅:- >使用WebSockets上的GraphQL订阅实现实时数据更新。
远程模式:- 与数据和逻辑的第三方API集成
动作:
使用任何编程语言通过Webhooks执行自定义业务逻辑。-
基于数据库事件(插入,更新,删除),>事件触发器:调用Webhooks。 支持手动调用。
-
计划的触发器:通过webhooks定期运行任务(CRON)或一次(一次性)。
-
迁移和环境:
使用数据库和hasura元数据的迁移文件管理模式更改,支持CI/CD Workflows。
- >部署选项:
> hasura云:最简单的生产部署。
>
>- 外部托管: Heroku,数字海洋,渲染,Azure,Kubernetes,AWS(更复杂)。
> nhost:全in-Baas解决方案,包括PostgreSQL,Hasura,Authentication和Storage。
- >
摘要:- Hasura和PostgreSQL为快速后端开发提供了强大的组合。 减少的编码工作,实时功能和鲁棒功能使其成为构建可扩展和可维护应用程序的引人注目的解决方案。 虽然在各个方面都不像某些替代方案那样丰富,但其易用性,专注于性能和开源性质是显着的优势。
>
常见问题(常见问题解答):(提供的常见问题解答已经全面且写得很好;不需要修改。)
以上是如何使用Hasura和PostgreSQL建立后端的详细内容。更多信息请关注PHP中文网其他相关文章!