飞布产品手册
官网B站Github
V1.0
V1.0
  • 序言
  • 更新日志
  • 产品简介
    • 什么是飞布?
    • 飞布的价值
    • 飞布的优势
    • 应用场景
    • 数据安全
    • 产品案例
  • 快速入门
    • 初识飞布
    • 快速上手
      • 图文版
    • 词汇概览
    • 工作原理
  • 基础-可视化开发
    • 概览
      • CLI
      • 控制台
        • 主功能区
    • 数据源
      • 数据库
        • 数据库连接
          • 高级设置
        • 数据建模
        • 数据预览
      • REST 数据源
      • GraphQL 数据源
      • 消息队列
    • API构建
      • 可视化构建
        • API规范
      • 批量新建
      • HTTP请求流程指令
      • 使用API
      • 实时查询
      • 实时推送
      • 关联查询
      • 数据缓存
      • 常见用例
    • 身份验证
      • 授权码模式
        • 身份验证(废弃)
      • 隐式模式
      • 数据权限控制
    • 身份授权
      • RBAC
        • 授权与访问控制(废弃)
      • 接口权限控制
      • 开放API
    • 文件存储
      • S3配置及使用
      • 文件管理面板
      • 高级配置:profile
  • 进阶-钩子机制
    • 钩子概览
    • 启动钩子
      • Node钩子
      • Golang钩子
      • Python钩子
      • Java钩子
    • OPERATION钩子
    • 身份验证钩子
    • graphql钩子
    • 函数钩子
      • functions(废弃)
      • proxys(废弃)
    • 文件上传钩子
    • 内部调用
  • 使用-部署上线
    • 部署运维
      • 手动部署
        • 流水线部署(废弃)
      • Docker部署
      • 飞布云
    • 接口安全
      • CSRF token 保护
      • 跨域访问
    • 客户端SDK
      • 微信小程序SDK
      • Flutter SDK
      • uniapp SDK
  • 环境准备
    • 文件存储 S3
    • 身份认证 OIDC
    • NodeJs环境
  • 实战案例
    • Fireboom Admin
      • 管理后台-refine(废弃)
    • 实时TODO LIST
    • 语音版ChatGPT
    • AI魔法师实战
    • 阿里低代码引擎
  • 路线图
  • 常见问题
  • 核心概念
    • GraphQL
    • 超图
    • 请求时序图
    • 服务端Operation
  • 二次开发
    • 钩子规范
      • 钩子规范bak
    • 模板规范
    • 自定义模板
    • 其它参考
由 GitBook 提供支持
在本页
  • 原理浅析
  • 查询引擎
  • 内省引擎
  • 迁移引擎
  • 支持数据库

这有帮助吗?

在GitHub上编辑
  1. 基础-可视化开发
  2. 数据源

数据库

上一页数据源下一页数据库连接

最后更新于1年前

这有帮助吗?

绝大多数应用都离不开数据库,本章将介绍如何使用飞布连接数据库,并从中构建API。

飞布使用Prisma ORM连接数据库,支持SQLite, MySQL, PostgreSQL, SQL Server或MongoDB。

飞布提供了友好的界面,无需借助三方工具,就能完成数据建模。你也可以连接现有数据库开发API。飞布CLI还可以生成迁移文件,你可以直接编辑并进行数据库版本控制。

原理浅析

飞布底层封装了,利用prisma的内省能力[内省引擎],将数据库中的表结构内省成Prisma Model以及GraphQL Schema,并利用prisma的查询能力[查询引擎]执行GraphQL Opeartion操作数据。此外,飞布还利用prisma的迁移能力[迁移引擎],实现了数据建模功能。

Prisma ORM一般指的是基于Ts对Prisma Engine的封装,而飞布只使用了,未使用。

了解更多,请前往""。

查询引擎

Prisma查询引擎是一个常驻WEB SERVER,用于执行GraphQL Operation(通过HTTP协议或NODE API)。本质上是将GraphQL Operation转换成SQL语句,发送至数据库执行,并将查询结果拼装成JSON响应返回。下图是Prisma Client调用查询引擎的原理图。

Prisma Client用TS函数封装了GraphQL Operation。下图的findMany,在飞布中对应如下GraphQL Operation。

# todo_是命名空间,代表数据库名称
# Todo是数据库表名
query MyQuery {
  todo_findManyTodo {
    completed
    createdAt
    id
    title
  }
}

飞布GraphQL Operation和Prisma Client函数签名的对应规则为:

GraphQL Operation=[命名空间]+函数签名+[表名]

Prisma 查询引擎支持函数如下:

查询方法:

  • findFirst:返回列表中符合条件的第一条记录。

  • findMany:返回记录列表。

  • findUnique:根据主键或唯一键查询一条记录。

  • aggregate:聚合数据,包括avg、count、sum、min、max。

变更方法:

  • createOne:创建一条记录,对应sql中的insert。

  • deleteMany:批量删除记录,对应sql中的delete。

  • deleteOne:删除一条记录,对应sql中的delete。

  • updateMany:更新多条记录,对应sql的update。

  • updateOne:更新一条记录,对应sql的update。

  • upsertOne:更新或插入一条记录。

内省引擎

Prisma内省引擎是一个二进制命令行,用于内省数据库,获得数据库schema,并映射成prisma schema。

对应prisma db pull命令。

迁移引擎

Prisma迁移引擎是一个二进制命令行,用于设计或迁移数据库,本质上是将prisma schema转换成建表或更新表语句。

迁移分为两种情况:

原型设计

对应prisma db push命令,适用于开发阶段,可能造成数据丢失。

在飞布数据建模功能模块中的”迁移“操作,底层调用的是该命令,因此不建议生产环境中使用。

数据库迁移

支持数据库

:结合聚合函数,根据一个或多个列对结果集进行分组。

了解更多, 前往 查看。

了解更多,前往 查看。

对应 ,适用于生产阶段。其原理如下图:

对该命令的集成,暂未实现,可先用进行支持。

理论上飞布支持prisma兼容的所有数据库,所支持的数据源的完整列表可以在查看,当前正在按照优先级持续兼容中。

如果你想了解支持进度,可。

groupBy
Prisma文档
Prisma 文档
prisma migrate dev
Prisma官方的命令
这里
MySQL
SQLite
PostgreSQL
MongoDB
SQL Server
CockroachDB
联系我们
prisma引擎
Prisma Engine
Ts Prisma
工作原理
查询引擎Ts调用原理图
内省引擎Ts调用原理图