PostGraphile是什么?
PostGraphile是一个中间件,可以从PostgreSQL的模式构建GraphQL API。
PostGraphile的好处是减少工作量。
如果你已经在使用PostgreSQL数据库,那么只需要部署PostGraphile,就能够获得GraphQL的API。如果按照一般的开发方法来创建GraphQL API,就需要使用Apollo Server等工具来编写与数据库交互的代码,这需要开发人员自己来实现。而使用PostGraphile可以大大减少后端编程的工作量,节省开发时间。
PostGraphile的特点
从PostgreSQL的模式中自动生成GraphQL API
PostGraphile会自动从PostgreSQL架构生成GraphQL API,因此不需要对数据库架构和GraphQL架构进行双重管理,省去了这一繁琐步骤。
由於自動識別表關聯,因此在GraphQL中,我們可以輕鬆地用一個GQL查詢來查詢關聯數據,這也是GraphQL的一個亮點之一。
GraphQL的CRUD修改也将自动生成。另外,如果想要创建一个执行特殊处理的修改操作,可以先定义PostgreSQL存储过程,然后将其转换为GraphQL的修改操作。
当数据库模式发生更改时,GraphQL API也会自动跟随新的模式进行更新。
开源
PostGraphile是一个开源项目,任何人都可以免费使用。没有云供应商锁定的风险。你可以自己选择托管PostGraphile的服务器。
为了避免N+1问题,使用先读并解决之。
使用PostgreSQL作为后端的GraphQL经常会出现N+1问题。为了避免这个问题,可以使用DataLoader对请求进行批量处理,但是DataLoader并不总是最佳的方法。在PostGraphile中也可以使用DataLoader,但是PostGraphile还提供了预取功能,以生成更优化的SQL。
PostGraphile的性能不断改进,比Prisma快得多。
使用PostgreSQL的角色授权和行级安全来进行认可。
除了PostGraphile之外,构建GraphQL API的后端中间件还包括Hasura等选项。它们与PostGraphile的区别在于它们直接使用了PostgreSQL的授权功能作为授权系统。因此,您不需要学习中间件特有的ACL来进行授权。只需要学习传统的基于角色的授权(grant)和行级安全性,这也是一项可以应用于数据库管理技能的技能,这样您就可以避免学习成为一种浪费。
原生地以中文重新诠释GraphQL的订阅功能
在像聊天应用程序和Google文档这样的应用程序中,需要实时接收数据库更改事件。为了满足这种实时要求,GraphQL提供了一个订阅功能。PostGraphile支持GraphQL的订阅。它使用了PostgreSQL的LISTEN/NOTIFY来实现。
启动方法很简单。
PostGraphile以NPM包的形式提供。因此,即使没有Docker等环境,安装也很简单,可以启动PostGraphile。只需安装NPM,就可以通过以下一行命令启动:
npx postgraphile -c 'postgres://user:pass@localhost/mydb' --watch --enhance-graphiql --dynamic-json
当然可以在Docker上启动。
通过插件进行扩展
PostGraphile拥有插件机制,您可以根据需要向Graphile Engine添加功能。