ITPub博客

首页 > 数据库 > PostgreSQL > 微信如何扫码使用飞鸟盘口搭建数据Hasura和PostgreSQL盘搭建后端(上)

微信如何扫码使用飞鸟盘口搭建数据Hasura和PostgreSQL盘搭建后端(上)

原创 PostgreSQL 作者:NLigg 时间:2022-06-17 10:11:25 0 删除 编辑

  【TG_duoteJG】多特工作室杰哥duotee.com 版权所有 ,禁止转载
微信飞鸟Hasura是一个飞鸟新圣开源 GraphQL 盘口搭建引擎,它使用运营级飞鸟让您的数据库模式生成江湖GT GraphQL 和 REST API 端点。它支持旗舰28数据建模、实时搭建查询、大富事件编程、基于角色天恒的授权以及通过 GraphQL 运行盘口自定义数据对接业务逻辑的操作。

PostgreSQL是一种流行且功能强大的开源、面向对象的关系数据库,它提供与 Oracle 数据库和 Microsoft SQL Server 类似级别的企业级功能。据StackShare 称,PostgreSQL 被 Netflix、Instagram、Uber 和 Spotify 等大型国际公司使用。

在本文中,我们将介绍 Hasura 提供的主要功能,这些功能使其适用于开发和启动 Web 和移动应用程序的可扩展后端。我们还将了解如何利用 PostgreSQL 的特性来执行各种计算和分析任务,只使用 SQL 将正确的数据传递到您的前端,而无需编写自定义代码。

请注意,Hasura 也支持其他数据库,例如 Microsoft SQL Server、Amazon Aurora 和 Google BigQuery。我们将专注于 PostgreSQL,因为它对大多数企业和组织都是免费且可访问的。对MySQL的支持即将推出,如果您有兴趣。

如果您是 GraphQL 新手,请查看我们的教程以了解更多信息。让我们从为什么 PostgreSQL 可以成为您项目的完美选择开始。

为什么选择 PostgreSQL
与其他类型的数据库相比,关系数据库具有许多明显的优势,因为您可以使用严格的模式和表关系对数据进行建模。执行 JOIN 和执行 ACID 事务的能力是大多数行业中许多应用程序的主要要求。这些功能对于在任何给定时间促进业务数据的完整性和一致性至关重要。

与 MySQL 等其他关系型数据库相比,PostgreSQL 还具有以下优势:

您可以使用表继承对数据进行建模
对多用户环境有更好的并发控制(可以更高效地写入海量数据)
它具有容错性,不易损坏数据
它支持许多独特的数据类型,例如JSON和Spatial,这对于金融和研究相关的应用程序很有用
PostgreSQL 不仅仅是一个数据存储服务。它也是一个能够运行自定义函数和触发器以执行各种计算和分析任务的服务器。在 PostgreSQL 上运行逻辑更有效,因为它不需要编写自定义服务器代码。您可以使用以下方法在 PostgreSQL 中定义逻辑:

视图,一种可以帮助简化复杂查询的存储查询
函数和运算符,例如日期格式化、模式匹配、算术运算
Extensions,扩展 PostgreSQL 功能的插件(例如PostGIS)
Procedural Languages,用于编写用户定义函数、存储过程、触发器和扩展标准 SQL 的编程语言(例如PL/pgSQL)
当您在 PostgreSQL 中实现逻辑时,Hasura 能够通过 GraphQL 查询和突变将它们公开给前端应用程序。这是通过pgAdmin界面看到的 PostgreSQL 服务器的顶级视图:

学习利用 PostgreSQL 功能可以帮助您轻松解决复杂问题,而无需编写服务器代码。以下是您可以使用 PostgreSQL 执行哪些操作的几个示例:

例 1
您可以使用视图检索当前处于活动状态的在线用户列表:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-sql">CREATE <span style="color:#89ddff">OR</span> REPLACE VIEW <span style="color:#c3e88d">"public"</span><span style="color:#c792ea">.</span><span style="color:#c3e88d">"online_users"</span> AS
 SELECT users<span style="color:#c792ea">.</span>id<span style="color:#c792ea">,</span>
    users<span style="color:#c792ea">.</span>last_seen
   FROM users
  WHERE <span style="color:#c792ea">(</span>users<span style="color:#c792ea">.</span>last_seen <span style="color:#89ddff">>=</span> <span style="color:#c792ea">(</span><span style="color:#82aaff">now</span><span style="color:#c792ea">(</span><span style="color:#c792ea">)</span> <span style="color:#89ddff">-</span> <span style="color:#c3e88d">'00:00:30'</span>::interval<span style="color:#c792ea">)</span><span style="color:#c792ea">)</span><span style="color:#c792ea">;</span>
</code></span></span>

例 2

使用 PostGIS 功能,您可以列出位于 1,000 米半径内的所有商店。有关详细说明,请参阅此地理定位教程:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-sql">SELECT id<span style="color:#c792ea">,</span> name<span style="color:#c792ea">,</span> address<span style="color:#c792ea">,</span> geom
FROM Seattle_Starbucks
WHERE ST_DWithin<span style="color:#c792ea">(</span>geom<span style="color:#c792ea">,</span> ST_MakePoint<span style="color:#c792ea">(</span><span style="color:#89ddff">-</span><span style="color:#f78c6c">122.325959</span><span style="color:#c792ea">,</span><span style="color:#f78c6c">47.625138</span><span style="color:#c792ea">)</span>::geography<span style="color:#c792ea">,</span> <span style="color:#f78c6c">1000</span><span style="color:#c792ea">)</span><span style="color:#c792ea">;</span>
</code></span></span>


在下一节中,我们将重点介绍 Hasura 的功能。

什么是哈苏拉?
Hasura 是一个开源的实时 GraphQL 引擎,可为您的数据库生成 GraphQL 和 REST API 端点。它带有一个 Web 控制台,可让您:

为您的数据库模式建模
查看、插入、更新和删除数据
实施基于角色的访问控制策略
运行 GraphQL 查询和突变
创建 REST 端点
运行 SQL 代码
定义动作和触发器
Hasura 不支持用户身份验证,因此您需要将 Hasura 和您的前端应用程序与提供程序集成,例如:

文员
授权0
AuthGuardian
火力基地
魔法
也没有文件存储服务,您需要将您的应用程序与第三方存储提供商集成。如果您希望使用 Hasura 获得更多开箱即用的集成体验,您可以查看NHost,我们将在稍后的部署部分讨论。

在下一节中,我们将了解如何在本地和云中运行 Hasura。

启动 Hasura
有几种方法可以快速启动和运行 Hasura 实例:

1. 码头工人
推荐使用 Docker 在本地机器上运行 Hasura 来设置开发环境。使用此设置,API 请求没有速率限制,并且当您与 Hasura 的 Web 控制台交互时,没有 Internet 连接限制您的体验。您在本地执行的任何工作都可以轻松迁移到登台和生产环境。我们将在后面的“迁移和环境”部分讨论如何完成此操作。

假设您已经在您的机器上安装了Docker和Docker Compose,您可以按照本指南提供的说明在您的机器上运行 Hasura:

<span style="background-color:#292d3e"><span style="color:#bfc7d5"><code class="language-bash"><span style="color:#697098"># create new directory</span>
<span style="color:#82aaff">mkdir</span> my-hasura
<span style="color:#ffcb6b">cd</span> my-hasura
<span style="color:#697098"># download docker-compose.yml</span>
<span style="color:#82aaff">curl</span> https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml
<span style="color:#697098"># start hasura and postgresql container instances</span>
docker-compose up -d
</code></span></span>


您可以通过执行命令确认您的 Hasura 和 PostgreSQL 容器实例正在运行docker ps。您应该可以通过浏览器访问您的本地 Hasura 实例http://localhost:8080/console。要完成设置,您需要连接到 PostgreSQL 数据库,该数据库与 Hasura 一起作为容器运行。

连接数据库后,您将能够使用 Web 控制台创建表、定义关系并对数据执行 CRUD 操作。请注意,使用默认 Docker 设置时,您的数据是公开的。您可以通过简单地取消注释文件中以开头的行HASURA_GRAPHQL_ADMIN_SECRET并docker-compose.yml重新启动 Hasura 容器来保护它。

2. 云
一个更简单的入门方法是通过Hasura Cloud。这是开源 Hasura 的重新设计版本,专为可扩展性、可用性、安全性
和全球分发而设计。

Hasura Cloud 带有几个开源版本中没有的新功能,包括:

监控仪表板的错误、连接、订阅、慢查询和其他操作
GraphQL 缓存可提高服务器和客户端数据获取性能
防止恶意用户和 DDoS 攻击损害您的 API 的速率限制
运行测试套件的回归测试,例如根据生产实例检查开发实例中的更改
要开始使用 Hasura Cloud,您需要注册一个免费帐户。请注意,免费帐户的速率限制为每分钟 60 个请求。创建帐户后,您需要:

创建一个项目(Hasura 实例)
连接到 PostgreSQL 数据库
为方便起见,Hasura Cloud 提供一键式安装和连接到免费的 Heroku Cloud 数据库实例。您还可以连接到可通过 Internet 访问的任何其他 PostgreSQL 数据库。您可以使用许多 PostgreSQL 提供程序。其中包括云服务,例如:

AWS
天蓝色
数字海洋
TimescaleDB 云
裕嘉数据库
如果您需要更清楚地了解上述步骤,可以按照本指南进行操作。默认情况下,Hasura Cloud 使用管理员密钥限制来自公众的数据访问。我们将在接下来的部分中对此进行更多讨论。

哈苏拉特点
在本节中,我将简要概述 Hasura 提供的无需编写代码即可构建自定义后端的功能。

数据管理器
Hasura 带有一个可视化设计器,用于对数据层进行建模。这使您可以:

创建表
定义关系(一对一、一对多、多对多)
执行 CRUD 操作
创建视图
运行任何 SQL 语句
使用 PostgreSQL 的 DDL 约束实现数据验证
定义触发器
在列方面,Hasura 支持一组丰富的数据类型,其中包括:

整数、数字和浮点数
序列号和 UUID
字符和文本
日期和时间
布尔值
几何——例如线、框、路径、多边形和圆
JSON
您还可以使用CREATE TYPESQL 命令添加自定义类型。接下来,我们将看看 Hasura 中数据是如何被授权的。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70015022/viewspace-2901101/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
系统搭建开发盘定制可联系电报Telegram:duoteJG

注册时间:2022-03-10

  • 博文量
    15
  • 访问量
    7111